// Example code from paper 11: // _Computing the primitive permutation groups of degree less than 1000_ // by Colva M. Roney-Dougal and William R. Unger // print "Examples from: Computing the primitive permutation groups of degree less than 1000"; load "Paper11_funcs"; ei := GetEchoInput(); SetEchoInput(true); // Section 4: Maximal irreducibla subgroups of GL(4, 5) init_seq := [ GL(4, 5), sub< GL(4, 5) | SL(4, 5), GL(4, 5) ! DiagonalMatrix([ -1, 1, 1, 1 ]) >, SL(4, 5), WreathProduct(GL(1, 5), Sym(4)), WreathProduct(GL(2, 5), Sym(2)), TensorWreathProduct(GL(2, 5), Sym(2)), Normaliser(GL(4, 5), WriteOverSmallerField(GL(2, 25), GF(5))) ]; gl := GL(4, 5); V := RSpace(gl); phi, glp := OrbitAction(gl, V.1); S := Sylow(glp, 2); Z := Centre(S); assert exists(x){ x : x in Generators(Z) | Order(x) eq 4 }; Q, onto := quo< S | x^2 >; sQ := Subgroups(Q : OrderEqual := 32, IsElementaryAbelian := true); T := sQ[1]`subgroup @@ onto; Append(~init_seq, Normaliser(glp, T) @@ phi); init_seq cat:= [ Normaliser(GL(4, 5), GOMinus(4, 5)), Normaliser(GL(4, 5), Sp(4, 5)) ]; // Section 5: The main algorithm done_mat := init_seq[1..3]; wait_perm := [ H @ phi : H in init_seq ]; i := #done_mat; while i lt #wait_perm do i +:= 1; Hp := wait_perm[i]; Append(~done_mat, Hp @@ phi); "Expanding nr", i, "Order", #Hp, "Found", #wait_perm; max_perm := [ x`subgroup : x in MaximalSubgroups(Hp) | IsIrreducible(x`subgroup @@ phi) ]; for j in [1..#max_perm] do if exists{ H : H in wait_perm | conj and max_perm[j]^x eq H where conj, x is IsGLConjugate(max_perm[j], H, phi) } then continue j; end if; Append(~wait_perm, max_perm[j]); end for; end while; "Found", #done_mat, "irreds"; done_mat : Magma; SetEchoInput(ei);