<html><head><title>[format] 2 Formations in GAP</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href = "chapters.htm">Up</a>] [<a href ="C001S000.htm">Previous</a>] [<a href ="C003S000.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <h1>2 Formations in GAP</h1><p> <p> A <strong>formation</strong> is a class of groups closed under taking epimorphic images and subdirect products. Closure under subdirect products is equivalent to the property that each finite group <var>G</var> has a unique smallest normal subgroup <var>G<sup><font face="helvetica,arial">F</font></sup></var> with factor group <var>G / G<sup><font face="helvetica,arial">F</font></sup></var> in <var><font face="helvetica,arial">F</font></var>. The subgroup <var>G<sup><font face="helvetica,arial">F</font></sup></var> is called the <strong><var><font face="helvetica,arial">F</font></var>-residual</strong> subgroup of <var>G</var>. Thus, for example, the derived subgroup of <var>G</var> is its residual for the formation of abelian groups, and the residual for the formation of nilpotent groups is the last term of the descending central series. <p> In FORMAT a formation is described by a function that computes <var>G^<font face="helvetica,arial">F</font></var> for each (finite solvable) group <var>G</var>, and from that perspective <var><font face="helvetica,arial">F</font></var> consists of the groups <var>G</var> for which <var>G^<font face="helvetica,arial">F</font></var> is trivial. To define a formation that is not one of the standard examples provided (see below), one must give <font face="Gill Sans,Helvetica,Arial">GAP</font> an identifier for the formation and also some method for computing residual subgroups. <p> Some of the most interesting formations can also be described by ``local definition.'' For each prime <var>p</var> let <var><font face="helvetica,arial">F</font>(p)</var> be a formation or the empty class, and let <var><font face="helvetica,arial">F</font></var> be the class of all finite solvable groups <var>G</var> such that for each prime <var>p</var> and each <var>p</var>-chief factor <var>H/K</var> of <var>G</var> the group of automorphisms that <var>G</var> induces on <var>H/K</var> by conjugation belongs to <var><font face="helvetica,arial">F</font>(p)</var>. Then <var><font face="helvetica,arial">F</font></var> is a formation, with <strong>local definition</strong> <var>{ <font face="helvetica,arial">F</font>(p) midp </var> is prime <var> }</var>. The set <var>{ p midp</var> is prime and <var><font face="helvetica,arial">F</font>(p) neqemptyset}</var> is called the <strong>support</strong> of <var><font face="helvetica,arial">F</font></var>. A <var>p</var>-chief factor is <strong><var><font face="helvetica,arial">F</font></var>-central</strong> in case <var>G</var> induces an <var><font face="helvetica,arial">F</font>(p)</var>-group on it or, equivalently, in case <var>G<sup><font face="helvetica,arial">F</font>(p)</sup></var> centralizes it. It is possible to define a formation in FORMAT by giving such a local definition. Indeed one can define a kind of generalized formation by giving what is called a normal subgroup function or <strong>screen</strong>, which specifies arbitrary normal subgroups, not necessarily of form <var>G<sup><font face="helvetica,arial">F</font>(p)</sup></var>, to test ``centrality.'' Section <a href="C007S000.htm">Other Applications</a> describes one such usage of general screens. Most applications of formation theory to solvable groups require local definition, as do the <font face="Gill Sans,Helvetica,Arial">GAP</font> functions for computing <var><font face="helvetica,arial">F</font></var>-normalizers and <var><font face="helvetica,arial">F</font></var>-covering subgroups. <p> <a name = ""></a> <li><code>Formation( </code><var>rec</var><code> ) O</code> <a name = ""></a> <li><code>Formation( </code><var>str</var><code> [, </code><var>primes</var><code> ] ) O</code> <p> The definition of a formation in FORMAT begins with the creation of a record <var>rec</var>, which must contain a <var>name</var> component and at least one of the components <var>fResidual</var> or <var>fScreen</var>. The component <var>name</var> is a string, <var>fResidual</var> is a function that computes a normal subgroup of each group, and <var>fScreen</var> is a function of two variables, a group and a prime, that returns a normal subgroup of the input group. <p> In the second form the function <code>Formation</code> can be used to obtain a formation from the supplied library of formations. The formations provided are: <p> <p> <dl compact> <dt><code>Formation( "Nilpotent" )</code> <dd> The formation of nilpotent groups, <p> <dt><code>Formation( "Supersolvable" )</code> <dd> The formation of supersolvable groups, <p> <dt><code>Formation( "Abelian" )</code> <dd> The formation of abelian groups, <p> <dt><code>Formation( "ElementaryAbelianProduct" )</code> <dd> The formation of direct products of elementary abelian groups, <p> <dt><code>Formation( "PNilpotent", prime )</code> <dd> The formation of <var>p</var>-nilpotent groups for <var>p =</var> <code>prime</code>, <p> <dt><code>Formation( "PiGroups", primes )</code> <dd> The formation of <var>pi</var>-groups for <var>pi=</var> the set <code>primes</code>, <p> <dt><code>Formation( "PLengthOne", prime )</code> <dd> The formation of groups of <var>p</var>-length 1 for <var>p =</var> <code>prime</code>. </dl> <p> <a name = ""></a> <li><code>IsFormation( </code><var>F</var><code> ) C</code> <a name = ""></a> <li><code>NameOfFormation( </code><var>F</var><code> ) A</code> <a name = ""></a> <li><code>ResidualFunctionOfFormation( </code><var>F</var><code> ) A</code> <p> <code>IsFormation</code> returns <code>true</code> if and only if <var>F</var> is a GAP formation. <code>NameOfFormation</code> returns the name of a formation and <code>ResidualFunctionOfFormation</code> returns the residual function of a formation. <p> <a name = ""></a> <li><code>ScreenOfFormation( </code><var>F</var><code> ) A</code> <p> If <var>F</var> is locally defined by some screen <code>{</code><var><font face="helvetica,arial">F</font></var><code>(p) | p</code> is prime <code>}</code>, then <code>HasScreenOfFormation( </code><var>F</var><code> )</code> is <code>true</code>, <code>ScreenOfFormation( </code><var>F</var><code> )</code> is a function of two variables, <var>group</var> and <var>prime</var>, and the command <code>ScreenOfFormation( </code><var>F</var><code> )( </code><var>G</var><code>, </code><var>p</var><code> )</code> returns <var>G<sup>F(p)</sup></var> if <var>p</var> is in the support of <var>F</var> and gives the empty list otherwise. <p> <a name = ""></a> <li><code>SupportOfFormation( </code><var>F</var><code> ) A</code> <p> The attribute <code>SupportOfFormation</code> is optional. It may be bound by <code>SetSupportOfFormation</code>. If <code>SupportOfFormation</code> is not bound, then the support of the formation is taken to be the set of all primes. In case the support of <var>F</var> is a finite set of primes, then <code>SupportOfFormation( </code><var>F</var><code> )</code> is a list of those primes, and <code>HasSupportOfFormation( </code><var>F</var><code> )</code> returns true. In case the support of <var>F</var> is an infinite set but not the set of all primes, then the user will need to make sure, perhaps with <code>ChangedSupport</code> or <code>SetSupportOfFormation</code>, that all primes dividing the orders of relevant groups are considered. <p> <a name = ""></a> <li><code>ChangedSupport( </code><var>F</var><code>, </code><var>primes</var><code> ) O</code> <p> This function may be used to change the support of a formation. Let <var>F</var> be a formation and <var>primes</var> a list of primes. Then <code>ChangedSupport</code> returns a formation with a new name whose support is the intersection of the support of <var>F</var> and <var>primes</var>. <p> <a name = ""></a> <li><code>IsIntegrated( </code><var>F</var><code> ) P</code> <p> The local definition is called <strong>integrated</strong> in case <var><font face="helvetica,arial">F</font>(p) subseteq <font face="helvetica,arial">F</font></var> for each prime <var>p</var>. The property <code>IsIntegrated</code> is also optional. It makes sense only if <code>HasScreenOfFormation( </code><var>F</var><code> )</code> is <code>true</code>. Notice that some of the functions described below will require that <code>HasScreenOfFormation( </code><var>F</var><code> )</code>, <code>HasIsIntegrated( </code><var>F</var><code> )</code> and <code>IsIntegrated( </code><var>F</var><code> )</code> are <code>true</code>. If unbound, this property can be bound with <code>SetIsIntegrated</code>, but it is up to the user to determine whether such a setting is appropriate. Section <a href="C006S000.htm">Formation Examples</a> contains an example of such usage. <p> <a name = ""></a> <li><code>Integrated( </code><var>F</var><code> ) O</code> <p> A local definition of a formation may always be replaced by an integrated one without changing the formation itself, though the meaning of <var><font face="helvetica,arial">F</font></var>-central may change. Let <var>F</var> be a locally defined formation with name <code></code><var>name</var><code></code>. If <var>F</var> is already integrated, then <code>Integrated( </code><var>F</var><code> )</code> yields <var>F</var> itself. Otherwise, it yields a formation <code></code><var>name</var><code>Int</code> that is abstractly the same as <var>F</var> but has integrated local definition. <p> <a name = ""></a> <li><code></code><var>F1</var><code> = </code><var>F2</var><code></code> <a name = ""></a> <li><code></code><var>F1</var><code> < </code><var>F2</var><code></code> <p> Two formations <var>F1</var> and <var>F2</var> are considered to be equal in case they have the same name. The natural ordering on strings gives an ordering on formations. This ordering is useful for organizing key-dependent lists but has no mathematical significance. <p> <a name = ""></a> <li><code>Intersection( </code><var>F1</var><code>, </code><var>F2</var><code> ) O</code> <p> The intersection <var>F := F1 capF2</var> of two formations <var>F1</var> and <var>F2</var> is again a formation. <code>Intersection</code> produces the new formation <code>(</code><var>name1</var><code>And</code><var>name2</var><code>)</code>, which has attribute <code>ResidualFunctionOfFormation</code> if either <var>F1</var> or <var>F2</var> does, has <code>FScreen</code> whenever both formations have it, and is integrated if both are. <p> <a name = ""></a> <li><code>ProductOfFormations( </code><var>F1</var><code>, </code><var>F2</var><code> ) O</code> <p> The product of two formations <var>F1</var> and <var>F2</var> is the formation <var>F</var> such that a finite group <var>G</var> is a member of <var>F</var> if and only if <var>G<sup>F2</sup></var> is in <var>F1</var>. (Notice that the product of <var>F1</var> by <var>F2</var> is not necessarily equal to the product of <var>F2</var> by <var>F1</var>, and unless <var>F1</var> is normal subgroup-closed the product need not contain all extensions of a group in <var>F1</var> by a group in <var>F2</var>.) The function <code>ProductOfFormations( </code><var>F1</var><code>, </code><var>F2</var><code> )</code> yields the product <code>(</code><var>name1</var><code>By</code><var>name2</var><code>)</code> of the two formations. The product has the attribute <code>ResidualFunctionOfFormation</code> and has the attribute <code>ScreenOfFormation</code> whenever both <var>F1</var> and <var>F2</var> have this entry or whenever both <code>HasScreenOfFormation( </code><var>F2</var><code> )</code> and <code>not HasSupportOfFormation( </code><var>F1</var><code> )</code> are <code>true</code>. In these cases the property <code>IsIntegrated</code> will be inherited if possible. <p> [<a href = "chapters.htm">Up</a>] [<a href ="C001S000.htm">Previous</a>] [<a href ="C003S000.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <P> <address>format manual<br>February 2003 </address></body></html>