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.
IsFinite(G) : GrpMat -> Bool, RngIntElt
Given a matrix group G, return whether G is finite together with the order of G if G is finite. The function rigorously proves its result (i.e., the result is not probable).
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. If G has infinite order, an error ensues.
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. If G has infinite order, an error ensues.
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.
> F3 := FiniteField(3); > P<x> := PolynomialRing(F3); > F9<w> := ext< F3 | x^2+x+2 >; > y := w^6; > z := w^2; > J2A2 := MatrixGroup< 6, F9 | > [y,1-y,z,0,0,0, 1-y,z,-1,0,0,0, z,-1,1+y,0,0,0, > 0,0,0,z,1+y,y, 0,0,0,1+y,y,-1, 0,0,0,y,-1,1-y], > [1+y,z,y,0,0,0, z,1+y,z,0,0,0, y,z,1+y,0,0,0, > z,0,0,1-y,y,z, 0,z,0,y,1-y,y, 0,0,z,z,y,1-y], > [0,0,0,y,0,0, 0,0,0,0,y,0, 0,0,0,0,0,y, > y,0,0,0,0,0, 0,y,0,0,0,0, 0,0,y,0,0,0] >; > J2A2; MatrixGroup(6, GF(3, 2)) Generators: [w^6 w^3 w^2 0 0 0] [w^3 w^2 2 0 0 0] [w^2 2 w 0 0 0] [ 0 0 0 w^2 w w^6] [ 0 0 0 w w^6 2] [ 0 0 0 w^6 2 w^3]
[ w w^2 w^6 0 0 0] [w^2 w w^2 0 0 0] [w^6 w^2 w 0 0 0] [w^2 0 0 w^3 w^6 w^2] [ 0 w^2 0 w^6 w^3 w^6] [ 0 0 w^2 w^2 w^6 w^3]
[ 0 0 0 w^6 0 0] [ 0 0 0 0 w^6 0] [ 0 0 0 0 0 w^6] [w^6 0 0 0 0 0] [ 0 w^6 0 0 0 0] [ 0 0 w^6 0 0 0] > Order(J2A2), FactoredOrder(J2A2); 1209600 [ <2, 8>, <3, 3>, <5, 2>, <7, 1> ] > H := sub< J2A2 | J2A2.1, J2A2.2 >; > Order(H), Index(J2A2, H); 6048 200 > K := sub< J2A2 | J2A2.2, J2A2.3 >; > FactoredOrder(K), FactoredIndex(J2A2, K); [ <2, 2>, <7, 1> ] [ <2, 6>, <3, 3>, <5, 2> ]
Given a matrix g and a matrix group G, return true if g is an element of G, false otherwise.
Given a matrix g and a matrix group G, return true if g is not an element of G, false otherwise.
Given a matrix group G and a set S of matrices belonging to a group H, where G and H belong to the same generic group, return true if S is a subset of G, false otherwise.
Given matrix groups G and H belonging to the same generic group, return true if H is a subgroup of G, false otherwise.
Given a matrix group G and a set S of matrices belonging to a group H, where G and H belong to the same generic group, return true if S is not a subset of G, false otherwise.
Given matrix groups G and H belonging to the same generic group, return true if H is not a subgroup of G, false otherwise.
Given matrix groups G and H belonging to the same generic group, return true if G and H are the same group, false otherwise.
Given matrix 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 matrix
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.
NumberingMap(G) : GrpMat -> Map
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 n 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). The Scramble parameter 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).
> G := GeneralLinearGroup(20, GF(16)); > RP := RandomProcess(G); > [ FactoredOrder(Random(RP)) : i in [1..20] ]; [ [ <3, 1>, <5, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <11, 1>, <13, 1>, <17, 1>, <31, 1>, <41, 1>, <61681, 1> ], [ <3, 1>, <5, 1>, <17, 1>, <23, 1>, <89, 1>, <257, 1>, <397, 1>, <683, 1>, <2113, 1> ], [ <3, 1>, <5, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <11, 1>, <13, 1>, <17, 1>, <31, 1>, <41, 1>, <61681, 1> ], [ <3, 1>, <31, 1>, <8191, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <11, 1>, <13, 1>, <17, 1>, <31, 1>, <41, 1>, <61681, 1> ], [ <3, 3>, <5, 1>, <7, 1>, <13, 1>, <17, 1>, <19, 1>, <29, 1>, <37, 1>, <43, 1>, <73, 1>, <109, 1>, <113, 1>, <127, 1>, <257, 1> ], [ <5, 1> ], [ <3, 1>, <5, 1> ], [ <3, 1>, <5, 2>, <11, 1>, <17, 1>, <31, 1>, <41, 1>, <53, 1>, <157, 1>, <1613, 1>, <2731, 1>, <8191, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <13, 1>, <17, 1>, <97, 1>, <241, 1>, <257, 1>, <673, 1> ], [ <3, 1>, <5, 1>, <17, 1>, <29, 1>, <43, 1>, <113, 1>, <127, 1>, <257, 1>, <65537, 1> ], [ <3, 1>, <5, 2>, <11, 1>, <29, 1>, <31, 1>, <41, 1>, <43, 1>, <113, 1>, <127, 1> ], [ <3, 1>, <5, 2>, <11, 1>, <17, 1>, <31, 1>, <41, 1>, <53, 1>, <157, 1>, <1613, 1>, <2731, 1>, <8191, 1> ], [ <3, 2>, <5, 2>, <11, 1>, <13, 1>, <17, 1>, <31, 1>, <41, 1>, <61, 1>, <151, 1>, <257, 1>, <331, 1>, <1321, 1> ], [ <3, 1>, <5, 1>, <11, 1>, <31, 1>, <41, 1>, <257, 1>, <61681, 1>, <4278255361, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <11, 1>, <13, 1>, <17, 1>, <31, 1>, <41, 1>, <61681, 1> ], [ <3, 1>, <5, 1>, <17, 1>, <23, 1>, <89, 1>, <257, 1>, <397, 1>, <683, 1>, <2113, 1> ], [ <3, 2>, <5, 1>, <7, 1>, <11, 1>, <13, 1>, <23, 1>, <31, 1>, <41, 1>, <89, 1>, <397, 1>, <683, 1>, <2113, 1> ] ]