// p5g3mo.m print "\nConstruct a 3-generator anti-Hughes 5-group of class 9 in", "\nwhich the normal closures of two generators have class 4 while", "\nthe normal closure of the other generator, c, is abelian.", "\nThen repeatedly factor out complements to c^5 in the centre", "\nof the group, to obtain smaller counterexamples"; F := FreeGroup(3); p := 5; P := pQuotientProcess( F, p, 2 : Exponent := p ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); NextClass( ~P : Exponent := p, MaxOccurrence := [4,4,1] ); printf "\nThe class 8 quotient of the group has order %o^%o\n", p, FactoredOrder(P)[1][2]; // Note: this implementation of the p-quotient algorithm uses // the lower exponent-\$p\$-central series so we must allow // 2 (not 1) occurrences of c in the covering group // to allow the order of c to become 25 in the cover NextClass( ~P : Exponent := 0, MaxOccurrence := [4,4,2] ); G := ExtractGroup(P); printf "\nThe p-covering group G has order %o^%o and class %o", p, FactoredOrder(G)[1][2], pClass(G); print "\nG is generated by a, b and c; and c has order", Order(c), "\n[b,a] has order", Order( (b,a) ), "; [c,a] has order", Order( (c,a) ), "; [c,b] has order", Order( (c,b) ), "\ngamma_2(G) is the normal closure of < [b,a], [c,a], [c,b] >,", "\nand gamma_2(G) has class at most 4, so gamma_2(G) has exponent 5"; print "Also factor out the derived group of the normal closure of c", "\n(This became non-trivial in the p-cover computation)"; C := ncl< G | c >; C1 := DerivedGroup(C); G := quo< G | C1 >; printf "The group now has order %o^%o", p, FactoredOrder(G)[1][2]; print "\nNow compute suitable 5th powers of elements outside G'"; load twB35c5mo441; // should be already computed by gettestwq.m S := [ x^p : x in testwords ]; H := quo< G | S >; printf "The quotient group, H, has order %o^%o", p, FactoredOrder(H)[1][2]; print "\nH is generated by a, b and c; and c^5 =", c^p, "\nH is anti-Hughes; the normal closures of a and b both have class 4", "\nwhile the normal closure of c is abelian", "\nand this implies that gamma_3(G) has class 3", "\nso every element cg, g in gamma_3, has order 25", "\nWe also have:", "c[b,a] has order", Order(c*(b,a)), "; c[c,a] has order", Order(c*(c,a)), "; c[c,b] has order", Order(c*(c,b)), "\nSo the Hughes subgroup is G' and c^5 generates gamma_9(H)"; CurrentQ := H; //Repeatedly factor out complements for c^5 in the centre Z := Centre(CurrentQ); while Order(Z) ne p do rank := FactoredOrder(Z)[1][2]; printf "Z, its centre, has order %o^%o", p, rank; print "\nNow build a complement for c^5 in Z\n"; ZGens := [ CurrentQ!Z.i : i in [1..rank] ]; _, index := Max( Eltseq( c^p ) ); ComplGens := [ ZGens[i] * (CurrentQ.index)^-Eltseq(ZGens[i])[index] : i in [1..rank] ]; NextQ := quo< CurrentQ | ComplGens >; printf "Factor it out to get an anti-Hughes group of order %o^%o", p, FactoredOrder(NextQ)[1][2]; print "\ngenerated by a, b and c; and c^5 =", c^p; CurrentQ := NextQ; Z := Centre(CurrentQ); end while; printf "The centre is generated by %o and has order %o^%o", CurrentQ!(Z.1), p, FactoredOrder(Z)[1][2]; printf "\nSo this method reduces to an anti-Hughes group with order %o^%o", p, FactoredOrder(CurrentQ)[1][2]; print "\nwhich is as far as we can reduce the group (by this method!)";