/* This file should be loaded into Magma to test the various functions in the homotopy package. The file may take about 10 minutes to run. It will conclude by stating whether any errors were detected. */ print "We shall enter a presentation of the Burnside group G=B(3,3) ..."; F:=FreeGroup(3); a:=F.1; b:=F.2; c:=F.3; x1:=(c,a); x1:=(a,b); x2:=(a,c); x3:=(b,c); x4:=(x1,c); rels:=[ a^3, b^3, c^3, x1^3, x2^3, x3^3, x4^3, (b,a)*x1^-2, (c,a)*x2^-2, (x1,a), (x2,a), (x3,a)*x4^-1, (x4,a), (c,b)*x3^-2, (x1,b), (x2,b)*x4^-2, (x3,b), (x4,b), (x1,c)*x4^-1, (x2,c), (x3,c), (x4,c), (x2,x1), (x3,x1), (x4,x1), (x3,x2), (x4,x2), (x4,x3) ]; G:=quo; print "The generators of G are", Generators(G) ; print "WE SHALL SET p=3."; p:=3; print "We shall enumerate the group G ..."; eG,GhomeG,eGhomG := EnumeratedGroup(G,p); print "The order of the group G=B(3,3) was computed to be", #eG, ".", "This is", (#eG eq 2187), "."; B:=(#eG eq 2187); print "We shall construct two normal subgroups M, N in G ..."; eM:=NormalClosure(eG,sub); eN:=NormalClosure(eG,sub); M,MhomeM,eMhomM:=PresentedGroup(eM); N,NhomeN,eNhomN:=PresentedGroup(eN); MhomeG:=homeG|x:->MhomeM(x)>; NhomeG:=homeG|x:->NhomeN(x)>; print "The orders of M and N were computed to be",#eM, ",", #eN,". This is", (#eM eq 729) and (#eN eq 729), "."; B:=(#eM eq 729) and (#eN eq 729) and B; print "We shall construct a conjugation action of M on N, and a nice generating set for N ..."; MactN, NiceGeneratorsN:=Action(NhomeG,MhomeG,p); print "NiceGeneratorsN was found to have", #NiceGeneratorsN, "elements.", "This is", (#NiceGeneratorsN eq 7), "."; B:=(#NiceGeneratorsN eq 7) and B; print "We shall construct a conjugation action of N on M, and a nice generating set for M ..."; NactM, NiceGeneratorsM:=Action(MhomeG,NhomeG,p); print "NiceGeneratorsM was found to have", #NiceGeneratorsM, "elements.", "This is", (#NiceGeneratorsM eq 7), "."; B:=(#NiceGeneratorsM eq 7) and B; print "We shall use these actions to construct the tensor product of N and M ..."; T,delta:=Tensor(M,N,MactN,NactM,NiceGeneratorsM,NiceGeneratorsN,p); print "The order of the tensor product was computed to be", #T, ". This is", (#T eq 14348907), "."; B:=(#T eq 14348907) and B; delete T; print "We shall construct the tensor square of G=B(3,3) ..."; T:=TensorSquare(G,p); print "The order of the tensor square was computed to be", #T, ". This is", (#T eq 3^20), "."; B:=(#T eq 3^20) and B; delete T; print "We shall construct the relative Schur multiplier M(G,Z) where Z is the centre of G ..."; Z:=eGhomG(Center(eG)) ; RM:=RelativeSchurMultiplier(G,Z,p); print "The order of the relative Schur multiplier was computed to be", #RM, ". This is", (#RM eq 27), "."; B:=(#RM eq 27) and B; delete RM; print "We shall determine whether or not the group G=B(3,3) is capable ..."; Boole:=IsCapable(G,p); print Boole; B:=Boole and B; print "We shall determine whether or not the group G=B(3,3) is terminal ..."; Boole:= IsTerminal(G,p); print Boole; B:=not(Boole) and B; delete eG, G, eGhomG, GhomeG; print "We shall now enter a presentation for the dihedral group Q of order 16 ..."; F:=FreeGroup(2); Q:=quo; p:=2; print "WE SHALL SET p=2."; p:=2; print "We shall construct the tensor cube of Q ..."; T:=TensorCube(Q,p); print "The order of the tensor cube was computed to be", #T, ". This is", (#T eq 2048), "."; B:= (#T eq 2048) and B; delete T; print "We shall construct the second Baer invariant of Q ..."; M:=BaerInvariant(Q,2,4,p); print "The order of the Baer invariant was computed to be", #M, ". This is", (#M eq 8), "."; B:=(#M eq 8) and B; delete M; print "We shall determine the dimension of the third integral homology (mod 2) of Q ..."; d:=ThirdHomologyModP(Q,2); print "The dimesnion was computed to be", d, ". This is", (d eq 2), "."; B:=(d eq 2) and B; print "WE SHALL SET p=1."; p:=1; print "We shall compute the group Jtilde(Q) ..."; JT:=Jtilde(Q,p); print "The order of Jtilde was computed to be", #JT, ". This is", (#JT eq 2), "."; B:=(#JT eq 2) and B; delete JT; print "We shall determine whether or not the group Q is terminal ..."; Boole:= IsTerminal(Q,p); print Boole; B:=not(Boole) and B; if B then print "NO ERRORS WERE DETECTED"; else print "ERRORS OCCURRED WHEN THIS TESTFILE WAS RUN"; end if;