A **formation** is a class **F** of groups closed under taking epimorphic
images and subdirect products. Closure under subdirect products is equivalent to the property that each finite group *G* has a unique
smallest normal subgroup *G*^{F} with factor group *G* / *G*^{F} in **F**.
The subgroup *G*^{F} is called the ** F-residual** subgroup of

In FORMAT a formation is described by a function that computes *G*^{F}
for each (finite solvable) group *G*, and from that perspective **F**
consists of the groups *G* for which *G*^{F} is trivial. To define a
formation that is not one of the standard examples provided (see below),
one must give GAP an identifier for the formation and also some method
for computing residual subgroups.

Some of the most interesting formations can also be described by ``local definition.'' For each prime *p*
let **F**(*p*) be a formation or the empty class, and let **F** be the class
of all finite solvable groups *G* such that for each prime *p* and each *p*-chief factor *H*/*K* of *G* the group of automorphisms that *G*
induces on *H*/*K* by conjugation belongs to **F**(*p*). Then **F** is a
formation, with **local definition** the set of **F**(*p*)s.
The set of primes *p* for which **F**(*p*) is not empty is called the
**support** of **F**. A *p*-chief factor is ** F-central** in case

`Formation( `

` ) O`

`Formation( `

` [, `

` ] ) O`

The definition of a formation in FORMAT begins with the creation of a
record `rec`

, which must contain a `name`

component and at least one of
the components `fResidual`

or `fScreen`

. The component `name`

is a string,
`fResidual`

is a function that computes a normal subgroup of each group,
and `fScreen`

is a function of two variables, a group and a prime, that
returns a normal subgroup of the input group.

In the second form the function `Formation`

can be used to obtain a
formation from the supplied library of formations. The formations
provided are:

`Formation( "Nilpotent" )`

- The formation of nilpotent groups,
`Formation( "Supersolvable" )`

- The formation of supersolvable groups,
`Formation( "Abelian" )`

- The formation of abelian groups,
`Formation( "ElementaryAbelianProduct" )`

- The formation of direct products of elementary abelian groups,
`Formation( "PNilpotent", prime )`

- The formation of
*p*-nilpotent groups for*p*=`prime`

, `Formation( "PiGroups", primes )`

- The formation of π-groups for
π = the set
`primes`

, `Formation( "PLengthOne", prime )`

- The formation of groups of
*p*-length 1 for*p*=`prime`

.

`IsFormation( `

` ) C`

`NameOfFormation( `

` ) A`

`ResidualFunctionOfFormation( `

` ) A`

`IsFormation`

returns `true`

if and only if `F` is a GAP formation.
`NameOfFormation`

returns the name of a formation and `ResidualFunctionOfFormation`

returns the residual function of a formation.

`ScreenOfFormation( `

` ) A`

If `F` is locally defined by some screen of **F**(*p*)s,
then `HasScreenOfFormation( `

`F`` )`

is `true`

, `ScreenOfFormation( `

`F`` )`

is a function of two variables, `group` and `prime`, and
`ScreenOfFormation( `

`F`` )( `

`G``, `

`p`` )`

returns *G*^{F(p)} if `p` is
in the support of `F` and gives the empty list otherwise.

`SupportOfFormation( `

` ) A`

The attribute `SupportOfFormation`

is optional. It may be bound by
`SetSupportOfFormation`

. If `SupportOfFormation`

is not bound, then the support
of the formation is taken to be the set of all primes. In case the support of
`F` is a finite set of primes, then `SupportOfFormation( `

`F`` )`

is a list of
those primes, and `HasSupportOfFormation( `

`F`` )`

returns true. In case the
support of `F` is an infinite set but not the set of all primes, then the user
will need to make sure, perhaps with `ChangedSupport`

or
`SetSupportOfFormation`

, that all primes dividing the orders of relevant groups
are considered.

`ChangedSupport( `

`, `

` ) O`

This function may be used to change the support of a formation. Let `F`
be a formation and `primes` a list of primes. Then `ChangedSupport`

returns a formation with a new name whose support is the intersection
of the support of `F` and `primes`.

`IsIntegrated( `

` ) P`

The local definition is called **integrated** in case **F**(*p*) is contained in
**F** for each prime *p*. The optional property `IsIntegrated`

makes sense only if `HasScreenOfFormation( `

`F`` )`

is `true`

. Notice that
some of the functions described below will require that all of the attributes ```
HasScreenOfFormation(
```

`F`` )`

, `HasIsIntegrated( `

`F`` )`

and `IsIntegrated( `

`F`` )`

are `true`

. If
unbound, this property can be bound with `SetIsIntegrated`

, but it is up to the
user to determine whether such a setting is appropriate.
Section Formation Examples contains an example of such usage.

`Integrated( `

` ) O`

A local definition of a formation may always be replaced by an
integrated one without changing the formation itself, though the meaning
of **F**-central may change. Let `F` be a locally defined GAP formation with
name `name``. If `

`F` is already integrated, then `Integrated( `

`F`` )`

yields `F` itself. Otherwise, it yields a formation `name``Int`

that is
abstractly the same as `F` but has integrated local definition.

` = `

` < `

Two GAP formations `F1` and `F2` 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.

`Intersection( `

`, `

` ) O`

The intersection of two GAP formations `F1` and
`F2` is again a formation. `Intersection`

produces the new formation
`(`

`name1``And`

`name2``)`

, which has attribute `ResidualFunctionOfFormation`

if
either `F1` or `F2` does, has `FScreen`

whenever both formations have `FScreen`

, and is
integrated if both are.

`ProductOfFormations( `

`, `

` ) O`

The product of two formations `F1` and `F2` is the formation `F`
such that a finite group *G* is a member of `F` if and only if
*G*^{F2} is in `F1`. (Notice that the product of `F1` by `F2` is
not necessarily equal to the product of `F2` by `F1`, and unless `F1` is normal subgroup-closed the product need not contain all extensions of a group in `F1` by a group in `F2`.) The function
`ProductOfFormations( `

`F1``, `

`F2`` )`

yields the product `(`

`name1``By`

`name2``)`

of the two
formations. The product has the attribute `ResidualFunctionOfFormation`

and has
the attribute `ScreenOfFormation`

whenever both `F1` and `F2` have this entry
or whenever both `HasScreenOfFormation( `

`F2`` )`

and ```
not HasSupportOfFormation(
```

`F1`` )`

are `true`

. In these cases the property `IsIntegrated`

will be inherited
if possible.

[Up] [Previous] [Next] [Index]

FORMAT manual

March 2018