# 26.4 Special Ag Group Records

Finite Polycyclic Groups) the following components are present in the group record of a special ag group H.

`weights`:

This is a list of weights such that the i-th entry gives the weight of the element h_i, i.e., the triple (w_1, w_2, w_3) when h_i lies in G_{w_1, w_2, w_3} but not lower down in the Leedham-Green series (see More about Special Ag Groups).

The entries `layers`, `first`, `head` and `tail` only depend on the `weights`. These entries are useful in many of the programs using the special ag system.

`layers`:

This is a list of integers. Assume that the subgroups of the Leedham-Green series are numbered beginning at G and ending at the trivial group. Then the i-th entry gives the number of the subgroup in the Leedham-Green series to which h_i corresponds as described in `weights`.

`first`:

This is a list of integers, and `first`[j] = i if h_i is the first element of the j-th layer. Additionally the last entry of the list `first` is always n + 1.

`head`:

This is a list of integers, and `head`[j] = i if h_i is the first element of the j-th local head. Additionally the last More about Special Ag Groups).

`tail`:

This is a list of integers, and `tail`[j] = i if h_{i-1} is the last element of the j-th local head. In other words h_i is either the first element of the tail of the j-th layer in the lower nilpotent series, or in case this tail is trivial, then h_i is the first element of the j+1-st layer in the lower nilpotent series. If the tail of the smallest nontrivial subgroup of the lower nilpotent series is trivial, then the last entry of the list `tail` is n+1 (see More about Special Ag Groups).

`bijection`:

This is the isomorphism from H to G given through the images of the generators of H.

The next four entries indicate if any flag and which one is used Construction of Special Ag Groups and Restricted Special Ag Groups).

`isHallSystem`:

This entry is a Boolean. It is true if public Hall subgroups have been calculated, and false otherwise.

`isHeadSystem`:

This entry is a Boolean. It is true if public local head complements have been calculated, and false otherwise.

`isSagGroup`:

This entry is a Boolean. It is true if public Hall subgroups and public local head complements have been calculated, and false otherwise.

Note that in GAP an ag group is called a special ag group if and only if the record entry `isSagGroup` is true.

```    # construct a wreath product of a4 with s3 where s3 operates on 3 points.
gap> s3 := SymmetricGroup( AgWords, 3 );;
gap> a4 := AlternatingGroup( AgWords, 4 );;
gap> a4wrs3 := WreathProduct(a4, s3, s3.bijection);
Group( h1, h2, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3, n3_1, n3_2, n3_3 )

# now calculate the special ag group
gap> S := SpecialAgGroup( a4wrs3 );
Group( h1, n3_1, h2, n2_1, n1_1, n1_2, n1_3, n2_2, n2_3, n3_2, n3_3 )
gap> S.weights;
[ [ 1, 1, 2 ], [ 1, 1, 3 ], [ 2, 1, 3 ], [ 2, 1, 3 ], [ 2, 2, 3 ],
[ 3, 1, 2 ], [ 3, 1, 2 ], [ 3, 1, 2 ], [ 3, 1, 2 ], [ 3, 1, 2 ],
[ 3, 1, 2 ] ]
gap> S.layers;
[ 1, 2, 3, 3, 4, 5, 5, 5, 5, 5, 5 ]
gap> S.first;
[ 1, 2, 3, 5, 6, 12 ]
[ 1, 3, 6, 12 ]
gap> S.tail;
[ 3, 5, 12 ]
gap> S.bijection;
GroupHomomorphismByImages( Group( h1, n3_1, h2, n2_1, n1_1, n1_2,
n1_3, n2_2, n2_3, n3_2, n3_3 ), Group( h1, h2, n1_1, n1_2, n1_3,
n2_1, n2_2, n2_3, n3_1, n3_2, n3_3 ),
[ h1, n3_1, h2, n2_1, n1_1, n1_2, n1_3, n2_2, n2_3, n3_2, n3_3 ],
[ h1, n3_1, h2, n2_1*n3_1^2, n1_1*n2_1*n3_1, n1_2, n1_3, n2_2, n2_3,
n3_2, n3_3 ] )
gap> S.isHallSystem;
true