Unless the order is already known, each of the functions in this family will
create a base and strong generating set for the group if one does not already
exist.
Order(G) : GrpPerm -> RngIntElt
The order of the group G as an integer. If the order is not currently known, a base and strong generating set will be constructed for G.
The order of the group G returned as a factored integer. The format is the same as for FactoredIndex. If the order of G is not known, it will be computed.
The index of the subgroup H in the group G. The index is returned as an integer. If the orders of G and H are not known, they will be computed.
The index of the subgroup H in the group G. The index is returned as a factored integer. The factorization is returned in the form of a sequence Q which is defined as follows: If [ G : H ] = p_1^(e_1) ... p_n^(e_n), e_i != 0, then Q will be the integer sequence [ <p_1, e_1>, ..., <p_n, e_n> ]. If the orders of G and H are not known, they will be computed.
> G := PermutationGroup< 8 | (1, 2, 3, 4, 5, 6, 7), (2, 3)(4, 7), > (1, 8)(2, 4)(3, 7)(5, 6) >; > Order(G); 1344 > FactoredOrder(G); [ <2, 6>, <3, 1>, <7, 1> ] > H := sub< G | G.1, G.2 >; > Order(H), FactoredOrder(H); 168 [ <2, 3>, <3, 1>, <7, 1> ] > Index(G, H), FactoredIndex(G, H); 8 [ <2, 3> ] > /* We may find the order of all subgroups generated by pairs > of generators using the sequence constructor. */ > [ Order(sub< G | G.i, G.j>) : j in [i+1..3], i in [1..3] ]; [ 168, 56, 4 ]
Given a permutation g and a permutation group G, return true if g is an element of G, false otherwise.
Given a permutation g and a permutation group G, return true if g is not an element of G, false otherwise.
Given a permutation group G and a set S of permutations belonging to a group H, where G and H belong the same generic group, return true if S is a subset of G, false otherwise.
Given a permutation group G and a set S of permutations belonging to a group H, where G and H belong the same generic group, return true if S is not a subset of G, false otherwise.
Given permutation groups G and H belonging to the same generic group, return true if H is a subgroup of G, false otherwise.
Given permutation groups G and H belonging to the same generic group, return true if H is not a subgroup of G, false otherwise.
Given permutation groups G and H belonging to the same generic group, return true if G and H are the same group, false otherwise.
Given permutation groups G and H belonging to the same generic group, return true if G and H are distinct groups, false otherwise.
The creation of a base and strong generating set for a permutation
group G provides us with a very compact representation of the set of
elements of G. A particular BSGS imposes an order on the elements of
G (lexicographic ordering of base images). It thus makes sense to
talk about the `number' of a group element relative to a particular
BSGS.
G * H : GrpPerm, GrpPerm -> { GrpPermElt }
Given permutation groups G and H, where G and H both belong to the same generic group, form the set product { g * h | g in G, h in H } (as a set of group elements).
Given a group G and a subgroup H of G, return the elements of H in the form of a set of elements of G. This function is only applicable to very small groups.
A bijective mapping from the group G onto the set of integers { 1 ... |G| }. The actual mapping depends upon the base and strong generating set chosen for G.
Slots: RngIntElt Default: 10
Scramble: RngIntElt Default: 20
Create a process to generate randomly chosen elements from the finite group G. The process uses an `expansion' procedure to construct a set of elements corresponding to fairly long words in the generators of G. At all times, N elements are stored where N is the maximum of the specified value for Slots and Ngens(G) + 1. Initially, these are just the generators of G and products of pairs of generators of G. Random elements are now produced by successive calls to Random(P), where P is the process created by this function. Each such call chooses an element from the process and returns it, replacing it with the product of it and another random element (on the left or the right). Setting Scramble := m causes m such operations to be performed before the process is returned.
Short: BoolElt Default: false
A randomly chosen element for the group G. If a BSGS is known for G, then the element chosen will be genuinely random. If no BSGS is known, then the random element is chosen by multiplying out a random word in the generators. Since it is not usually practical to choose words long enough to properly sample the elements of G, the element returned will usually be biased. The boolean-valued parameter Short is used in this situation to indicate that a short word will suffice. Thus, if Random is invoked with Short assigned the value true then the element is constructed using a short word.
Given a random element process P created by the function RandomProcess(G) for the finite group G, construct a random element of G by forming a random product over the expanded generating set constructed when the process was created. For large degree groups, or groups for which a BSGS is not known, this function should be used in preference to Random(G).
An element chosen from the permutation group G.
> G := DihedralGroup(GrpPerm, 6); > f := NumberingMap(G); > [ [ f(x*y) : y in G ] : x in G ]; [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ], [ 2, 3, 4, 5, 6, 1, 12, 7, 8, 9, 10, 11 ], [ 3, 4, 5, 6, 1, 2, 11, 12, 7, 8, 9, 10 ], [ 4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9 ], [ 5, 6, 1, 2, 3, 4, 9, 10, 11, 12, 7, 8 ], [ 6, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 7 ], [ 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6 ], [ 8, 9, 10, 11, 12, 7, 6, 1, 2, 3, 4, 5 ], [ 9, 10, 11, 12, 7, 8, 5, 6, 1, 2, 3, 4 ], [ 10, 11, 12, 7, 8, 9, 4, 5, 6, 1, 2, 3 ], [ 11, 12, 7, 8, 9, 10, 3, 4, 5, 6, 1, 2 ], [ 12, 7, 8, 9, 10, 11, 2, 3, 4, 5, 6, 1 ] ]
> G := WreathProduct( Sym(4), CyclicGroup(GrpPerm, 6)); > G; Permutation group G acting on a set of cardinality 24 (1, 5, 9, 13, 17, 21)(2, 6, 10, 14, 18, 22) (3, 7, 11, 15, 19, 23) (4, 8, 12, 16, 20, 24) (1, 2, 3, 4) (1, 2) > Order(G); 1146617856 > Random(G); (1, 17, 12, 4, 18, 10, 3, 20, 9, 2, 19, 11)(5, 22, 13, 6, 21, 15) (7, 24, 16)(8, 23, 14) // We display the cycle structures of 10 random elements of G > R := [ CycleStructure(Random(G)) : i in [1..10] ]; > R; [ [ <6, 1>, <3, 6> ], [ <9, 1>, <6, 2>, <3, 1> ], [ <9, 2>, <3, 2> ], [ <12, 1>, <9, 1>, <3, 1> ], [ <18, 1>, <6, 1> ], [ <18, 1>, <6, 1> ], [ <12, 1>, <6, 2> ], [ <6, 3>, <2, 3> ], [ <6, 1>, <4, 3>, <2, 3> ], [ <6, 3>, <3, 2> ] ]