Each pc-group can have up to three pc-presentations associated with it. If the user specifies a consistent presentation in the PolycyclicGroup-constructor, then this presentation (the "user" presentation) will be used for all printing and interpretation of element input. If the specified presentation is inconsistent, a runtime error is generated.
Internally, Magma uses a "conditioned" presentation for computation. The composition series associated with this presentation is guaranteed to refine a normal series with elementary abelian factors. If G is a p-group, then the composition series is guaranteed to be a central series and the first d pc-generators are a minimal set of generators for the group. Hence, their images generate the Frattini factor group. If the user presentation satisfies these conditions, then it is used as the conditioned presentation. Otherwise, a separate presentation is computed automatically.
Several algorithms rely on a "special" presentation for the group. This presentation exhibits Hall π-subgroups and a characteristic series with elementary abelian factors. When needed, such a presentation is computed and elements are automatically translated between presentations.
The "compact" presentation is not a presentation used in computation. Rather it provides an efficient means to input and output large pc-groups. This is especially useful for stored collections of groups (libraries or databases).
Magma will compute a pc-presentation which will be used for internal computation, but the user's presentation will be used for all input and output. The recommended way to access the conditioned internal presentation is via the intrinsic ConditionedGroup.
The internally used, conditioned presentation of the pc-group G. The returned group is recorded as a subgroup of G in the relationship tables, so coercion can be used to move between presentations.
Returns true if G uses the user presentation as the internal presentation, false otherwise.
Given an element x of a pc-group G with n pc-generators and a conditioned presentation, where x is of the form a1α1 ... anαn, return aiαi for the smallest i such that αi > 0. If x is the identity of G, then the identity is returned.
Given an element x of a pc-group G with n pc-generators and a conditioned presentation, where x is of the form a1α1 ... anαn, return ai for the smallest i such that αi > 0. If x is the identity of G, then the identity is returned.
Given an element x of a pc-group G with n pc-generators and a conditioned presentation, where x is of the form a1α1 ... anαn, return αi for the smallest i such that αi > 0. If x is the identity of G, then 0 is returned.
Given an element x of a pc-group G with n pc-generators and a conditioned presentation, where x is of the form a1α1 ... anαn, return the smallest i such that αi > 0. If x is the identity of G, then 0 is returned.
The weight class of the element x. The WeightClass of an arbitrary element of a pc-group G is defined to be k if x∈G_(δk - 1) and x∉G_(δk). If x is the identity of G, then WeightClass returns n + 1.
A special presentation is one which has several properties described by C. R. Leedham-Green:
Returns a new group H which is defined by a special presentation. H is in fact a subgroup of G (equal to G) and so one can use the coercion operator (!) to translate elements between the two presentations. Furthermore, any subgroup of H is automatically a subgroup of G. For instance, if one computed the center Z of H (using some algorithm relying on the special presentation), Z would be a subgroup of G, and would be the center of G.
A sequence of triples of integers is returned, with one triple corresponding to each pc-generator. The first integer in a triple gives the number of the nilpotent section containing the generator, the second gives the number of the square-free exponent abelian section of that nilpotent section containing it, and the third gives the number of the elementary abelian p-group layer that contains the generator. The prime for the generator is not included in the triple (see PCPrimes).
The number of nilpotent factors in the nilpotent series.
The subscript of the last generator in the ith nilpotent section, where i lies between 1 and NilpotentLength(G).
The number of minor sections (Frattini factors) in the ith nilpotent section of G.
The subscript of the last generator in the jth minor section of the ith nilpotent section, where j lies between 1 and MinorLength(G,i).
The number of elementary abelian p-group layers in the jth minor section of the ith nilpotent section of G.
The subscript of the last generator in the kth elementary abelian p-group layer of the jth minor section of the ith nilpotent section, where k lies between 1 and LayerLength(G,i,j).
> T := PolycyclicGroup<a,b,c,d|a^3,b^3,c^3,d^3, > b^a=c, c^a=d, d^a=b>; > T; GrpPC : T of order 81 = 3^4 PC-Relations: T.2^T.1 = T.3, T.3^T.1 = T.4, T.4^T.1 = T.2 > S := SpecialPresentation(T); > S; GrpPC : S of order 81 = 3^4 PC-Relations: S.2^S.1 = S.2 * S.3^2 * S.4, S.3^S.1 = S.3 * S.4^2
Here we build another wreath product and construct a special presentation.
> C6 := CyclicGroup(GrpPC,6); > C2 := CyclicGroup(GrpPC,2); > G := WreathProduct(C2,C6); > G; GrpPC : G of order 384 = 2^7 * 3 PC-Relations: G.1^2 = G.2, G.2^3 = Id(G), G.3^2 = Id(G), G.4^2 = Id(G), G.5^2 = Id(G), G.6^2 = Id(G), G.7^2 = Id(G), G.8^2 = Id(G), G.3^G.1 = G.8, G.3^G.2 = G.5, G.4^G.1 = G.6, G.4^G.2 = G.3, G.5^G.1 = G.7, G.5^G.2 = G.4, G.6^G.1 = G.3, G.6^G.2 = G.8, G.7^G.1 = G.4, G.7^G.2 = G.6, G.8^G.1 = G.5, G.8^G.2 = G.7 > H := SpecialPresentation(G); > H; GrpPC : H of order 384 = 2^7 * 3 PC-Relations: H.1^2 = Id(H), H.2^2 = Id(H), H.3^3 = Id(H), H.4^2 = Id(H), H.5^2 = Id(H), H.6^2 = Id(H), H.7^2 = Id(H), H.8^2 = Id(H), H.2^H.1 = H.2 * H.4, H.5^H.3 = H.6, H.6^H.3 = H.5 * H.6, H.7^H.1 = H.6 * H.7, H.7^H.3 = H.8, H.8^H.1 = H.5 * H.6 * H.8, H.8^H.3 = H.7 * H.8We can coerce between the presentations.
> G!(H.2), H!(G.2); G.6 * G.7 * G.8 H.3Look at some specific features of the presentation.
> SpecialWeights(H); [ <1, 1, 1>, <1, 1, 1>, <1, 1, 2>, <1, 2, 1>, <2, 1, 1>, <2, 1, 1>, <2, 1, 1>, <2, 1, 1> ] > MinorLength(H,1); 2 > MinorBoundary(H,1,1); 3
When the Magma parser reads in large group presentations of the form
S4 := PolycyclicGroup< a, b, c, d | a^2 = 1, b^3 = 1, c^2 = 1, d^2 = 1, b^a = b^2, c^a = c * d, c^b = c * d, d^b = c >;a large amount of memory and time is used to build all of the expressions involved in the statement. This time is most noticeable when loading in large libraries of Magma code containing many large presentations. The following intrinsics provide a way to avoid this overhead.
Given a pc-group G, return a sequence of integers that contains the information needed to define the group's presentation.
Check: BoolElt Default: false
ExponentLimit: RngIntElt Default: 20
Return a group G in category GrpPC, whose presentation is provided by the integer sequence Q. Constructing the group from the integer sequence has very low overhead in the parser. The time taken to construct the group is less when the presentation is conditioned.The parameter Check indicates whether or not the presentation is checked for consistency. Leaving the Check parameter set to false speeds the construction of the group, but will be disastrous if the sequence Q does not represent a consistent pc-presentation.
Parameter ExponentLimit determines the amount of space that will be used by the group to speed calculations. Given ExponentLimit := e, the group will store the products ai * bj where a and b are generators and i and j are in the range 1 to e.
> S4 := PolycyclicGroup< a, b, c, d | a^2 = 1, b^3 = 1, c^2 = 1, d^2 = 1, > b^a = b^2, c^a = c * d, c^b = c * d, d^b = c >; > Q := CompactPresentation( S4 ); > Q; [ 4, -2, -3, -2, 2, 33, 218, 114, 55 ]
The library code would then be
> Make:=func< | PCGroup(\[4, 2, 3, 2, 2, 33, 218, 114, 55] : Check := false) >;Note the use of a literal sequence here --- see Chapter SEQUENCES.