// In this file, for each class, we give the corresponding maximal // arithmetic subgroup(s) "\bar\Gamma". Then for each fake projective // plane X associated with that class, we give generators of the // fundamental group Pi of X. Let n=|Pi/[Pi,Pi]| denote the order // of H_1(X,\Z). For each of the fifty Pi's, we give a subgroup Pid // of Pi, and check that it has index n in Pi, is normal in Pi, and // that Pi/Pid is abelian. This shows that Pid=[Pi,Pi]. Finally, we // find Pid/[Pid,Pid], and verify that it is finite. // The class (a=1,p=5,\emptyset) // ***************************** print "\nFor the class (a=1,p=5,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb^3, xc^-1*xb^-1*xa*xb^-1*xa*xb^-1*xc^-1, xb*xa*xc*xb*xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1*xc, xc^-1*xa^-1*xb*xc^-1*xb^-1*xa*xc^-1*xa*xb*xc*xb*xa*xc*xb*xa^-1*xb^-1*xc*xb*xa^-1, xa^-1*xc*xb^-1*xa*xb*xa*xb*xa*xc*xb*xa^-1*xc*xb*xa^-1*xb^-1*xa*xc*xb*xa^-1, xb^-1*xa^-1*xc*xa^-1*xb*xc*xb^-1*xa*xc*xb*xa^-1*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1, xc*xa^-1*xb*xc*xb^-1*xa*xc*xb*xa^-2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xc^-1*xb^-1*xa, xc^-1*xa^-1*xb*xc*xb*xa^-1*xb^-1*xa*xc^-1*xb^-1*xa*xb*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1, xc*xb*xc*xb*xa*xb^-1*xc^-1*xa^-1*xb*xa*xb^-1*xc*xa*xb^-1*xc^-1*xa*xb^-1*xc^-1*xb*xa, xb*xa*xb*xc*xb*xa*xc*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb*xc^-1*xa*xc*xb^-1*xa, xc*xb^-1*xa*xb*xa*xb*xc*xb^-1*xa*xb*xa*xb*xa^2*xb^-1*xc^-1*xb*xa*xc*xb*xa^-1, xc*xb*xa*xc^-1*xb^-1*xa*xc*xa^-1*xb*xc^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xc*xb*xa^-1*xb^-1*xc^-1*xa^-1, xb*xa*xb*xa*xc*xb^-1*xc*xa^-1*xb*xc*xb^-1*xa*xc^-1*xb^-1*xa^2*xc*xb*xa^-1*xc*xb^-1*xa, xc^-1*xb^-1*xc^-1*xa^-1*xb*xa*xb*xa*xb*xa*xc^-1*xa^-1*xb^-1*xc^-1*xa*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1, xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xc*xb*xa^-1*xb^-1*xc^-1*xa^-1*xc*xb^-1*xa*xb*xa*xb*xa^2*xb^-1*xc^-1, xc*xb*xa^-2*xb^-1*xa^-1*xb^-1*xa^-2*xb*xc*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1*xb^-1*xa^-1*xc*xb^-1*xa*xb*xa, xa^-1*xc*xb^-1*xa*xb*xa*xb*xa*xc^-2*xb*xc^-1*xa*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1*xc^-1*xa^-1*xb^-1*xc^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=1,p=5,\emptyset,D_3)"; print "**********************************"; // generators of the fundamental group: s1:=a; s2:=b*c*b^-1; s3:=b^-1*c*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,124] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s1*s2*s1^-2, s1*s2^-1*s3*s2*s3^-1*s1^-1, s1*s3^-1*s1*s3*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2^2*s1*s2^-2*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s3^-1*s2^-2, s2*s1^-1*s2*s1*s2^-2, s2*s3^-1*s1*s3*s2^-1*s1^-1, s2*s3^-1*s2*s3*s2^-2, s3^2*s1*s3^-2*s1^-1, s3*s1^-1*s2*s1*s3^-1*s2^-1, s3*s1^-1*s3*s1*s3^-2, s3*s2^-1*s1*s2*s3^-1*s1^-1, s1^-2*s2*s1^2*s2^-1, s1^-1*s3^-1*s2*s3*s1*s2^-1, s2^-2*s1*s2^2*s1^-1, s2^-1*s3^-1*s1*s3*s2*s1^-1, s3^-2*s1*s3^2*s1^-1, s1^2*s3*s1*s3^-1*s1^-3, s1^2*s2^-1*s3*s2*s3^-1*s1^-2, s1*s2*s3*s1*s3^-1*s2^-1*s1^-2, s1*s2*s3^-1*s1*s3*s2^-1*s1^-2, s1*s2*s3^-1*s2*s3*s2^-2*s1^-1, s1*s3*s2^-1*s1*s2*s3^-1*s1^-2, s1*s2^-2*s1*s2^2*s1^-2, s1*s2^-1*s3^-1*s1*s3*s2*s1^-2, s1*s2^-1*s3^-1*s2*s3*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 248 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [5,5,5,5,5,5,5,5,195] // The class (a=1,p=5,\{2\}) // ************************* print "\nFor the class (a=1,p=5,\{2\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ (xa^-1*xb)^3, (xc*xb^-1*xc)^3, (xa^-1*xb^-1*xa*xb^-1)^3, xa^-1*xc^-1*xb*xa*xb*xc^-1*xb*xc*xb^-1*xc*xb*xc^-2, xa^-1*xc^-1*xb*xa*xb*xa^-2*xb*xa^-2*xb^-1*xc*xb^-2, xb^-1*xa^-1*xc^-1*xb*xc^-1*xb*xc^-1*xa*xb^-2*xa^2*xb*xa^-1*xc, xc^2*xb^-1*xc*xa^2*xb^-1*xa^2*xb^-1*xa*xc^-1*xb*xa^2*xb^-1*xa, xc^-2*xb*xc^-1*xa*xb*xa^-1*xb^2*xa^-1*xb^-1*xa^-1*xc^-1*xb*xa^2*xb^-1*xa, xc^-1*xb*xa*xb*xa*xb^-1*xc^2*xb^-1*xc^-1*xb*xc^-1*xa*xb*xa*xb*xa^-1*xc^-1*xa^-1, xc^-1*xb*xc^-1*xb*xc^-1*xb^-1*xa^-1*xc^-1*xb*xc^-1*xa*xb^-2*xa*xc^-1*xb*xa^2*xb^-1, xa^-1*xc*xb*xc^-1*xa*xb^-1*xa^-3*xb^-1*xa^-1*xb^-1*xc*xb*xa^-2*xb^-1*xc*xb^-1, xc*xb^-1*xc*xa*xb^-1*xa^-2*xb^2*xa^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xb*xa*xb*xa^-1, xb^-1*xa^-1*xc^-1*xb*xa^2*xb^-1*xc*xb^-1*xc*xb^-1*xc*xa*xc*xb^-1*xc*xa*xb^-1*xa^-1*xb^-1, xc^-1*xb*xc^-2*xa*xb^-1*xa^-1*xc^-1*xb*xa*xb*xa^-1*xb*xc*xb^-1*xc*xa*xb^-1*xa^-1*xb^-1*xa^-1, xc*xb*xc^-1*xa*xb^-1*xa^-3*xc^-1*xb*xc*xb^-1*xc^2*xa*xb*xa^-1*xb^2*xa^-2, xb^-1*xa^-1*xb*xa^-2*xb^-1*xc*xb^-1*xa^-1*xb*xc^-1*xb*xc^-2*xa^2*xb*xa^-1*xc*xb^-1*xc^-1, xb^-1*xc*xa*xb*xa^-1*xc^-1*xb*xc*xb^-1*xc*xb^-2*xa*xb^-1*xa^-1*xb^-1*xc*xb^-1*xa^-1*xc^2*xb^-1*xc, xb^-1*xa^-1*xc^-1*xb*xa^-1*xb^2*xa^-1*xc*xb^-1*xc*xa*xb*xa*xc^-2*xb*xc^-1*xb^-1*xa*xb^-1*xa^-1*xb^-1, xa^2*xb*xa^-1*xc*xb^-1*xc^-1*xb*xa*xb*xa^-1*xb^2*xa^-2*xc*xb^-1*xc*xa*xb^-1*xa^-2*xb, xc*xb^-1*xc*xb^-1*xc*xa*xc^-1*xb*xc^-1*xb^-1*xc*xa*xc^-1*xa*xb^-1*xa^-1*xb^-1*xa^-1*xc^-1*xb*xc^-2*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=1,p=5,\{2\},D_3)"; print "*****************************"; // generators of the fundamental group: s1:=a; s2:=c; s3:=b*a*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [124] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s1*s2*s1^-2, s1*s2^-1*s3*s2*s3^-1*s1^-1, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s1^-1*s3*s1*s3^-1*s2^-1, s2*s3^-1*s1*s3*s2^-1*s1^-1, s3^2*s1*s3^-2*s1^-1, s3*s1^-1*s3*s1*s3^-2, s3*s2^-1*s1*s2*s3^-1*s1^-1, s3*s2^-1*s3*s2*s3^-2, s1^-2*s2*s1^2*s2^-1, s1^-2*s3*s1^-3, s1^5*s3^-1, s1^2*s3*s1*s3^-1*s1^-3, s1*s2*s3*s1*s3^-1*s2^-1*s1^-2, s1*s2*s3^-1*s1*s3*s2^-1*s1^-2, s1*s3*s2^-1*s3*s2*s3^-2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 124 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [5,5,15] // The class (a=1,p=5,\{2I\}) // ************************** print "\nFor the class (a=1,p=5,\{2I\})"; print "****************************"; // The one fpp in this class may be realized as an index 3 subgroup // of either the $\bar\Gamma$ of the class (a=1,p=5,\emptyset) or of // the $\bar\Gamma$ of the class (a=1,p=5,\{2\}) // First realization: Here again is the presentation of \bar\Gamma // of the class (a=1,p=5,\emptyset): F:=FreeGroup(3); relnlist:={ xb^3, xc^-1*xb^-1*xa*xb^-1*xa*xb^-1*xc^-1, xb*xa*xc*xb*xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1*xc, xc^-1*xa^-1*xb*xc^-1*xb^-1*xa*xc^-1*xa*xb*xc*xb*xa*xc*xb*xa^-1*xb^-1*xc*xb*xa^-1, xa^-1*xc*xb^-1*xa*xb*xa*xb*xa*xc*xb*xa^-1*xc*xb*xa^-1*xb^-1*xa*xc*xb*xa^-1, xb^-1*xa^-1*xc*xa^-1*xb*xc*xb^-1*xa*xc*xb*xa^-1*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1, xc*xa^-1*xb*xc*xb^-1*xa*xc*xb*xa^-2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xc^-1*xb^-1*xa, xc^-1*xa^-1*xb*xc*xb*xa^-1*xb^-1*xa*xc^-1*xb^-1*xa*xb*xc^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1, xc*xb*xc*xb*xa*xb^-1*xc^-1*xa^-1*xb*xa*xb^-1*xc*xa*xb^-1*xc^-1*xa*xb^-1*xc^-1*xb*xa, xb*xa*xb*xc*xb*xa*xc*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb*xc^-1*xa*xc*xb^-1*xa, xc*xb^-1*xa*xb*xa*xb*xc*xb^-1*xa*xb*xa*xb*xa^2*xb^-1*xc^-1*xb*xa*xc*xb*xa^-1, xc*xb*xa*xc^-1*xb^-1*xa*xc*xa^-1*xb*xc^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xc*xb*xa^-1*xb^-1*xc^-1*xa^-1, xb*xa*xb*xa*xc*xb^-1*xc*xa^-1*xb*xc*xb^-1*xa*xc^-1*xb^-1*xa^2*xc*xb*xa^-1*xc*xb^-1*xa, xc^-1*xb^-1*xc^-1*xa^-1*xb*xa*xb*xa*xb*xa*xc^-1*xa^-1*xb^-1*xc^-1*xa*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1, xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xc*xb*xa^-1*xb^-1*xc^-1*xa^-1*xc*xb^-1*xa*xb*xa*xb*xa^2*xb^-1*xc^-1, xc*xb*xa^-2*xb^-1*xa^-1*xb^-1*xa^-2*xb*xc*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1*xb^-1*xa^-1*xc*xb^-1*xa*xb*xa, xa^-1*xc*xb^-1*xa*xb*xa*xb*xa*xc^-2*xb*xc^-1*xa*xb^-1*xc^-1*xa^-1*xb^-1*xc*xb*xa^-1*xc^-1*xa^-1*xb^-1*xc^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=1,p=5,\{2I\})"; print "**************************"; // generators of the fundamental group: s1:=c*b^-1; s2:=b*a*b; s3:=b^-1*a*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,4,12] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), s2^2*s1^-2, (s3^-1,s1^-1), (s3^-1,s2^-1), s1^-1*s2^2*s1^-1, (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s2^2*s1^-3, s1*s3*s1*s3^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, (s1*s2^-1)^2, s1*s2^-1*s3*s2*s3^-1*s1^-1, s1*s3^-1*s1*s3*s1^-2, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s3^-1*s1^-2, s2*s3^-1*s1*s3*s2^-1*s1^-1, s2*s3^-1*s2*s3*s1^-2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 96 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,4,4,4,3224] print "\nFor the fpp (a=1,p=5,\{2I\}) (second realization)"; print "***********************************************"; // We now use the $\bar\Gamma$ of the class (a=1,p=5,\{2\}): F:=FreeGroup(3); relnlist:={ (xa^-1*xb)^3, (xc*xb^-1*xc)^3, (xa^-1*xb^-1*xa*xb^-1)^3, xa^-1*xc^-1*xb*xa*xb*xc^-1*xb*xc*xb^-1*xc*xb*xc^-2, xa^-1*xc^-1*xb*xa*xb*xa^-2*xb*xa^-2*xb^-1*xc*xb^-2, xb^-1*xa^-1*xc^-1*xb*xc^-1*xb*xc^-1*xa*xb^-2*xa^2*xb*xa^-1*xc, xc^2*xb^-1*xc*xa^2*xb^-1*xa^2*xb^-1*xa*xc^-1*xb*xa^2*xb^-1*xa, xc^-2*xb*xc^-1*xa*xb*xa^-1*xb^2*xa^-1*xb^-1*xa^-1*xc^-1*xb*xa^2*xb^-1*xa, xc^-1*xb*xa*xb*xa*xb^-1*xc^2*xb^-1*xc^-1*xb*xc^-1*xa*xb*xa*xb*xa^-1*xc^-1*xa^-1, xc^-1*xb*xc^-1*xb*xc^-1*xb^-1*xa^-1*xc^-1*xb*xc^-1*xa*xb^-2*xa*xc^-1*xb*xa^2*xb^-1, xa^-1*xc*xb*xc^-1*xa*xb^-1*xa^-3*xb^-1*xa^-1*xb^-1*xc*xb*xa^-2*xb^-1*xc*xb^-1, xc*xb^-1*xc*xa*xb^-1*xa^-2*xb^2*xa^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xb*xa*xb*xa^-1, xb^-1*xa^-1*xc^-1*xb*xa^2*xb^-1*xc*xb^-1*xc*xb^-1*xc*xa*xc*xb^-1*xc*xa*xb^-1*xa^-1*xb^-1, xc^-1*xb*xc^-2*xa*xb^-1*xa^-1*xc^-1*xb*xa*xb*xa^-1*xb*xc*xb^-1*xc*xa*xb^-1*xa^-1*xb^-1*xa^-1, xc*xb*xc^-1*xa*xb^-1*xa^-3*xc^-1*xb*xc*xb^-1*xc^2*xa*xb*xa^-1*xb^2*xa^-2, xb^-1*xa^-1*xb*xa^-2*xb^-1*xc*xb^-1*xa^-1*xb*xc^-1*xb*xc^-2*xa^2*xb*xa^-1*xc*xb^-1*xc^-1, xb^-1*xc*xa*xb*xa^-1*xc^-1*xb*xc*xb^-1*xc*xb^-2*xa*xb^-1*xa^-1*xb^-1*xc*xb^-1*xa^-1*xc^2*xb^-1*xc, xb^-1*xa^-1*xc^-1*xb*xa^-1*xb^2*xa^-1*xc*xb^-1*xc*xa*xb*xa*xc^-2*xb*xc^-1*xb^-1*xa*xb^-1*xa^-1*xb^-1, xa^2*xb*xa^-1*xc*xb^-1*xc^-1*xb*xa*xb*xa^-1*xb^2*xa^-2*xc*xb^-1*xc*xa*xb^-1*xa^-2*xb, xc*xb^-1*xc*xb^-1*xc*xa*xc^-1*xb*xc^-1*xb^-1*xc*xa*xc^-1*xa*xb^-1*xa^-1*xb^-1*xa^-1*xc^-1*xb*xc^-2*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); // The LowindexSubgroups(G,<3,3>) gives, apart from the index 3 subgroup // corresponding to the fpp (a=1,p=5,\{2\},D_3), given above, a second // (conjugacy class of) index 3 subgroup, with generators c, a*b and b*a. To get // a presentation in terms of these three generators, we could use Magma commands // T:=sub< G | c, a*b, b*a>; // Rewrite(G,~T); // T; // This gives a presentation on the three generators, but with lengthy relations. // So we instead just use the commands // T:=sub< G | c, a*b, b*a>; // S:=Rewrite(G,T); // S; // which give four generators, but with simpler relations, and which run very quickly. // generators of the fundamental group: s1:=c; s2:=a^2*b^-1; s3:=a*b; s4:=b^2*a^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,4,12] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s4^-1,s1^-1), (s4^-1,s2^-1), (s4^-1,s3^-1), (s1,s2^-1), (s1,s3^-1), (s1,s4^-1), (s2,s1^-1), (s2,s3^-1), (s2,s4^-1), (s3,s1^-1), (s3,s2^-1), (s3,s4^-1), (s4,s1^-1), (s4,s2^-1), (s4,s3^-1), s1^4, s1*s2*s1*s2^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s4*s2*s4^-1*s2^-1*s1^-1, s1*s4*s3*s4^-1*s3^-1*s1^-1, s1*s4^-1*s2*s4*s2^-1*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s4*s1*s4^-1*s2^-1*s1^-1, s2*s3^-1*s1*s3*s2^-1*s1^-1, s3^2*s1*s3^-2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 96 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,4,4,4,3224] // The class (a=2,p=3,\emptyset) // ***************************** print "\nFor the class (a=2,p=3,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb^3, (xb*xc*xa^-1*xc*xa)^3, xa^-1*xb^-1*xa^-1*xc*xb*xc*xa*xb*xc*xa^-1*xc*xb^-1, xa^-1*xb^-1*xa^-1*xc*xa^-1*xb*xc*xa^-1*xb^-1*xa^-2*xb, xc^-1*xa^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa*xb*xc*xa^-1*xb^-1, xb*xc*xa^-1*xb^-1*xc^-2*xb^-1*xc^-1*xa*xc^-1*xb^-1*xa*xc^-1*xb^-1*xa^-1, xa*xb*xa*xb*xc*xa^-1*xc*xb^-1*xc*xa^-1*xc*xb*xc*xb*xa^2*xc^-1, xa^2*xc^-1*xa*xc^-1*xb^-1*xa*xb*xc^2*xa^-2*xb^-1*xa*xb*xc*xa^-1*xc, xa*xc^-1*xa*xc^-1*xb^-1*xa*xb*xc*xb^-1*xa^-1*xc*xa^-2*xb^-1*xc*xa^-2*xb^-1*xc^-1, xb*xa^2*xc^-1*xa*xb*xa*xb^-1*xc^-1*xa*xc^-1*xb^-1*xa^-1*xc*xa^-1*xc*xb^-1*xc*xb*xa, xa^-1*xb^-1*xc^-1*xb^-1*xa^2*xb*xc*xa^-2*xb^-1*xa^-1*xb^-1*xa^-1*xc*xb^-1*xc*xa^-1*xc*xb*xc}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=2,p=3,\emptyset,D_3)"; print "**********************************"; // generators of the fundamental group: s1:=a; s2:=c; s3:=b*a*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,26] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), s3^3*s1^-1, (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s2^-1*s1*s2*s1^-2, s1*s3^-1*s1*s3*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2^2*s1*s2^-2*s1^-1, s2^2*s3*s1^-3, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s1^-3, s2*s3^3*s2^-1*s1^-1, s2*s1^-1*s2*s3*s1^-2, s2*s1^-1*s3*s2*s1^-2, s2*s3^-1*s1*s3*s2^-1*s1^-1, s2*s3^-1*s2*s3^-1*s1^-2, s3*s1^-1*s2^2*s1^-2, s3*s2^-1*s1*s2*s3^-1*s1^-1, s1^-2*s2*s3*s2*s1^-1, s1^-1*s3^-1*s2^2*s3^-1*s1^-1, s2^-1*s3^-1*s1*s3*s2*s1^-1, s1^2*s2*s1*s2^-1*s1^-3, s1^2*s3*s1*s3^-1*s1^-3>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 52 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,3,3,3] // The class (a=2,p=3,\{2\}) // ************************* print "\nFor the class (a=2,p=3,\{2\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ (xb*xa)^3, (xc^-1*xb^-1*xc^-1*xa)^3, (xa*xb*xc*xa^-1*xc*xa)^3, xc*xa^-2*xb^-1*xc^-1*xb*xc*xa^-1*xb*xc^-1*xb^-1*xa^-1, xb*xc*xa^-1*xc*xa*xb*xc*xa^-1*xc*xb^-1*xc^-1*xb^-1*xa^-1*xc, xa*xc^-1*xb^-1*xc*xb^2*xc*xb*xc*xa*xc^-1*xb^-2*xc^-1, xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-2*xc^-1*xa^2*xb*xc*xb*xa*xc*xb^2*xc, xb^-1*xa*xc^-1*xb^-2*xc^-1*xb^-1*xc^-1*xa*xc^-1*xa*xb*xa*xc^-1*xb^-1*xc^-1*xb^-2, xb*xa^-2*xb^-1*xc^-1*xb^-1*xc^-1*xb^-2*xc*xa^-2*xc*xb^2*xc*xb*xc, xb^-2*xc^-1*xb*xc*xa^-2*xc*xb^-1*xa*xc^-1*xb^-2*xc^-1*xb^-2*xa*xc^-1, xb^3*xc*xb*xc*xb*xa^3*xb*xc*xa^-1*xc*xb^-1*xa*xc^-1*xb^-2*xc^-1, xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-1*xc*xb*xc*xb*xa*xc*xb*xc*xb^2*xc*xa^-1*xb*xc^-1, xb^-1*xc*xb*xc*xb*xc^-1*xa^-1*xc*xb*xc^-1*xa*xc^-1*xb^-1*xa*xc^-1*xb*xc^-1*xa*xc^-1*xb^-1*xa^-1*xb^-1*xa*xc^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=2,p=3,\{2\},D_3)"; print "*****************************"; // generators of the fundamental group: s1:=a; s2:=c; s3:=b*a*b^-1; s4:=b*c*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,26] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s4^-1,s1^-1), (s4^-1,s2^-1), (s4^-1,s3^-1), s4^3*s2^-1, (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), s2^-1*s4*s1^-2, (s3,s1^-1), (s3,s2^-1), (s3,s4^-1), (s4,s1^-1), (s4,s2^-1), s1^2*s2*s4^-1, s1^2*s4^2, s1*s3^3*s1^-2, (s1*s4)^2, s1*s4*s3*s4^-1*s3^-1*s1^-1, s1*s4^2*s1, s1*s2^-1*s1*s2*s1^-2, s1*s3^-1*s4*s3*s4^-1*s1^-1, s1*s4^-1*s1*s2, s1*s4^-1*s2*s1, s2^3*s3*s4^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 52 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,3,3,3] // The class (a=2,p=3,\{2I\}) // ************************** print "\nFor the class (a=2,p=3,\{2I\})"; print "****************************"; // The one fpp in this class may be realized as an index 3 subgroup // of either the $\bar\Gamma$ of the class (a=2,p=3,\emptyset) or of // the $\bar\Gamma$ of the class (a=2,p=3,\{2\}) // First realization: Here again is the presentation of \bar\Gamma // of the class (a=2,p=3,\emptyset): // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb^3, (xb*xc*xa^-1*xc*xa)^3, xa^-1*xb^-1*xa^-1*xc*xb*xc*xa*xb*xc*xa^-1*xc*xb^-1, xa^-1*xb^-1*xa^-1*xc*xa^-1*xb*xc*xa^-1*xb^-1*xa^-2*xb, xc^-1*xa^-1*xb^-1*xc^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa*xb*xc*xa^-1*xb^-1, xb*xc*xa^-1*xb^-1*xc^-2*xb^-1*xc^-1*xa*xc^-1*xb^-1*xa*xc^-1*xb^-1*xa^-1, xa*xb*xa*xb*xc*xa^-1*xc*xb^-1*xc*xa^-1*xc*xb*xc*xb*xa^2*xc^-1, xa^2*xc^-1*xa*xc^-1*xb^-1*xa*xb*xc^2*xa^-2*xb^-1*xa*xb*xc*xa^-1*xc, xa*xc^-1*xa*xc^-1*xb^-1*xa*xb*xc*xb^-1*xa^-1*xc*xa^-2*xb^-1*xc*xa^-2*xb^-1*xc^-1, xb*xa^2*xc^-1*xa*xb*xa*xb^-1*xc^-1*xa*xc^-1*xb^-1*xa^-1*xc*xa^-1*xc*xb^-1*xc*xb*xa, xa^-1*xb^-1*xc^-1*xb^-1*xa^2*xb*xc*xa^-2*xb^-1*xa^-1*xb^-1*xa^-1*xc*xb^-1*xc*xa^-1*xc*xb*xc}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=2,p=3,\{2I\})"; print "**************************"; // generators of the fundamental group: s1:=a; s2:=c; s3:=b*a*b; s4:=b^-1*c*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,2,6] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), s1^2, (s2^-1,s1^-1), s2^2, (s3^-1,s1^-1), (s4^-1,s3^-1), s4^2, (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 48 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,4,52] print "\nFor the fpp (a=2,p=3,\{2I\}) (second realization)"; print "***********************************************"; // We now use the $\bar\Gamma$ of the class (a=2,p=3,\{2\}): F:=FreeGroup(3); relnlist:={ (xb*xa)^3, (xc^-1*xb^-1*xc^-1*xa)^3, (xa*xb*xc*xa^-1*xc*xa)^3, xc*xa^-2*xb^-1*xc^-1*xb*xc*xa^-1*xb*xc^-1*xb^-1*xa^-1, xb*xc*xa^-1*xc*xa*xb*xc*xa^-1*xc*xb^-1*xc^-1*xb^-1*xa^-1*xc, xa*xc^-1*xb^-1*xc*xb^2*xc*xb*xc*xa*xc^-1*xb^-2*xc^-1, xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-2*xc^-1*xa^2*xb*xc*xb*xa*xc*xb^2*xc, xb^-1*xa*xc^-1*xb^-2*xc^-1*xb^-1*xc^-1*xa*xc^-1*xa*xb*xa*xc^-1*xb^-1*xc^-1*xb^-2, xb*xa^-2*xb^-1*xc^-1*xb^-1*xc^-1*xb^-2*xc*xa^-2*xc*xb^2*xc*xb*xc, xb^-2*xc^-1*xb*xc*xa^-2*xc*xb^-1*xa*xc^-1*xb^-2*xc^-1*xb^-2*xa*xc^-1, xb^3*xc*xb*xc*xb*xa^3*xb*xc*xa^-1*xc*xb^-1*xa*xc^-1*xb^-2*xc^-1, xa^-1*xb^-1*xc^-1*xb^-1*xc^-1*xb^-1*xc*xb*xc*xb*xa*xc*xb*xc*xb^2*xc*xa^-1*xb*xc^-1, xb^-1*xc*xb*xc*xb*xc^-1*xa^-1*xc*xb*xc^-1*xa*xc^-1*xb^-1*xa*xc^-1*xb*xc^-1*xa*xc^-1*xb^-1*xa^-1*xb^-1*xa*xc^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); // generators of the fundamental group: s1:=b^2; s2:=b*c*b^-1; s3:=b*a*b*a^-1*b^-1; s4:=b*a*c*a^-1*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,2,6] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s4^-1,s1^-1), (s4^-1,s2^-1), (s4^-1,s3^-1), (s1,s2^-1), (s1,s3^-1), (s1,s4^-1), (s3,s1^-1), (s3,s2^-1), (s3,s4^-1), s4^2, s1^2*s3^2, (s1*s3)^2, s2*s3*s2*s3^-1, s2*s4*s2*s4^-1, s3^4*s1^-2, s3*s4*s2*s4^-1*s3^-1*s2^-1, s3*s4*s3*s4^-1*s3^-2, (s3*s4*s3^-1)^2, s1^2*s4*s3^2*s4^-1, (s1^2*s4*s1^-2)^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 48 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,4,52] // The class (a=7,p=2,\emptyset) // ***************************** print "\nFor the class (a=7,p=2,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xz^7, (xb^-2*xz^1)^3, (xb^2*xz^-2*xb^2*xz^2)^3, (xb^2*xz^-2*xb^2*xz^4)^3, xb^3*xz^-2*xb^-1*xz^2*xb^-2*xz^1, xb^3*xz^1*xb^3*xz^3*xb*xz^2*xb^-1*xz^-1, xb^3*xz^2*xb^2*xz^-2*xb^-1*xz^-1*xb^-3*xz^1*xb^-1*xz^-1}; G,psi:=quo; Z:=psi(xz); b:=psi(xb); print "\nFor the fpp (a=7,p=2,\emptyset,D_3 2_7)"; print "**************************************"; // generators of the fundamental group: s1:=b^3; s2:=(Z*b*Z^-1)^3; s3:=b*Z*b^2*Z^-2; s4:=Z*b*Z^3*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,2,2] Pid:=sub< G | s2*s1*s2^-1*s1^-1, s3*s1*s3^-1*s1^-1, s3*s2*s3^-1*s2^-1, s4*s1*s4^-1*s1^-1, s4*s2*s4^-1*s2^-1, s4*s3*s4^-1*s3^-1, s1*s2*s1*s2^-1, s1*s3*s1*s3^-1, s1*s4*s1*s4^-1, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s4*s3*s4^-1*s3^-1*s1^-1>; // I don't use the following natural command below, because it can be // time-consuming, for some reason. //print "The index of Pid in Pi is",Index(Pi,Pid); // Output 16 // Instead, I use the following: print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 16 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,4,4,28] print "\nFor the fpp (a=7,p=2,\emptyset,7_{21})"; print "*************************************"; // generators of the fundamental group s1:=b; s2:=Z*b^2*Z; s3:=Z^-2*b^2*Z^3; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); Pid:=sub< G | (s1,s2), (s1,s3), (s1,s2^-1), (s1,s3^-1), (s2,s3), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s2^-1*s1*s2*s1^-2, s1*s3^-1*s1*s3*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s3*s2*s3^-1*s1^-1, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s1^-1*s3^-1*s2*s3*s1*s2^-1>; // print "The index of Pid in Pi is",Index(Pi,Pid); // Output: 84 print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 84 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output [7,7,1988] print "\nFor the fpp (a=7,p=2,\emptyset,D_3 X_7)"; print "**************************************"; // generators of the fundamental group s1:=b^3; s2:=Z*b^3*Z; s3:=b*Z^2*b^-1*Z; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "Index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [14] Pid:=sub< G | s1^2, s1*s2*s3, s1*s3*s2, s2*s1*s3, s2*s3*s1^-1, s3*s1*s2, s3*s2*s1^-1, (s3,s2^-1), s2^-1*s1*s3^-1>; // print "The index of Pid in Pi is",Index(Pi,Pid); // Output: 14 print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 14 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2] // The class (a=7,p=2,\{7\}) // ************************* print "\nFor the class (a=7,p=2,\{7\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xz^7, xb^3, (xb^-1*xz^1*xb^-1*xz^2)^3, (xb*xz^6*xb*xz^5*xb^-1*xz^1)^3, xb*xz^2*xb^-1*xz^6*xb*xz^6*xb*xz^2*xb^-1*xz^6*xb*xz^6*xb*xz^4}; G,psi:=quo; Z:=psi(xz); b:=psi(xb); print "\nFor the fpp (a=7,p=2,\{7\},D_3 2_7)"; print "*********************************"; // generators of the fundamental group s1:=Z^2*b*Z^-1*b^-1; s2:=b^-1*Z^-1*b*Z^-3; s3:=Z^-1*b^-1*Z^2*b; s4:=Z^-2*b*Z*b^-1; Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); //output [2,2,2] Pid:=sub< G | s1*s2, s1*s2^-1, s1^2, s3^2, s4^2, (s4^-1,s1^-1), (s4^-1,s3^-1), s1*s3*s2*s3^-1>; //print "The index of Pid in Pi is",Index(Pi,Pid); // Output: 8. print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 8. print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output [2,2,2,2,2] print "\nFor the fpp (a=7,p=2,\{7\},D_3 7_7)"; print "*********************************"; // generators of the fundamental group s1:=b^-1*Z*b*Z^-2; s2:=Z^-2*b*Z^2*b^-1; s3:=b*Z^-1*b*Z^2*b; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); //output [14] Pid:=sub< G | s2*s1^-1, s3*s2*s3^-1*s1^-1, (s3^-1,s1^-1), s1^-1*s2, s1^-1*s3*s1^-2, s1^3*s3^-1>; // print "The index of Pid in Pi is",Index(Pi,Pid); // Output: 14 print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 14 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,6] print "\nFor the fpp (a=7,p=2,\{7\},D_3 7'_7)"; print "**********************************"; // generators of the fundamental group s1:=Z^2*b*Z^2*b^-1; s2:=b^-1*Z^-1*b*Z^2; s3:=Z^-2*b*Z^-2*b^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); //output [2,14] Pid:=sub< G | (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s1,s2), (s2,s3), (s3,s1^-1), (s3,s2^-1), s1^2*s3^2, s1*s3*s2*s3^-1*s2^-1*s1^-1, (s1*s3)^2, s1*s3^-1*s1*s3*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2^3*s3^-1, s1^3*s2*s1*s3^-1, s3*s1^-1*s2*s3*s2*s1^-1>; // print "The index of Pid in Pi is",Index(Pi,Pid); // Output: 28 print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 28 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,6] print "\nFor the fpp (a=7,p=2,\{7\},7_{21})"; print "********************************"; s1:=Z*b^-1; s2:=b^-1*Z*b*Z*b; s3:=b^-1*Z^3; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "#AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); //output [2,2,6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1*s2)^2, s3^2*s1^-2, (s1*s3^-1)^2, s1*s3^2*s1^-3, s1^-1*s3^2*s1^-1, s1*s3*s2*s3^-1*s2^-1*s1^-1>; // print "The index of Pid in Pi is",Index(Pi,Pid); // Output: print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,28] // The class (a=7,p=2,\{3\}) // ************************* print "\nFor the class (a=7,p=2,\{3\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xa*xb*xc^-1*xb*xc^-1*xa^2*xb, xc^-2*xb*xc^-1*xa*xb*xa*xb*xa*xb^-1*xc*xb, xb^-1*xa^-2*xc*xa^-1*xb^-1*xa^-1*xc^-1*xb*xa^-1*xb*xa, (xb^-2*xa^-2)^3, xb*xc^-1*xb*xa*xb*xa*xc^-1*xb*xa^-1*xc*xb^-1*xc^-1, xc*xb^-1*xc^2*xa^2*xb^2*xa*xc^-1*xb*xa^-1*xb*xa, xb*xa^-1*xc*xb^-1*xa*xb^-1*xc*xb*xc*xa^-1*xb*xa*xc^-1*xb*xa^-1*xb, xa^-1*xc*xb^-1*xc^2*xb^-1*xa*xb^-1*xc*xa^-1*xb^-1*xc*xb^-1*xc^2*xb*xc^-1*xb, xa*xc^-2*xb*xc^-1*xa*xb^-1*xc*xa^-1*xc*xb^-1*xa*xb^-1*xc*xb*xa^2*xb, xb*xa^-1*xb^-1*xa^-1*xb^-1*xc^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xc*xb^-1*xa^2*xb*xc^-1*xb*xa^-1*xc^-1, xc^-2*xb*xc^-1*xa*xb^-1*xc*xb^-2*xa*xc^-1*xa^2*xb*xa^-1*xc*xa^-1*xb^-1*xa^-1*xb^-1, (xc^-1*xb*xc^-1*xb*xa*xb^-1*xa^-2)^3}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (a=7,p=2,\{3\},D_3)"; print "*****************************"; // generators of the fundamental group: s1:=a; s2:=b*c*b^-1; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,28] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1^3*s3, s1*s2*s1*s2^-1*s1^-2, s1*s3*s1^2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s3^-1*s1*s3*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2^2*s1*s2^-2*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s3^-1*s2^-2, s2*s1^-1*s3*s1*s3^-1*s2^-1, s3^2*s1*s3^-2*s1^-1, s3^4*s1^-2, s1^2*s2^4, s1^2*s2*s3*s1*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 56 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,222] print "\nFor the fpp (a=7,p=2,\{3\},3_3)"; print "*****************************"; // generators of the fundamental group: s1:=a^3; s2:=a*b*a^-1; s3:=a^-1*c*a^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,12] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), s1^2, (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1, s1*s3*s1*s3^-1, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s3*s2*s3^-1*s1^-1, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2*s3^-1*s1*s3*s2^-1*s1^-1, s2*s3^-1*s2*s3*s2^-2, s3^2*s2*s3^-2*s2^-1, s3*s2^-1*s1*s2*s3^-1*s1^-1, s1*s2*s3^-1*s1*s3*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 48 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,28,2072] // The class (a=7,p=2,\{3,7\}) // *************************** print "\nFor the class (a=7,p=2,\{3,7\})"; print "*****************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ (xa^-1*xb*xa*xb^3)^3, (xb*xa^-1*xb^-1*xa^-1*xb^2*xa*xb^-2*xa^-2*xb*xa)^3, xa^-1*xb^2*xa^-1*xb*xa^-1*xb^-1*xa^-2*xb*xa*xb*xa*xb*xa*xb^-2, xa*xb*xa^-1*xb^-1*xa^2*xb^2*xa^-1*xb^-1*xa*xb^-1*xa^-1*xb^-1*xa^2*xb*xa, xb^-2*xa^-2*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^2*xa^-1*xb*xa^-1*xb^-1*xa^-1*xb^-1, xb^-1*xa^-1*xb^2*xa^-1*xb*xa*xb*xa^-2*xb^-1*xa^-1*xb^-2*xa*xb^2*xa^-1*xb^-1*xa^-1*xb^2*xa^-1, xa*xb^2*xa^-1*xb^-1*xa^-1*xb^2*xa^-1*xb*xa^-1*xb*xa^-1*xb^-3*xa^-2*xb*xa*xb*xa^-1*xb^-1, xa^-1*xb^-1*xa^2*xb^2*xa^-1*xb^-2*xa^2*xb*xa^-1*xb^-1*xa^2*xb^3*xa*xb^-1*xa^2*xb^2, xa^-1*xb^-3*xa^-1*xb^-2*xa*xb^2*xa^-1*xb^-1*xa^-3*xb^-3*xa^-2*xb*xa*xb^-1*xa^-2*xb, xb^-1*xa*xb^-1*xa^-1*xb^-1*xa^2*xb^2*xa^-1*xb^-2*xa^2*xb^2*xa^-1*xb^-1*xa^-1*xb^2*xa*xb*xa*xb^-1*xa, xa*xb*xa^-1*xb^-1*xa^2*xb^3*xa^-2*xb^2*xa*xb*xa*xb^-1*xa*xb^-1*xa*xb^-2*xa^-2*xb^-1*xa^-2*xb^-1*xa^-1*xb^2*xa^-1*xb, xa*xb^2*xa^-1*xb*xa^-1*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^2*xb^-1*xa^2*xb^2*xa^-1*xb*xa^-1*xb*xa^-1*xb^-1*xa^-1*xb^-5*xa^-2*xb*xa^2}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=7,p=2,\{3,7\},D_3)"; print "*******************************"; // generators of the fundamental group: s1:=a; s2:=b^3; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [28] Pid:=sub< G | (s2^-1,s1^-1), s2^2, (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s3,s1^-1), (s3,s2^-1), s1^3*s3, s1^2*s3*s1, s1*s3*s1^2, (s1*s2*s1^-1)^2, s1*s2*s1*s2^-1*s1^-2, s1*s3^-1*s1*s3*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s1^-1*s3*s1*s3^-1*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 28 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,6] print "\nFor the fpp (a=7,p=2,\{3,7\},3_3)"; print "*******************************"; // generators of the fundamental group: s1:=a; s2:=b*a*b; s3:=b^-1*a*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,12] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s3,s1^-1), s1^4, s2^2*s3^-1*s1^-1, s2^-1*s3*s1*s2^-1, s1*s2*s1*s2^-1*s1^-2, s1*s2^-1*s3*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 24 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [28] // The class (a=7,p=2,\{5\}) // ************************* print "\nFor the class (a=7,p=2,\{5\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xb^-1*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1, xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^4*xb*xa^-1*xb^2*xa*xb, xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-1*xa^-1*xb^-1, xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb^-2*xa^2*xb^2, xa^-1*xb^2*xa*xb^3*xa*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb, xa*xb^-3*xa^-1*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa, xb^-1*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-1*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-1*xb^-3*xa^-1*xb^-2*xa^3*xb^2*xa^-1*xb^-1, xa*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^-1*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb, xa*xb^-1*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1, xb^2*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1, xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-3*xb^2*xa^-2*xb^2*xa^-2*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-4*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1, xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa^2*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1, xb^-2*xa^-1*xb^-2*xa^2*xb^-2*xa*xb^-1*xa^-1*xb*xa*xb*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^2*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb^2*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-1*xb^-1, xa^2*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-5*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb, xb^-1*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb^2*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^4*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa, xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb*xa*xb, xb^-1*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb^-2*xa^-3*xb^2*xa*xb^3*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1, xa^-2*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^4*xb^2*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2, xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^3, xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-4*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb^-1*xa, xb^-1*xa^-1*xb^-1*xa*xb^2*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2*xa^-1*xb^-1*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1, xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb^-1*xa^-2, xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2*xa*xb*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb, xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb^-2*xa^-1*xb^-2*xa^3*xb^2*xa^-1*xb^-2*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1, xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^3*xb^-2*xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa^2*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1, xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-2*xa^2*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2, xb^-2*xa^-1*xb^-2*xa^3*xb^2*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa, xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-3*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^3*xb^-2*xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-2*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb, xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^2, xb^-1*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^2*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^4*xa^-1*xb^-3*xa^-1*xb^-2*xa^3*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1, xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^2*xa*xb^3*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^4*xb^-1*xa^-1*xb^-2*xa, xa^-2*xb^2*xa*xb^2*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-3*xa^-1*xb^-2*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^2*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2, xa^-4*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-2*xa^-1*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2, xa^-1*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb, xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-3*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^3*xb^3*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-2*xb^2*xa*xb^3*xa, xa^-1*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^2*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^4*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^2*xb^-2, xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-4*xb^2*xa*xb^3*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2, xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^3*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa^2*xb^-1*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa, xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^2*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa^-2*xb^2*xa*xb^2*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa, xb^2*xa^-1*xb^-1*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-4*xa^-3*xb^2*xa*xb^3*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^5*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2, xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2*xa^-3*xb^2*xa*xb^3*xa*xb^-2*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1, xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa*xb^3*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-2*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa^-2*xb^2*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb^-1, xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa^-2*xb^2*xa*xb^3*xa^3*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2, xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-2*xa^-3*xb^2*xa*xb^3*xa^-1*xb^2*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-2*xb^-3*xa^-1*xb^-2*xa^4*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-4*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb, xa^-2*xb^2*xa^-2*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-3*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2, xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-2*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1*xb^2*xa*xb^3*xa*xb^-2*xa^-6*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^2*xa*xb*xa*xb*xa*xb^-3*xa^-1*xb^-2*xa^-1*xb^-3*xa^-1*xb^-2*xa^3, xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^2*xb^2*xa^-2*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa*xb^-2*xa^3*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^4*xa*xb*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^2, xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^-2*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb*xa*xb^3*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^2*xa*xb^2*xa^-1*xb^-2*xa*xb^-1, xa^-1*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa^2*xb*xa^2*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^3*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-5*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2, xb^-2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-2*xb^2*xa^-1*xb^-1*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb^-1*xa^-1*xb*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-3*xa^-1*xb^-2*xa^5*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb^-3*xa^-3*xb^2*xa*xb^3*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1, xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^-1*xa^-3*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-2*xa*xb^2*xa^-1*xb^-3*xa^-1*xb^-2*xa^2*xb^-1*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb^2*xa*xb*xa^-1*xb^2*xa*xb*xa*xb^2*xa*xb*xa^-2*xb^2*xa*xb^3*xa*xb^-2*xa^-5*xb^2*xa*xb^3*xa^-2*xb^2*xa*xb^3*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=7,p=2,\{5\})"; print "*************************"; // generators of the fundamental group: s1:=a; s2:=b; // Here is the fundamental group: Pi:=sub< G | s1,s2>; print "The index of Pi in G is",Index(G,Pi); // Output: 1 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,18] Pid:=sub< G | (s1,s2), (s2^-1,s1^-1), (s1,s2^-1), (s2,s1^-1), s1*s2*s1*s2^-1*s1^-2, s1*s2^-1*s1*s2*s1^-2, s2^2*s1*s2^-2*s1^-1, s2*s1^-1*s2*s1*s2^-2, s2^-2*s1*s2^2*s1^-1, s1^2*s2*s1*s2^-1*s1^-3, s1^2*s2^-1*s1*s2*s1^-3, s1*s2^2*s1*s2^-2*s1^-2, s1*s2^-2*s1*s2^2*s1^-2, s2^2*s1^-1*s2*s1*s2^-3, s2^-3*s1*s2^3*s1^-1, s1^2*s2^6>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 36 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [1778] // The class (a=7,p=2,\{5,7\}) // *************************** print "\nFor the class (a=7,p=2,\{5,7\})"; print "*****************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xa^-1*xd*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-1, xd^-1*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd*xb*xa*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xa^-1, xd^-1*xb*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xa^-1*xd*xb*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1, xd^-1*xa*xd^-1*xb*xd*xa^-1*xd*xa^-1*xd*xa^3*xb^-1*xd*xa^-1*xd*xb*xa^-1*xd^-1*xa*xd^-1*xa*xd^-2*xb*xd^-1, xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xb^-1*xa^2*xb^-1*xd*xa^-1*xd*xb, xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xa*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb, xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa*xd^-1*xa^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xa^-1*xb*xa^2*xb^-1*xa^-1, xb*xa^3*xb^-1*xd*xa^-1*xd*xb*xa^2*xd^-1*xb^-1*xd*xa^-1*xd*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1, xd*xa^3*xb^-1*xd*xa^-1*xd*xb*xa^2*xd^-1*xa^-1*xd*xa^-1*xd*xb^-1*xd^3*xb^-1*xd*xa^-1*xd*xb*xa^2*xd*xa^-1, xb*xd^-1*xa*xd^-1*xa*xd^-2*xb*xd^-1*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-2*xb*xd^-1*xa*xd^-1*xb*xd^-1*xa*xd^-1*xb*xd^-1, xd*xa^-1*xd*xa*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd*xb^-1*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa, xa*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xa^-1*xd*xb^-1*xd^-1*xb*xa*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3*xb^-1*xd*xb*xd^-1*xa*xd^-1*xa*xd^-1, xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xa*xd^-1*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xd*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3, xb^-1*xd^-1*xa*xd^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3*xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa, xb^-1*xa^-1*xd^-1*xa*xd^-1*xb*xd*xb^-1*xd^2*xb^-1*xd*xa^-1*xd*xb*xa^3*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xb^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa, xb^-1*xd*xa^-1*xd*xa*xd^-1*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xd*xa^-2*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa^-1*xd*xb^-1*xd, xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa*xb^-1*xd*xa^-1*xd*xb*xa*xb^-2*xd^-1*xa*xd^-1*xb*xd^-1*xb^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa, xa^-1*xd^4*xb^-1*xd*xa^-1*xd*xb*xa^2*xd*xa^-1*xd*xb^-1*xd^-1*xb*xa*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3*xd^-1*xa*xd^-1*xa*xb^-1*xd, xa*xb*xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xa^-1*xb*xd^-1*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-2*xb, xb*xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-3*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xa*xb*xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd, xa^2*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xd^-1*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd*xb*xa^-1*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xb^-1, xa*xd*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3*xb^-1*xd^-1*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xb^-1, xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa^-1*xd*xb^-1*xd^3*xb^-1*xd*xa^-1*xd*xb*xa*xb*xd^-1*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-2*xb*xa, xd^-1*xa*xb^-1*xd*xa^-1*xd^2*xb*xd^-1*xa*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-3*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-2*xb*xd^-1*xa, xd*xa^-1*xd*xb^-1*xd^2*xa^-1*xd^3*xb^-1*xd*xa^-1*xd*xb*xa^2*xd*xa^2*xb^-1*xd*xa^-1*xd*xa^-1*xd*xb^-1*xd^-1*xb*xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd, xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb*xd^-1*xa*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xb^-1*xa^2*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xd^-1*xa*xd^-1*xb*xd*xa^-3, xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa^2*xb^-1*xa^-1*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd, xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa^-1*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb*xd^-1*xa*xb, xb*xa^-2*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-3*xa*xb^-1*xd*xa^-1*xd*xa*xd^-1*xb^2*xd^-1*xa*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-3*xb*xa^2, xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd*xa*xb*xa^-1*xb^-1*xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xa^-1*xd*xb^-1*xd*xa^-1*xd*xb*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa, xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-2*xb*xa^3*xd^-1*xb^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xa^-1*xd^-1*xa*xd^-1*xb^2*xd^-1*xa, xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xd*xa^-1*xd*xa*xb*xa*xb^-1*xd*xa^-1*xd*xb*xa^2*xb^-1*xd*xa^-1*xd*xb^2*xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb, xd^-1*xa*xd^-1*xb^2*xd^-1*xa*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-3*xb*xa*xd^-1*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd*xb^2*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb, xd*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xb^-1*xa^-1*xd^-1*xa*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xd*xa*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xa*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xd, xa^-1*xd*xb^-1*xd*xa^-1*xd^-1*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd^3*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xb^-1*xd^-1*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd*xb^2*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1, xa*xb^-1*xa^-1*xb^-1*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xa*xd^-1*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xa^-1*xd*xa^-1*xd*xb^-2*xd*xa^-1*xd*xa*xd^2*xb^-1*xd*xa^-1*xd*xb*xa^2*xd, xa^-1*xd*xb^-1*xd*xb^-1*xd^2*xb^-1*xd*xa^-1*xd*xb*xa^5*xd^-1*xb^-1*xd*xa^-1*xd*xb*xa^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xb^-1*xd*xa^-1*xd*xb*xa*xb^-1*xd*xb^-1*xd*xa^-1*xd*xb*xa^2*xb^-1*xa^-1, xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-1*xb^-1*xd^2*xb^-1*xd*xa^-1*xd*xb*xa^3*xb^-1*xd^-1*xa*xd^-1*xb*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-5*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xb*xd^-1*xa*xd^-1, xa*xd*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xa^-3*xd^-1*xb^-1*xd^-1*xa*xd^-1*xb*xa^-1*xb*xd^-1*xa*xd^-1*xb*xd^-1*xb*xd^-1*xa*xd^-1*xa*xd^-3*xa*xd^-1*xb*xd*xb^-1*xd*xa^-1*xd*xb^2*xa^-2*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2, xb^-2*xd^2*xa^-1*xd*xa^-1*xd*xb^-1*xd*xb^-1*xd*xa^-1*xd*xa*xb^-1*xd^-1*xa*xd^-1*xb*xa^-5*xb^-1*xd^-1*xa*xd^-1*xb*xd^-2*xb*xd^-1*xb*xd^-1*xa^4*xb^-1*xd*xa^-1*xd*xb*xa^2*xd^-1*xa*xb^-1*xd*xa^-1*xd*xb*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); d:=psi(xd); print "\nFor the fpp (a=7,p=2,\{5,7\})"; print "***************************"; // generators of the fundamental group: s1:=a; s2:=b; s3:=d; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 1 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [18] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1^3, s2*s3^2*s1^-1, s3*s2*s3*s1^-1, s3^2*s2*s1^-1, s1*s2*s1^2*s2^-1, s1*s3*s2*s3*s1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [7] // The class (a=15,p=2,\emptyset) // ****************************** print "\nFor the class (a=15,p=2,\emptyset)"; print "*********************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ (xb*xa*xb*xa^-1)^3, (xb*xa*xb^-3*xa^-1)^3, (xb^2*xa*xb*xa^-1*xb^-1*xa^2)^3, xa^-1*xb^-1*xa^-3*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa*xb^-3*xa^-2, xb^2*xa*xb^4*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa^2*xb*xa^3*xb^3*xa*xb, xb^-1*xa^2*xb^-3*xa^-3*xb*xa*xb^-1*xa^-1*xb^-2*xa^-1*xb*xa*xb^-1*xa^-1, xb^-3*xa^-2*xb^-3*xa^-2*xb*xa*xb^-1*xa^-1*xb^-1*xa*xb^-1*xa*xb*xa^-1*xb*xa, xb*xa*xb*xa^-1*xb^-1*xa^2*xb*xa^2*xb^-3*xa^-3*xb^2*xa*xb*xa*xb^-3*xa^-1*xb, xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^2*xa*xb*xa^-1*xb*xa^2*xb^4*xa^-1*xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xb^-1*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=15,p=2,\emptyset,D_3)"; print "***********************************"; // Here are the generators of Pi: s1:=a; s2:=b^3; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,14] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s3,s2^-1), s2^2, s1*s3*s1^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 28 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,6,114] print "\nFor the fpp (a=15,p=2,\emptyset,3_3)"; print "***********************************"; // Here are the generators of Pi: s1:=a; s2:=b^2; s3:=b*a*b*a^-1*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,18] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s3*s2*s3^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 72 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [57,798] // The class (a=15,p=2,\{3\}) // *************************** print "\nFor the class (a=15,p=2,\{3\})"; print "****************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ (xb*xa^-1*xb^-1*xa*xb*xa)^3, xb^-1*xa^-1*xb^2*xa^-1*xb^-1*xa*xb*xa^3*xb^-1*xa*xb^-1*xa^2*xb^-1*xa^-1*xb^-1*xa^-1, xb*xa*xb*xa^-1*xb^-1*xa*xb*xa^3*xb^-1*xa^-1*xb^-2*xa^-2*xb^-1*xa^-1*xb^2, xa^-1*xb^-1*xa^-1*xb*xa^-2*xb^-1*xa^-1*xb*xa^-2*xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xb^-2*xa^-1, xa*xb*xa*xb^-1*xa^-2*xb^-1*xa^-1*xb^2*xa^-2*xb*xa^-1*xb*xa^-1*xb^-1*xa*xb*xa, xb*xa^-1*xb^-2*xa*xb*xa^2*xb^2*xa*xb^-1*xa*xb*xa*xb*xa*xb^-1*xa*xb*xa^2, xb*xa*xb^-1*xa^-1*xb*xa*xb^-1*xa*xb*xa^2*xb*xa^-2*xb*xa^2*xb*xa^-2*xb*xa^-1*xb*xa^-1, xb*xa^2*xb*xa^-1*xb^-1*xa^2*xb^-1*xa^-2*xb^-1*xa*xb^-2*xa*xb*xa*xb^2*xa^-1*xb^-1*xa*xb*xa^2, xa^-1*xb^-1*xa^-1*xb*xa^-1*xb^-2*xa^-2*xb^-1*xa^-1*xb^2*xa^-1*xb*xa^2*xb*xa^-2*xb*xa^-1*xb*xa^-1*xb*xa*xb^-1*xa^-1, (xb*xa*xb^-1*xa^2*xb^-2*xa*xb*xa)^3, xb*xa^-2*xb^-1*xa^-1*xb^2*xa^-2*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb*xa^-1*xb^-1*xa*xb^-2*xa*xb*xa^2, xb^2*xa*xb^-1*xa*xb*xa^2*xb*xa^-1*xb^-1*xa^2*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa^-1*xb^2*xa^-1*xb*xa^2*xb*xa^-1*xb*xa*xb^-1*xa, xb*xa^-1*xb*xa^2*xb^-1*xa^2*xb^-2*xa*xb*xa*xb^-1*xa^-1*xb*xa*xb^-1*xa^2*xb^-1*xa^-1*xb^-2*xa^-1*xb*xa*xb^-1*xa*xb*xa^2, xb*xa*xb^-1*xa*xb*xa*xb^-1*xa^-1*xb*xa^-1*xb^-1*xa^-1*xb*xa^-1*xb*xa^-1*xb*xa^-1*xb*xa^2*xb*xa^-2*xb*xa*xb^-2*xa*xb*xa^2*xb*xa^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=15,p=2,\{3\},D_3)"; print "******************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*b^-1; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [42] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s2^-1*s1*s2*s1^-2, s1*s3^-1*s1*s3*s1^-2, s2^2*s1*s2^-2*s1^-1, s2^3*s3^-1*s1^-2, s2*s3^-1*s1*s3*s2^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 42 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,4,4] print "\nFor the fpp (a=15,p=2,\{3\},3_3)"; print "******************************"; // Here are the generators of Pi: s1:=b*a^-1; s2:=a*b*a; s3:=a^-1*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s2,s1^-1), (s3,s1^-1), (s3,s2^-1), s2^2*s1^-2, s1^-1*s2^2*s1^-1, s2^-1*s3^2*s2^-1, s1*s2*s1*s2^-1*s1^-2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 24 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,14] print "\nFor the fpp (a=15,p=2,\{3\},(D3)_3)"; print "*********************************"; // Here are the generators of Pi: s1:=b; s2:=a^3; s3:=a*b*a^-1; s4:=a^-1*b*a; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3,s4>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [6] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), (s2^-1,s1^-1), s2^2, s3*s1^-1, s4*s1^-1, s1*s3*s1^-2, s2*s3*s2^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 6 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [4,28] // The class (a=15,p=2,\{5\}) // *************************** print "\nFor the class (a=15,p=2,\{5\})"; print "****************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ (xb^-1*xa)^3, xb*xa^3*xb^-1*xa*xb^2*xa^2*xb^-1*xa^-1*xb^2*xa*xb^-2*xa*xb^-1*xa^-2*xb^3, xb*xa^2*xb*xa^-1*xb^3*xa^2*xb^-1*xa^-1*xb^2*xa*xb^-1*xa^-1*xb*xa^-3*xb^3, xb^2*xa*xb^-1*xa*xb^2*xa^2*xb*xa*xb^-2*xa*xb^-3*xa*xb^-1*xa^-2*xb*xa^2*xb*xa^-1, xa^2*xb*xa*xb^-1*xa^-1*xb*xa^-2*xb^-1*xa^-2*xb*xa^-3*xb^3*xa^2*xb*xa*xb^-2*xa, xb^2*xa^-1*xb^-3*xa^3*xb^-1*xa*xb*xa^-1*xb^-1*xa^-3*xb^3*xa^2*xb*xa*xb*xa^-1, xb^2*xa^-2*xb^-3*xa^3*xb^-1*xa*xb*xa^-1*xb*xa^2*xb*xa*xb*xa^-1*xb^2*xa^-1*xb^-2*xa^2*xb*xa^-1, xb^-1*xa^-1*xb*xa^-3*xb*xa^-2*xb^-3*xa*xb^-1*xa^-2*xb^-2*xa^2*xb*xa^-1*xb^3*xa^-1*xb^3*xa^-1*xb^2*xa^-1*xb^-1, xb^3*xa*xb*xa^-1*xb*xa*xb*xa^-1*xb^2*xa^-2*xb^-3*xa^3*xb^-1*xa^-1*xb^3*xa^2*xb*xa*xb*xa^-1*xb^2*xa*xb*xa^-1, xb^2*xa^-1*xb^-1*xa^-3*xb^-1*xa^3*xb^-1*xa*xb*xa^-1*xb^-1*xa^-3*xb^-1*xa^2*xb*xa^-1*xb^2*xa^-1*xb^-1*xa^-3*xb^-1*xa^2*xb*xa^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=15,p=2,\{5\},D_3)"; print "******************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*b^-1; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [14] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2,s1^-1), (s3,s1^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), s1^3*s3, s1^2*s2*s3^-1, s2^-1*s3*s1^-2, s1^-1*s3*s2^-1*s1^-1, s3^-1*s2*s3^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 14 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,6,6] print "\nFor the fpp (a=15,p=2,\{5\},3_3)"; print "******************************"; // Here are the generators of Pi: s1:=a; s2:=b^2; s3:=b*a*b*a^-1*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,18] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s3,s1^-1), s1*s3^3, s2^2*s3^-1*s1^-1, s3^-1*s2^2*s1^-1, s1*s2^-1*s3*s2^-1, s1*s2^-1*s1*s2*s1^-2, s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s3^-1*s2^2*s1^-2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 36 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,42] // The class (a=15,p=2,\{3,5\}) // *************************** print "\nFor the class (a=15,p=2,\{3,5\})"; print "******************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ (xb^3*xa^-1*xb^-1*xa)^3, xb^-1*xa^-1*xb^-1*xa^-3*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb^2*xa*xb^-2*xa^-1, xb^-1*xa*xb^-2*xa^-1*xb*xa*xb^-1*xa^3*xb*xa*xb*xa^2*xb^2*xa*xb^-1*xa, xa*xb*xa*xb^2*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb*xa*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa*xb, (xb^-1*xa*xb^2*xa*xb^-1*xa*xb^-1)^3, xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^-1*xa^-2*xb^-1*xa^-3*xb^-2*xa^-1*xb^-1*xa^-1*xb*xa, xa^2*xb*xa^2*xb*xa*xb*xa*xb*xa^-1*xb*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^-1, xb*xa^-1*xb^-2*xa^-2*xb^-1*xa*xb*xa*xb^2*xa*xb^-1*xa*xb*xa^-1*xb^-2*xa^-1*xb^-1*xa^-2*xb^-1*xa^-3, xa^-1*xb^-1*xa*xb*xa*xb^2*xa*xb^-1*xa^2*xb*xa^2*xb*xa*xb*xa*xb^-1*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa^-1, xa*xb*xa^2*xb*xa*xb*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa*xb*xa*xb^2*xa*xb^-3*xa^-1*xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xb*xa*xb^-1, xb^-1*xa^-1*xb*xa*xb*xa*xb^-1*xa^-1*xb*xa*xb^-1*xa*xb*xa^2*xb*xa*xb*xa*xb*xa^-1*xb*xa^2*xb*xa^2*xb*xa*xb*xa*xb^-1*xa^-1*xb^-1*xa^-1, xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^-1*xa^-1*xb*xa*xb*xa*xb^-2*xa^-1*xb *xa*xb^-1*xa^2*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb, xb^2*xa^3*xb*xa*xb*xa*xb*xa*xb^-2*xa^-1*xb*xa*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb*xa*xb*xa, xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-2*xb^-1*xa*xb*xa^2*xb*xa*xb*xa*xb*xa^-1*xb^2*xa^-1*xb^-1*xa*xb^2*xa^-1 *xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb, (xb^2*xa*xb^-1*xa^2*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb*xa)^3, (xb^2*xa*xb^-1*xa^2*xb*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb*xa)^3}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=15,p=2,\{3,5\},D_3)"; print "********************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*b^-1; s3:=b^-1*a*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [21] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1^4*s3^-1, s1*s2*s3, s1^2*s3*s2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 21 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2] print "\nFor the fpp (a=15,p=2,\{3,5\},3_3)"; print "********************************"; // Here are the generators of Pi: s1:=a*b; s2:=b*a; // Here is the fundamental group: Pi:=sub< G | s1,s2>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,6] Pid:=sub< G | (s1,s2), (s2,s1^-1), (s2^-1,s1^-1), s2^2*s1^-2, s1^-1*s2^2*s1^-1, (s1*s2^-1)^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 12 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [14] print "\nFor the fpp (a=15,p=2,\{3,5\},(D3)_3)"; print "***********************************"; // Here are the generators of Pi: s1:=a^3; s2:=a*b*a; s3:=a^-1*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [3] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), s1, s3*s2^-1, s2^3, s2*s3*s2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 3 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,14] // The class (a=23,p=2,\emptyset) // ****************************** print "\nFor the class (a=23,p=2,\emptyset)"; print "*********************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa *xb^8*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1, xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3 *xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3, xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-2 *xa^-1*xb*xa*xb^-5*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-2, xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa *xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^2*xa, xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1 *xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-1, xb*xa*xb^3*xa^-1*xb*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1 *xb*xa*xb^3*xa^-1*xb^-2*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2, xb^5*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1 *xb^-7*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-1*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa, xb*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3 *xa^-1*xb^-2*xa^-1*xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1, xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa *xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa *xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3, xb^2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1 *xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1*xb*xa*xb^3*xa^-1*xb^-3*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3, xb^-2*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3 *xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1 *xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2, xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1 *xb^4*xa*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa *xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3, xb*xa*xb^-6*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-4*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-4*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^-1*xa*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3 *xa^-1*xb*xa*xb^-3*xa^-1, xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1 *xb^-2*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-1*xa^-1*xb*xa*xb^-5*xa^-1*xb*xa *xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1, xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa *xb^5*xa^-1*xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-3*xa *xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3, xb*xa*xb^3*xa^-1*xb*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^-1*xa *xb^-3*xa^-1*xb*xa*xb^-4*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^2*xa*xb^3*xa^-1, xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^3*xa^-1*xb^-2*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa *xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1, xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb *xa*xb^3*xa^-1*xb^2*xa*xb^-8*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3 *xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa, xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1 *xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^2*xa^-1 *xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa*xb^-1, xb^-3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb *xa*xb^-1*xa^-1*xb^2*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa *xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1, xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^4*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa *xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-2*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa *xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa, xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1 *xb^-5*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb *xa*xb^-2*xa^-1*xb*xa*xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^2*xa^-1*xb^-1, xb^6*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa *xb^2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^2*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1 *xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1, xb^3*xa^-1*xb^3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1 *xb^3*xa*xb^3*xa^-1*xb^-2*xa*xb^-1*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa^2*xb^3*xa^-1 *xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa, xb^5*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1 *xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-1*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa*xb*xa*xb^3 *xa^-1*xb*xa*xb^3*xa^-1*xb^4*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1, xb^8*xa^-1*xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa*xb^5*xa^-1*xb^-1*xa*xb^3 *xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-2*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-3 *xa^-1*xb^-1*xa*xb^2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa, xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-2*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3 *xa^-1*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2 *xa*xb^-3*xa^-1*xb^-1*xa*xb^2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa, xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb *xa^-1*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1*xb*xa *xb^3*xa^-1*xb^-2*xa*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb, xb^5*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb*xa^-1*xb*xa *xb^-5*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-1*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3 *xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb*xa^-1*xb*xa*xb^3*xa^-1, xb*xa*xb^2*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb*xa*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3 *xa^-1*xb^-1*xa*xb^-1*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3 *xa^-1*xb^2*xa*xb^-3*xa^-1*xb^2*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1, xb^-1*xa*xb^-1*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa*xb^-1*xa*xb^-3*xa^-1*xb^-3*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa^-1 *xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^3 *xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1, xb^5*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1 *xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa *xb^3*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^2*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2, xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-4*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3 *xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^-2 *xa^-1*xb^-1*xa*xb^-1*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^3 *xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1, xb^-2*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3 *xa^-1*xb^2*xa*xb^-5*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^-3*xa *xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^3 *xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1, xb^6*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa *xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^5*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa *xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb*xa*xb^2, xb^8*xa^-1*xb^-2*xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa *xb^-2*xa^-2*xb^-2*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa *xb^3*xa^-1*xb^4*xa*xb^7*xa*xb^-3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-2*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^2*xa, xb*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1*xb^3*xa^-1*xb^-1*xa*xb*xa^-1*xb^-1*xa*xb^3*xa^-1*xb*xa*xb^3*xa^-1 *xb^3*xa*xb^3*xa^-1*xb^-1*xa*xb^3*xa^-1*xb^2*xa*xb^-5*xa^-1*xb*xa*xb^3*xa^-1*xb*xa^-1*xb^-2*xa*xb^-3 *xa^-1*xb^-1*xa*xb^-3*xa^-1*xb*xa*xb*xa^-1*xb*xa*xb^3*xa^-1*xb*xa*xb^-2*xa^-1*xb*xa*xb^3*xa^-1*xb^-2 *xa*xb^-3*xa^-1*xb*xa*xb^-3*xa^-1*xb*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=23,p=2,\emptyset)"; print "*******************************"; // Here are the generators of Pi: s1:=a; s2:=b; S:=sub< G | s1,s2>; // Here is the fundamental group: Pi:=sub< G | s1,s2>; print "The index of Pi in G is",Index(G,Pi); // Output: 1 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [42] Pid:=sub< G | (s1,s2), s1^2, (s2^-1,s1^-1), (s2,s1^-1), s1*s2*s1*s2^-1, s2^2*s1*s2^-2*s1^-1, s2^-2*s1*s2^2*s1^-1, s2^3*s1*s2^-3*s1^-1, s2^-3*s1*s2^3*s1^-1, s2^4*s1*s2^-4*s1^-1, s2^-4*s1*s2^4*s1^-1, s2^5*s1*s2^-5*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 42 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,2,2,2,558] // The class (a=23,p=2,\{23\}) // *************************** print "\nFor the class (a=23,p=2,\{23\})"; print "*****************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^-2*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-1, xb^2*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^3*xb^-5*xa^-1*xb^-5*xa^-1* xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^3*xa, xb^3*xa^-1*xb^-2*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3 *xa^-2*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1, xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa*xb^5*xa^-2 *xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^2, xb*xa^-1*xb^-2*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa^-1*xb^3*xa*xb^5 *xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^4, xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1 *xa*xb^5*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1, xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-4*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^3 *xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^-3*xa*xb^3, xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-2*xb *xa*xb^-3*xa*xb^2*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2, xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1 *xb^3*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3, xb^5*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^5*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^2*xa *xb^-3*xa^-1*xb^3*xa*xb^5*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5, xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa *xb^-8*xa^-1*xb^3*xa^-1*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1, xb^10*xa^-1*xb^-3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3 *xa*xb^5*xa^-1*xb^-1*xa*xb^2*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-3*xb*xa*xb^-3*xa*xb^5*xa *xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-2*xb^4, xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^3*xa *xb^2*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8, xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-2*xb*xa, xa^2*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-3*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa *xb^10*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^2, xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^10*xa^-1 *xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3, xb^-3*xa^-1*xb^3*xa*xb^2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3 *xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^3*xa*xb*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa, xa*xb^2*xa*xb^2*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^7*xa*xb^5*xa*xb^5*xa^-1 *xb^-3*xa*xb^8*xa^-1*xb^2*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5, xa*xb^-3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5 *xa^-1*xb^-1*xa*xb^-5*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-3, xa^-1*xb^3*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-5*xa^-1 *xb^-3*xa*xb^3*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^3, xb^-4*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-2*xa*xb^-3*xa*xb^2*xa*xb^8*xa^-1*xb^2*xa*xb^-3*xa *xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^2*xa*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^3*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^-1, xb^-7*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1 *xb^-3*xa*xb^3*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa*xb^-3, xb^-3*xa^-1*xb^3*xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb^-6*xa*xb^3*xa *xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^6*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa, xb^-5*xa^-1*xb^3*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-2*xb*xa^-1*xb^-2*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1, xb^5*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb^2 *xa*xb^-5*xa^-1*xb^-3*xa*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^3*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1, xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa *xb^-5*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa, xb^3*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^2*xa*xb^-1*xa^2*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2 *xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-2*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^2, xb^13*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^12*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1 *xb^-3*xa*xb^3*xa*xb^-3*xa*xb^8*xa^-1*xb*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-2*xa*xb^-3*xa, xb^10*xa^-2*xb*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa*xb^8*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5 *xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5 *xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3, xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa *xb^5*xa^-1*xb^2*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^5*xa^-1*xb^-1*xa*xb^-3 *xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3, xb^3*xa^-1*xb^-2*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3 *xa*xb^5*xa*xb^4*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^-2*xa^-1 *xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1, xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3 *xa^-2*xb^3*xa*xb^5*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5 *xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8, xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-2*xb*xa*xb^-3*xa *xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-10*xa^-1*xb^-3*xa^2*xb^-3*xa, xb^10*xa^-1*xb^-2*xa*xb^-3*xa*xb^8*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^5*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^-2*xa^-1*xb^3*xa*xb^-1*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1 *xb^3*xa*xb^-3*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-2*xa^3*xb^-5*xa^-1*xb^-5*xa^-1*xb^3 *xa^-2*xb^3*xa*xb^5*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-4, xb^10*xa^-1*xb^-3*xa*xb^-1*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1 *xb^3*xa*xb^2*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^3 *xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^5*xa*xb^5*xa^-2*xb^3*xa^-1*xb^2*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^7*xa^-1*xb^-3*xa*xb^3 *xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-1*xa*xb^-6*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^2*xb^-3*xa, xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^3 *xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-6*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa *xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-1, xb^10*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-2*xb^3*xa*xb^5*xa^-2*xb^3 *xa*xb^5*xa^-2*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^2*xa^-1 *xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^10*xa^-1*xb^-3*xa^-1*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-2*xa^2*xb^-5*xa^-1 *xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^9*xa^-1*xb *xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^15*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-5*xa^-1 *xb^-3*xa*xb^3*xa*xb^-5*xa^-1*xb^-3*xa*xb^-3*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^3*xa^-1*xb^2*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^10*xa^-1*xb^-4*xa*xb^-3*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5 *xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa*xb^5*xa*xb^2*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^7*xa^-1*xb^-5 *xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-3*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb^-1*xa*xb^-3*xa*xb^2, xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-3*xa^2 *xb^-3*xa*xb^5*xa*xb^5*xa^-3*xb^2*xa*xb^5*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb^-2*xa*xb^-3*xa*xb^8*xa^-1, xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^-1*xa^-1*xb^-3 *xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^2*xa^-1*xb^-3*xa*xb^-3*xa^-1 *xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1, xb^10*xa^-1*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-6*xa*xb^3*xa*xb^-3*xa*xb^5 *xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^3*xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^10*xa^-1*xb^-1*xa*xb^5*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb^-2*xa*xb^-3*xa *xb^8*xa^-1*xb^-2*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^8*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa^-1*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-1*xa^-1*xb^-3*xa*xb^3 *xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa *xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^3, xb^-3*xa^-1*xb^3*xa*xb*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3 *xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3 *xa*xb^2*xa*xb^3*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2, xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3 *xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-5*xa^-1 *xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-3, xb^3*xa^-1*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa^-1*xb^-2*xa^-1*xb^-5 *xa^-1*xb^3*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-2*xb*xa^-1*xb^3*xa*xb^2 *xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^-5*xa^-1, xb^13*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^7*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa *xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa^-1*xb^-3*xa*xb^3*xa^-1*xb^3*xa*xb^5 *xa^-1*xb^-3*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa, xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^5*xa*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1 *xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3 *xa^-1*xb^3*xa*xb^3*xa^-1*xb^-3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa, xb^10*xa^-2*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1 *xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3 *xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^-7*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa *xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-10 *xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-8, xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5 *xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^2*xa*xb^3*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^-1*xa *xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3, xb^-1*xa*xb^3*xa^-1*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb*xa^-1 *xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-11*xa*xb^5*xa*xb^2 *xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1, xb^8*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa*xb^-3*xa*xb^5*xa*xb^5 *xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5 *xa^-2*xb^2*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa*xb^-3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb^-2*xa^-1*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1 *xb^-5*xa^-2*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-1*xa*xb^-3*xa*xb^5*xa^-1 *xb^3*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-6, xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^3*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5 *xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa*xb^13*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3 *xa^2*xb^-3*xa*xb^5*xa*xb^9*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa, xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2 *xb^-3*xa*xb^5*xa*xb^10*xa^-1*xb^-1*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-10*xa^-1*xb^-3*xa^2*xb^-3*xa, xb^7*xa^-1*xb^-3*xa*xb^3*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^-5*xa^-1*xb^3 *xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^2*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^10*xa^-2*xb*xa^-1*xb^3*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3 *xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^-2 *xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-2*xa*xb^-3*xa*xb^2*xa*xb^5*xa*xb^2 *xa*xb^5*xa*xb^2*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa^-1, xb^10*xa^-1*xb^-6*xa*xb^5*xa*xb^5*xa*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^10*xa^-1 *xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^6*xa^-1 *xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^3*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5 *xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb^6*xa*xb^5*xa^-2*xb*xa*xb^-3 *xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^2*xa*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa, xb^-3*xa*xb^5*xa*xb^8*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-4*xa^-1 *xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa^-1*xb^3*xa*xb^2*xa^-1*xb^-3 *xa*xb^3*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2, xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa^-1 *xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2 *xb^3*xa^-1*xb*xa^-1*xb^-2*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-8*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1 *xb^-6*xa^2*xb^-5*xa^-1*xb^-3*xa*xb^-3, xb^-3*xa*xb^5*xa*xb^8*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-1 *xb^-3*xa*xb^6*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa *xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-1, xb^13*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-2*xa^2*xb^-5 *xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb*xa^-1 *xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa, xb^5*xa*xb^5*xa^-2*xb^2*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa*xb^3*xa^-1*xb^-5*xa^-1*xb^3*xa^-1 *xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^2*xa*xb^-5*xa^-1*xb^-3 *xa*xb^-3*xa^-1*xb^3*xa*xb^-1*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3 *xa^-1*xb^3*xa*xb^-3*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa, xb^10*xa^-2*xb^4*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^-3*xa *xb^5*xa*xb^2*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^6*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3 *xa*xb^3*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-2*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^5*xa, xa*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^3*xa^-1*xb*xa^2*xb^-5*xa^-1*xb^-5 *xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-3*xa^-1*xb^-2*xa^-1*xb^3*xa^-1*xb^-1*xa^2*xb^-5*xa^-1*xb^-5 *xa^-1*xb^-10*xa^-1*xb^3*xa^-1*xb*xa*xb^-5*xa^-1*xb^-3*xa*xb^3*xa^-1*xb^-2*xa^-1*xb^3*xa*xb^-5*xa^-1 *xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^-3*xa, xb^8*xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-3*xa*xb^5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^-2*xa^-1*xb^-5*xa^-1*xb^3 *xa^-1*xb^-1*xa*xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa *xb^5*xa^-1*xb^2*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa, xb^3*xa^-1*xb^3*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-7*xa^-1*xb^-3 *xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^2*xa*xb^-3*xa*xb^-10*xa^-1*xb^-5*xa^-1*xb^3*xa^-2 *xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3*xa^-1*xb^3*xa^-1*xb*xa*xb^-8*xa^-1*xb^3*xa*xb^-5*xa^-1*xb^-5*xa^-1 *xb^3*xa^-1*xb^-1*xa*xb^-5*xa^-1*xb^-2*xa^-1, xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^-3*xa^-1*xb^-3*xa*xb^3*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa *xb^2*xa^2*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-2*xb^2 *xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa*xb^8*xa^-1*xb^-1*xa^2*xb^-10*xa^-1*xb^-5*xa^-1*xb^3 *xa^-2*xb^3*xa*xb^5*xa^-1*xb^-1*xa*xb^-3, xb^3*xa^-1*xb^-3*xa^2*xb^-3*xa*xb^8*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-8*xa^-1*xb^3*xa^-1 *xb^-1*xa^2*xb^-5*xa^-1*xb^-5*xa^-1*xb^3*xa*xb^5*xa^-2*xb*xa*xb^-3*xa*xb^8*xa^-1*xb*xa^2*xb^-5 *xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-3*xa^-1*xb^3*xa*xb^-2*xa^-1*xb^-5*xa^-1*xb^3*xa^-1*xb^-1*xa *xb^-3*xa*xb^-5*xa^-1*xb^3*xa^-1*xb*xa*xb^-3*xa*xb^5*xa*xb^5*xa^-1*xb^-3*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); print "\nFor the fpp (a=23,p=2,\{23\})"; print "***************************"; // Here are the generators of Pi: s1:=a; s2:=b; S:=sub< G | s1,s2 >; // Here is the fundamental group: Pi:=sub< G | s1,s2>; print "The index of Pi in G is",Index(G,Pi); // Output: 1 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [21] Pid:=sub< G | (s1,s2), (s1,s2^-1), (s2,s1^-1), (s2^-1,s1^-1), s1*s2^-1*s1*s2*s1^-2, s2^2*s1*s2^-2*s1^-1, s2*s1^-1*s2*s1*s2^-2, s1^-2*s2*s1^2*s2^-1, s1^4*s2^-3, s1^3*s2^3, s1^2*s2^3*s1, s1^2*s2^-1*s1^2*s2^-2, s2^6*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 21 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2] // The class (C2,p=2,\emptyset) // **************************** print "\nFor the class (C2,p=2,\emptyset)"; print "*******************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xz^3, (xz^-1*xb*xa^-1)^3, xb*xa^-2*xz^-1*xb^2*xz*xa, xa^-1*xb^-1*xz*xa*xb^-2*xa^-1*xz^-1, xa^-1*xz^-1*xb*xa^-2*xz*xb^-1*xz^-1*xb^-1*xz*xa*xz^-1*xb*xz, xa^-1*xz^-1*xa^-1*xz^-1*xb^-1*xz^-1*xa*xz^-1*xb^-1*xz^-1*xb^-1*xz^-1, xb^-1*xz*xa*xz*xa*xz*xa*xz^-1*xb^-1*xz^-1*xa*xz*xa*xz^-1*xb^-1*xz^-1, xb^-1*xz*xb^-1*xz*xa^-1*xz^-1*xb*xz^-1*xa*xz^-1*xb*xz*xa*xz*xa*xz^-1, xz^-1*xb*xz^-1*xb*xz*xb^-1*xz*xa*xz^-1*xb*xz^-1*xb*xa*xz^-1*xb^-1*xz*xa*xz^-1*xb}; G,psi:=quo; a:=psi(xa); b:=psi(xb); Z:=psi(xz); print "\nFor the fpp (C2,p=2,\emptyset,d_3 D_3)"; print "*************************************"; // Here are the generators of Pi: s1:=b*a*b^-1; s2:=Z*a*Z^-1; s3:=b*Z^-1*b*Z*b; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [14] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2,s1^-1), (s2,s3^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), s3*s2*s1^-2, s3^2, s1^2*s3*s2^-1, s1*s2^3, s1*s2*s3*s1^-3, s1*s3*s1*s2^-1, (s1*s3*s1^-1)^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 14 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,2,2,6,18] print "\nFor the fpp (C2,p=2,\emptyset,D_3 X_3)"; print "*************************************"; // Here are the generators of Pi: s1:=Z*a*Z; s2:=Z^-1*a*Z^-1; s3:=b*Z^-1*a*Z^-1*b^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [126] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1^2*s2*s3, s1*s2*s1*s3, s1*s3*s1*s2, s1*s3^-1*s1*s3*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2^2*s1*s2^-2*s1^-1, s2*s3*s1^2, s3^2*s2*s3^-2*s2^-1, s3*s2^-1*s3*s2*s3^-2, s3^-2*s1*s3^2*s1^-1, s1^3*s2*s3*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 126 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,2,2,6,6] print "\nFor the fpp (C2,p=2,\emptyset,(dD)_3 X_3)"; print "****************************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*b^-1; s3:=(b*Z^-1)^2; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [18] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s3^-1), (s2,s3), (s3,s1^-1), (s3^-1,s1^-1), s2*s1^-1, s1*s2*s1^-2, s3*s2*s3^-1*s1^-1, s3^-1*s2*s3*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,21] print "\nFor the fpp (C2,p=2,\emptyset,(d^2D)_3 X_3)"; print "******************************************"; // Here are the generators of Pi: s1:=b*a*b^-1; s2:=Z^-1*a*Z^-1*b; s3:=(Z*b)^2; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [18] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s3,s1^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), s3^2*s2^-1, s2^-1*s3^2, s3^-1*s2*s3^-1, s1*s2*s1*s3, s1*s3^2*s2^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,21] print "\nFor the fpp (C2,p=2,\emptyset,d_3 X'_3)"; print "**************************************"; // Here are the generators of Pi: s1:=b; s2:=Z*a*Z^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [3,6] Pid:=sub< G | (s1,s2), (s1,s2^-1), (s2,s1^-1), (s2^-1,s1^-1), s2^3*s1^-3, s2^2*s1*s2^-2*s1^-1, s1*s2*s1*s2^-1*s1^-2, s1*s2^-1*s1*s2*s1^-2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [63] print "\nFor the fpp (C2,p=2,\emptyset,X_9)"; print "*********************************"; // Here are the generators of Pi: s1:=b; s2:=Z*a*Z*a*Z*a*Z*a^-1*Z^-1*a^-1*Z^-1; s3:=Z*a*Z*a*Z^-1*b*Z^-1*a^-1*Z^-1*a^-1*Z^-1; // Here is the fundamental group: Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [3,6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2,s1^-1), (s3,s1^-1), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), s1*s2*s1*s3, s3^2*s1*s2^-1, s1*s2^2*s3^-1, s1*s3^2*s2^-1, s1^-1*s3*s2^-2, s3^-1*s2*s3^-1*s1^-1, s2^-1*s3*s2^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,21] // The class (C2,p=2,\{3\}) // ************************ print "\nFor the class (C2,p=2,\{3\})"; print "**************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xz^3, (xb*xz)^3, xa*xz*xb*xz^-1*xa^-1*xz^-1*xa^-1*xz*xb^-1, xa^-1*xb^-1*xz^-1*xa^-1*xz*xb^-1*xz*xa^-1*xb^-1*xz^-1, xb^-1*xz*xa^-1*xb^-1*xz*xb*xz^-1*xa*xb^-1*xz^-1*xb^-1, xb*xz^-1*xa*xz^-1*xb^-1*xa*xb^-1*xz*xa*xz*xb, xa^-2*xz^-1*xa^-1*xz^-1*xb^-1*xz*xa^-2*xb*xz, (xa^-1*xz^-1*xa^-1*xb)^3, xb^-1*xz*xb^-1*xa*xz^-1*xa^-2*xb*xz^-1*xa^-1*xb*xz*xa^-1, xz*xa^-1*xb*xz*xb^-1*xz*xa^-1*xz*xb^2*xa*xz^-1*xb, xz^-1*xa^-1*xz*xa^-1*xz^-1*xa^-1*xb*xa*xz^-1*xb^-1*xa*xz^-1*xa^-2, xa^-1*xb^-1*xz^-1*xa^-1*xz^-1*xa*xz*xa^2*xz*xa*xz*xa*xz^-1*xb, xa^-1*xb*xz^-1*xb*xa*xb^-1*xz*xa^-1*xb^-2*xz*xa^-2*xb*xz^-1, xb^-1*xa*xb^-1*xz*xb^-1*xa*xz^-1*xb^-1*xz^-2*xa^-1*xb^-2*xz*xa^-1*xz, xa*xz^-1*xb^2*xz^-1*xa^-2*xb*xz*xa^-1*xz*xb*xa*xz*xb^-1*xz^-1, xb^-2*xa^2*xz^-1*xb^2*xa*xz*xb^-1*xz^-1*xa*xb^-1*xz*xa^-1*xb^-1, xa^-1*xb*xz^-1*xb*xa*xz*xa^-1*xb*xz*xa^-1*xb^-1*xz^-1*xa^-1*xz*xb*xa*xz^-1*xb*xa^-1*xb^-1, xz*xa^-1*xb*xz^-1*xa*xb*xz*xb*xa^-1*xb*xz*xb*xa*xz*xb^-1*xz^-1*xa*xb*xz*xb*xa^-1}; G,psi:=quo< F | relnlist >; a:=psi(xa); b:=psi(xb); Z:=psi(xz); print "\nFor the fpp (C2,p=2,\{3\},d_3 D_3)"; print "********************************"; // Here are the generators of Pi: s1:=a; s2:=Z*a*Z^-1; s3:=Z^-1*a*Z; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: 7 Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), s2*s1^-1, s3*s1^-1, s1*s2*s1^-2, s1*s3*s1^-2, s1^-1*s2, s1^-1*s3>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 7 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2] // The class (C10,p=2,\emptyset) // ***************************** print "\nFor the class (C10,p=2,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb^3, (xb*xa^-1)^3, xc^-1*xa*xb*xc^-2*xa^3*xc*xa^-1*xb^-1, xa*xc*xb^-1*xc*xa^-1*xb^-1*xa^-1*xc^-1*xb*xa*xc^-1*xb, xc^-1*xb*xa^-1*xb^-1*xc^-1*xa*xb^-1*xa*xc^-1*xa^-2*xb*xc^-1, xc^-1*xb*xa^-1*xb^-1*xa*xb*xa*xc^-1*xa^-1*xc^2*xb^-1*xa^-1, xa^-1*xb*xa*xb^-1*xc*xa^-1*xb^-1*xc*xa*xc*xa^-1*xb^-1*xc*xb^-1, xc^2*xb^-1*xa^-1*xc^-1*xa^3*xc*xb^-1*xc^2*xb^-1*xa^-1, xc*xb^-1*xc*xa^-1*xb^-1*xc^-1*xa*xc*xa^-1*xb^-1*xc^-1*xa^-2*xc, xc*xb^-1*xa^-1*xc*xb^-1*xa^-1*xb*xa^2*xc*xa^-1*xb^-1*xc*xb^-1*xa^-1, xc*xb^-1*xa^-1*xc^-1*xb*xa*xc*xb^-1*xa^3*xb*xc^-2*xa*xc, xa^2*xc*xb*xa*xc^-1*xa*xc*xa^-1*xb^-1*xc^-2*xb*xa*xc*xb^-1}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (C10,p=2,\emptyset,D_3)"; print "**********************************"; // Here are the generators of Pi: s1:=a; s2:=c; s3:=b^-1*c*b; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: 14 Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s3^-1), (s3,s1^-1), (s2^-1,s1^-1), (s3^-1,s2^-1), s1*s3*s2^-1, s3*s1*s2^-1, s1^-1*s2*s3^-1, s2^-1*s1*s3, s3^-1*s2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 14 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,4,4,52] // The class (C10,p=2,\{17-\}) // *************************** print "\nFor the class (C10,p=2,\{17-\})"; print "*****************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ (xb*xa^-1)^3, (xb*xc^-1)^3, xc^-1*xb*xa^-2*xb*xc*xb^-1*xa^2*xb^-1, xb*xa*xb^-1*xc*xb^-1*xa^-2*xb^2*xc^-1*xb^2*xc^-1, xa^-1*xb*xa^-2*xb*xa^-2*xc*xa^3*xb^-1*xc*xb^-1, xa*xb^2*xa^3*xb^-1*xc^2*xb^-1*xc^-1*xb*xc^-1*xb^-1*xc, xb^-1*xa^2*xb^-2*xa^2*xb^-1*xc*xb^-1*xa^2*xb^-1*xc^4, xb*xa*xc^-1*xb*xc^-1*xb^-1*xc*xa*xb*xa^-1*xb*xc*xb^-1*xc*xa^-3*xb*xc^-1, xa*xb*xa*xb^-1*xc*xb^-2*xa*xb*xa*xc^-1*xb*xc^-1*xb^-1*xa*xb*xa*xc^-1*xb*xc^-1*xb^-1, xa*xb^-1*xc*xa^2*xb^-2*xa^-1*xb*xa^-2*xc*xa*xb^3*xa^-2*xc*xb^-1*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (C10,p=2,\{17-\},D_3)"; print "*******************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*b^-1; s3:=b*c*b^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [7] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), s3, s1*s3*s1^-1, s2^2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 7 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2] // The class (C18,p=3,\emptyset) // ***************************** print "\nFor the class (C18,p=3,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xz^3, (xb*xz)^3, xa^2*xz*xb*xz^-1*xa*xz^-1*xa^3*xb^-1*xa*xz, xa^-1*xz^-1*xb*xz*xa^-1*xz^-1*xb*xz*xa^-1*xb, xb*xa^-1*xb*xa^-2*xz*xb^-2*xz*xa*xz^-1*xa*xz^-1, xz*xa*xz*xa^2*xb^-1*xa*xz*xa^-1*xz*xa^-1*xz^-1*xb, xb*xz*xa^-1*xb^-1*xz*xa^-1*xz*xb^-1*xz*xa^-1*xz^-1*xb, xb^-1*xa^-1*xb*xa^-2*xb*xz^-1*xa*xz^-1*xa*xz^-1*xb^-1, xz^-1*xa^-1*xb*xa^-2*xz^-1*xb^-2*xz*xa^-1*xb^-1*xz*xa*xb^-1, xb*xa^-1*xz^-1*xb*xa*xz^-1*xb^-1*xz*xa^-1*xb*xz^-1*xa*xz^-1*xb*xa^-1, xb^-1*xz*xa^-1*xz*xb^-1*xz*xa*xz^-1*xb^-2*xz*xa^2*xz^-1*xb^-2*xz*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); Z:=psi(xz); print "\nFor the fpp (C18,p=3,\emptyset,d_3 D_3)"; print "**************************************"; // Here are the generators of Pi: s1:=a; s2:=Z*a*Z^-1; s3:=b*Z*a*Z^-1*b^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,26] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), s3^3*s2^-1, s1^-1*s2^2*s1^-1, s1*s2^2*s1^-3, s1*s3*s1*s3^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s3^3*s2^-1*s1^-1, (s1*s2^-1)^2, s1*s3^-1*s1*s3*s1^-2, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s3^-1*s1^-2, s2*s3^3*s1^-2, s2*s3^-1*s2*s3*s1^-2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 52 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,3,3,3,3,6] // The class (C18,p=3,\{2\}) // ************************* print "\nFor the class (C18,p=3,\{2\})"; print "***************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ (xa^-1*xc^-1)^3, (xa^-1*xb^-1*xc*xa^-1*xb)^3, (xb^-1*xa^-1*xc*xa^-1*xb^-1)^3, xc^-1*xb*xa*xb*xc*xa^-1, xa^-1*xb^-1*xa*xb^2*xa*xc^-1*xa*xb*xa^-1*xb*xc^-1*xa^-1*xc^-1*xb, xa^-1*xc*xb*xc*xa^-2*xc*xa*xc*xb^-1*xa*xc^-1*xb*xa*xb^-1, xa*xc^-1*xb*xa*xc^-1*xa*xb^2*xc*xa^-2*xb*xc^-1*xa^-1*xc^-1, xa*xc^-1*xb*xa*xc^-2*xa^-1*xb^-1*xc*xa^-1*xb^-1*xc*xa^-1*xc*xa*xb^-1, xb^-1*xa^-1*xc*xb^-1*xa^2*xc^-1*xb^-1*xa*xc^-1*xa*xb^3*xc^-2, xb^2*xc^-1*xa^-1*xc^-1*xb*xa^-1*xb^-2*xc*xa^-1*xc^-1*xa^-1*xb^-1*xa*xc^-1, xb^-2*xa^-1*xb^-1*xa^-1*xb^-1*xa^2*xc^-1*xa*xc^-1*xa*xb^2*xa*xc^-1, xb^-1*xc^2*xb^-3*xa^-1*xc^2*xb^-1*xc*xb^-1*xc*xa^-1*xb*xa^-1*xb^-1, xc^-1*xa*xc^-1*xb*xa*xb^-1*xa^-1*xc*xa^-1*xb^-1*xc*xa^-1*xc^-1*xb^-1*xa^-1*xc*xa^-1, xb^-3*xa^-1*xc*xa^-1*xb^-1*xa*xc^-1*xb^-1*xc^2*xb^-3*xa^-1*xc*xa^-1, xc^-1*xa^-1*xb^-1*xa^2*xc^-1*xb*xc^-2*xa^-1*xb^-1*xc^2*xa^-2*xc^-1*xa^-1*xb^-1, xb*xc*xa^-2*xc^-1*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xc^-2*xb^-1*xa^-2*xb^-1*xc, xb*xc*xa^-2*xb*xa^-1*xc^-2*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xc^-1*xa^-1*xc^-1*xb*xc^2, xb*xc^-2*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xc^-1*xb^-1*xc*xa*xc*xb^-1*xa*xb, xa^2*xc^-1*xb^-1*xc^-1*xa^2*xc^-1*xb*xc^-1*xa^2*xc^-1*xb^-1*xa*xc^-1*xb^-2*xa^-1*xb^-1, xb^-1*xc^-1*xb*xc*xa^-1*xb^-1*xa^-1*xb*xa*xc*xb^-1*xa^-1*xc^-2*xa*xb^3*xa*xc, xa*xb*xa^-1*xb^-1*xa*xb*xa*xc^-1*xb^-1*xc^2*xb^-2*xa^-1*xb*xa*xc*xa*xb*xc, xc^-1*xa*xb*xc^-1*xb*xa*xc^2*xb^-1*xa*xc^-1*xb^-1*xc^2*xa*xb^-1*xa^-1*xc^-1*xa^-1*xb^-1*xa, xa^-1*xb^-1*xc*xa^-1*xb*xc^-2*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xa^-1*xb^-2*xc*xb}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (C18,p=3,\{2\},D_3)"; print "*****************************"; // Here are the generators of Pi: s1:=b; s2:=c*a^-1; s3:=a*c*a; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [78] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s2^-1,s1^-1), (s3^-1,s1^-1), (s3^-1,s2^-1), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s1*s2*s1*s2^-1*s1^-2, s1*s3*s1*s3^-1*s1^-2, s1*s3*s2*s3^-1*s2^-1*s1^-1, s1*s2^-1*s1*s2*s1^-2, s1*s3^-1*s2*s3*s2^-1*s1^-1, s2*s3*s1*s3^-1*s2^-1*s1^-1, s2*s3*s2*s3^-1*s2^-2, s2*s1^-1*s2*s1*s2^-2, s3*s2^-1*s1*s2*s3^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 78 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,3,3,3,3] print "\nFor the fpp (C18,p=3,\{2\},(dD)_3)"; print "********************************"; // Here are the generators of Pi: s1:=a; s2:=b; s3:=c^-1*b*c; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2^-1,s1^-1), s3*s2^-1, s1^3, s2^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 6 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,39] print "\nFor the fpp (C18,p=3,\{2\},(d^2D)_3)"; print "**********************************"; // Here are the generators of Pi: s1:=c; s2:=a*b*a^-1; s3:=a*c*a^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2^-1,s1^-1), s1^3, s1*s3*s1, s2^2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 6 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [3,39] // The class (C18,p=3,\{2I\}) // ************************** print "\nFor the class (C18,p=3,\{2I\})"; print "****************************"; // The one fpp in this class may be realized as an index 9 subgroup // of either the $\bar\Gamma$ of the class (C18,p=3,\emptyset) or // as an index 3 subgroup of the $\bar\Gamma$ of the class (C18,p=3,\{2\}) print "\nFor the fpp (C18,p=3,\{2I\})"; print "**************************"; // First realization: Here again is the presentation of \bar\Gamma // of the class (C18,p=3,\emptyset): F:=FreeGroup(3); relnlist:={ xz^3, (xb*xz)^3, xa^2*xz*xb*xz^-1*xa*xz^-1*xa^3*xb^-1*xa*xz, xa^-1*xz^-1*xb*xz*xa^-1*xz^-1*xb*xz*xa^-1*xb, xb*xa^-1*xb*xa^-2*xz*xb^-2*xz*xa*xz^-1*xa*xz^-1, xz*xa*xz*xa^2*xb^-1*xa*xz*xa^-1*xz*xa^-1*xz^-1*xb, xb*xz*xa^-1*xb^-1*xz*xa^-1*xz*xb^-1*xz*xa^-1*xz^-1*xb, xb^-1*xa^-1*xb*xa^-2*xb*xz^-1*xa*xz^-1*xa*xz^-1*xb^-1, xz^-1*xa^-1*xb*xa^-2*xz^-1*xb^-2*xz*xa^-1*xb^-1*xz*xa*xb^-1, xb*xa^-1*xz^-1*xb*xa*xz^-1*xb^-1*xz*xa^-1*xb*xz^-1*xa*xz^-1*xb*xa^-1, xb^-1*xz*xa^-1*xz*xb^-1*xz*xa*xz^-1*xb^-2*xz*xa^2*xz^-1*xb^-2*xz*xa}; G,psi:=quo; a:=psi(xa); b:=psi(xb); Z:=psi(xz); // Here are the generators of Pi: s1:=b*Z*a^-1*b^-1; s2:=Z*b*Z^-1; s3:=b^-1*Z*b^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 9 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [3,6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s2,s1^-1), s2*s1*s3^-1, s1^-1*s3*s2^-1, s2^-1*s3*s1^-1, s3^-1*s1*s2>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,6,234] print "\nFor the fpp (C18,p=3,\{2I\}) (second realization)"; print "***********************************************"; // We now use the \bar\Gamma of (C18,p=3,\{2\}). F:=FreeGroup(3); relnlist:={ (xa^-1*xc^-1)^3, (xa^-1*xb^-1*xc*xa^-1*xb)^3, (xb^-1*xa^-1*xc*xa^-1*xb^-1)^3, xc^-1*xb*xa*xb*xc*xa^-1, xa^-1*xb^-1*xa*xb^2*xa*xc^-1*xa*xb*xa^-1*xb*xc^-1*xa^-1*xc^-1*xb, xa^-1*xc*xb*xc*xa^-2*xc*xa*xc*xb^-1*xa*xc^-1*xb*xa*xb^-1, xa*xc^-1*xb*xa*xc^-1*xa*xb^2*xc*xa^-2*xb*xc^-1*xa^-1*xc^-1, xa*xc^-1*xb*xa*xc^-2*xa^-1*xb^-1*xc*xa^-1*xb^-1*xc*xa^-1*xc*xa*xb^-1, xb^-1*xa^-1*xc*xb^-1*xa^2*xc^-1*xb^-1*xa*xc^-1*xa*xb^3*xc^-2, xb^2*xc^-1*xa^-1*xc^-1*xb*xa^-1*xb^-2*xc*xa^-1*xc^-1*xa^-1*xb^-1*xa*xc^-1, xb^-2*xa^-1*xb^-1*xa^-1*xb^-1*xa^2*xc^-1*xa*xc^-1*xa*xb^2*xa*xc^-1, xb^-1*xc^2*xb^-3*xa^-1*xc^2*xb^-1*xc*xb^-1*xc*xa^-1*xb*xa^-1*xb^-1, xc^-1*xa*xc^-1*xb*xa*xb^-1*xa^-1*xc*xa^-1*xb^-1*xc*xa^-1*xc^-1*xb^-1*xa^-1*xc*xa^-1, xb^-3*xa^-1*xc*xa^-1*xb^-1*xa*xc^-1*xb^-1*xc^2*xb^-3*xa^-1*xc*xa^-1, xc^-1*xa^-1*xb^-1*xa^2*xc^-1*xb*xc^-2*xa^-1*xb^-1*xc^2*xa^-2*xc^-1*xa^-1*xb^-1, xb*xc*xa^-2*xc^-1*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xc^-2*xb^-1*xa^-2*xb^-1*xc, xb*xc*xa^-2*xb*xa^-1*xc^-2*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xc^-1*xa^-1*xc^-1*xb*xc^2, xb*xc^-2*xa^-1*xb^-1*xc*xb^-1*xa^-1*xb*xa*xb^-1*xa^-1*xc^-1*xb^-1*xc*xa*xc*xb^-1*xa*xb, xa^2*xc^-1*xb^-1*xc^-1*xa^2*xc^-1*xb*xc^-1*xa^2*xc^-1*xb^-1*xa*xc^-1*xb^-2*xa^-1*xb^-1, xb^-1*xc^-1*xb*xc*xa^-1*xb^-1*xa^-1*xb*xa*xc*xb^-1*xa^-1*xc^-2*xa*xb^3*xa*xc, xa*xb*xa^-1*xb^-1*xa*xb*xa*xc^-1*xb^-1*xc^2*xb^-2*xa^-1*xb*xa*xc*xa*xb*xc, xc^-1*xa*xb*xc^-1*xb*xa*xc^2*xb^-1*xa*xc^-1*xb^-1*xc^2*xa*xb^-1*xa^-1*xc^-1*xa^-1*xb^-1*xa, xa^-1*xb^-1*xc*xa^-1*xb*xc^-2*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xa^-1*xb^-2*xc*xb}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); // Here are the generators of Pi: s1:=a; s2:=b; s3:=c^-1*b*c^-1; Pi:=sub< G | s1,s2,s3>; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [3,6] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s1,s3^-1), (s3,s1^-1), (s2^-1,s1^-1), s2^2, s1*s2*s1^2*s2^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,6,234] // The class (C20,p=2,\emptyset) // ***************************** print "\nFor the class (C20,p=2,\emptyset)"; print "********************************"; // The group $\bar\Gamma$: F:=FreeGroup(2); relnlist:={ xb^3, xz^7, (xb*xz^3*xb*xz^-1)^3, (xb*xz^3*xb*xz^-2)^3, xb*xz^-3*xb*xz^-3*xb*xz^-1*xb^-1*xz^-3*xb^-1*xz*xb*xz^3*xb*xz^3, xb*xz^3*xb*xz*xb^-1*xz^-3*xb^-1*xz^3*xb^-1*xz^3*xb^-1*xz^3*xb^-1*xz^3}; G,psi:=quo; b:=psi(xb); z:=psi(xz); print "\nFor the fpp (C20,p=2,\emptyset,D_3 2_7)"; print "**************************************"; // Here are the generators of Pi: s1:=z*b*z^3*b^-1; s2:=b^-1*z^2*b*z^-1; s3:=z^-1*b^-1*z^2*b; s4:=z^-2*b*z*b^-1; s5:=b*z^3*b^-1*z; s6:=b*z^-2*b*z*b; Pi:=sub< G | s1,s2,s3,s4,s5,s6 >; print "The index of Pi in G is",Index(G,Pi); // Output: 21 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,2,2,2,2,2] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s1,s5), (s1,s6), (s2,s3), (s2,s5), (s4,s5), (s4,s6), (s2,s6^-1), (s3^-1,s2^-1), (s4^-1,s2^-1), (s4^-1,s3^-1), (s5^-1,s1^-1), (s6^-1,s1^-1), s1^2, s2^2, s3^2, s4^2, s5^2, s6^2, s1*s2*s1*s2^-1, s1*s4*s1*s4^-1, s1*s5*s1*s5^-1, s2*s3*s2*s3^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 18 // Checking that Pid is normal in Pi"; print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi"; // Output: true // Checking that Pi/Pid is abelian"; print "It is", (((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s1,s5) in Pid) and ((s1,s6) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s2,s5) in Pid) and ((s2,s6) in Pid) and ((s3,s4) in Pid) and ((s3,s5) in Pid) and ((s3,s6) in Pid) and ((s4,s5) in Pid) and ((s4,s6) in Pid) and ((s5,s6) in Pid)),"that Pi/Pid is abelian"; // Output: true print "So Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4] // The class (C20,p=2,\{3+\}) // ************************** print "\nFor the class (C20,p=2,\{3+\})"; print "****************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb^3, xa^-2*xb*xc^2*xb*xc^2*xa*xc^-1*xb, xc*xa*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1, xa^-1*xc*xa*xc^2*xa*xc^-1*xa*xb*xc*xa^-1*xc^-2*xb^-1, xc^-1*xa*xb*xc*xa^-1*xc^-1*xa*xc*xa^-1*xc^-2*xb^-1*xa^2, xa*xb^-1*xc^2*xa^-1*xc^-2*xb^-1*xa^3*xb*xa*xb, xb*xc^2*xa*xc^-3*xb^-1*xa^2*xc^2*xa*xc^-1, (xb*xc^3*xa^-1)^3, xc^-1*xa*xc^-1*xb*xa^-2*xc*xa^-1*xc^-2*xa^-1*xc^-3*xb^-1*xa, xa^-1*xc*xa^-1*xc^-2*xb*xa^-1*xc*xa^-1*xc^-3*xb^-1*xa^-1*xc*xa^-1, xa^-1*xc^-1*xa*xb*xc^-1*xb^-1*xa^-1*xc*xa^-1*xb*xc*xb*xa^-1*xb*xc*xa^-1*xc^-1, xb*xc^-1*xb^-1*xa^-1*xc*xa^-1*xb*xc*xa^-1*xc^-1*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xc*xa^-1*xb*xc^2, xa^-1*xc*xa^-2*xc^-2*xb^-1*xa^2*xc*xa*xb*xa^-2*xc*xa^-1*xc^-2*xa^-2, (xb*xa^-1*xb^-1*xa^-2*xb*xc)^3, xc^-1*xb^-1*xa^-1*xc^-2*xb^-1*xa^2*xc*xa*xc^-1*xb^-1*xa*xb^-1*xa^-1*xc^-1*xb^-1*xa^-1*xb^-1*xa^-1*xc*xa, xb*xa^-1*xc^-1*xa*xc^-1*xb*xa^-1*xb*xa*xb*xc*xa^-1*xc^-1*xa*xb*xc^-1*xb^-1*xa^-1*xb^-1*xa^-1*xc*xa*xc}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (C20,p=2,\{3+\},D_3)"; print "******************************"; // Here are the generators of Pi: s1:=c; s2:=b^-1*a*b; s3:=b^-1*c*b; Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [28] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s2,s3^-1), (s3,s1^-1), (s3,s2^-1), s2^3*s1^-1, s3^3*s2^-1, s1*s2^3*s1^-2, s1*s3^3*s2^-1*s1^-1, s1*s2^-1*s3*s2*s3^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 28 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [4,4,156] print "\nFor the fpp (C20,p=2,\{3+\},(3+)_3)"; print "*********************************"; // Here are the generators of Pi: s1:=b*c*b; s2:=b^-1*a*b^-1; s3:=b^-1*c*b^-1; Pi:=sub< G | s1,s2,s3 >; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [2,12] Pid:=sub< G | (s1,s2), (s1,s3), (s2,s3), (s1,s2^-1), (s1,s3^-1), (s2,s1^-1), (s3,s1^-1), (s3,s2^-1), (s2^-1,s1^-1), s1^2*s2^2, s2^-1*s3^2*s2^-1, s1^2*s3^2, (s1*s2)^2, (s1*s3)^2, s1*s3^-1*s2*s3*s2^-1*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 24 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is", (((s1,s2) in Pid) and((s1,s3) in Pid) and ((s2,s3) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,364] // The class (C20,p=2,\{3-\}) // ************************** print "\nFor the class (C20,p=2,\{3-\})"; print "****************************"; // The group $\bar\Gamma$: F:=FreeGroup(3); relnlist:={ xb*xa*xb^-1*xc^2*xa^-1, (xc*xb^-1*xa)^3, (xb^-1*xc*xa*xc^-2)^3, xb^-1*xa*xb*xa*xb^-1*xa*xc*xa*xb^-2*xc*xa*xc^-2*xa*xc*xa, xa^-1*xc^2*xa^-1*xc^-1*xb*xa*xc*xa*xc^-1*xb^-1*xc*xb*xa*xb^-1*xa*xc, xc^-1*xa^-1*xc^2*xa^-2*xb*xa^-1*xc^-1*xa^-1*xb*xa^-1*xb^-1*xc^-1*xb^2*xa^-1, xa*xc^-1*xb*xa*xb^-1*xa*xc*xb^-1*xc^-1*xb^-1*xc*xa*xc^-2*xa*xc*xb^-1*xc^-1, xb^-1*xc^-1*xb*xc*xb^-1*xa*xc*xa^-1*xb^-1*xc*xa^-1*xc^2*xa*xc^-2*xa*xc*xb^-1*xc^-1, xc*xb^-1*xa*xc^-1*xb*xa^-2*xc^-1*xa^-1*xb*xa^-1*xb^-1*xa^-1*xb^-1*xa^-1*xb*xa^-1*xb^-1*xc^-1*xb*xc, xa^-1*xc^-1*xa^-1*xc^2*xb^-1*xa*xb*xa*xc^-1*xa^-1*xb*xc^-1*xb^-1*xa*xc*xa^-1*xb^-1*xc^-1*xb*xa^-1, xa*xb*xc^2*xa^-1*xc^-1*xb*xa*xb^2*xa^-1*xb^-1*xc^-1*xb*xa*xb^2*xa^-1*xb^-1*xc^-1*xb, xb*xc^2*xa^-1*xc^-1*xb*xa*xb*xa*xc^-1*xa^-1*xb*xa^-1*xb^-1*xc^-1*xb*xc^-1*xb^-1*xc*xb*xa*xb^-1*xa, xb^-1*xc^-1*xb*xc^2*xb^-1*xa*xc*xa^-1*xb^-1*xc*xa^-1*xb^-1*xc*xa^-1*xb^-1*xa^-1*xb^-1*xc*xa*xc^-2*xb^-1*xc, xb^2*xa^-1*xb^-1*xc^-1*xa^-1*xb*xa^-1*xb^-1*xc^-1*xb*xc*xb^-1*xc*xb^2*xa*xc^-1*xa^-1*xb*xa^-1*xb^-1*xc*xa^-1, (xb^-1*xa*xb*xa*xc^-1*xa^-1*xb*xc^-1)^3, xc^-1*xa*xb^-1*xc*xb*xa*xb^-1*xa*xc*xb^-2*xc*xb*xa*xb^-1*xa*xb*xa*xc^-1*xb*xa*xc^-1*xa^-1*xb*xc^-1, xc^2*xb^-1*xa*xc*xa^-1*xb^-1*xc*xb^-2*xa*xc^-1*xb*xa*xb^-1*xa*xc*xa^-1*xb^-1*xa^-1*xb^-2*xc*xa^-1*xb, xc*xa^-1*xc^-1*xa^-1*xb^-1*xc*xb*xc^-1*xa^-1*xb^-1*xc*xa*xc^-2*xa*xc*xa*xc^-1*xb^-1*xa*xc^-1*xa*xc^-2*xa*xc*xb^-1, xc*xa^-1*xc^-1*xa^-1*xb^-1*xc*xb*xc^-1*xa^-1*xc^2*xb^-1*xa^2*xc^-2*xa*xc*xa*xc^-1*xa^-1*xb*xa^-1*xb^-1*xc*xa^-1*xb}; G,psi:=quo; a:=psi(xa); b:=psi(xb); c:=psi(xc); print "\nFor the fpp (C20,p=2,\{3-\},D_3)"; print "******************************"; // Here are the generators of Pi: s1:=a; s2:=c; Pi:=sub< G | s1,s2 >; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [28] Pid:=sub< G | (s1,s2), (s1,s2^-1), (s2,s1^-1), (s2^-1,s1^-1), s1*s2*s1*s2^-1*s1^-2, s1*s2^-1*s1*s2^-2, s2^2*s1*s2^-2*s1^-1, s2*s1^-1*s2^2*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 28 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(s1,s2) in Pid,"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [4,4,156] print "\nFor the fpp (C20,p=2,\{3-\},(3-)_3)"; print "*********************************"; // Here are the generators of Pi: s1:=a; s2:=b*a*c^-1; s3:=b^2; s4:=c^2*b^-1; Pi:=sub< G | s1,s2,s3,s4 >; print "The index of Pi in G is",Index(G,Pi); // Output: 3 print "AbelianQuotientInvariants(Pi) =",AbelianQuotientInvariants(Pi); // Output: [24] Pid:=sub< G | (s1,s2), (s1,s3), (s1,s4), (s2,s3), (s2,s4), (s3,s4), (s1,s2^-1), (s2,s1^-1), (s3,s1^-1), (s3,s2^-1), (s3,s4^-1), (s4,s1^-1), (s3^-1,s1^-1), s1*s2*s4, s2*s1*s4, s4*s1*s2, s4*s3*s4, s1^-1*s3*s4*s2^-1, s2^-1*s3*s4*s1^-1>; print "The index of Pid in Pi is",Index(G,Pid)/Index(G,Pi); // Output: 24 print "It is",IsNormal(Pi,Pid),"that Pid is normal in Pi";// Output: true print "It is",(((s1,s2) in Pid) and ((s1,s3) in Pid) and ((s1,s4) in Pid) and ((s2,s3) in Pid) and ((s2,s4) in Pid) and ((s3,s4) in Pid)),"that Pi/Pid is abelian"; // Output: true print "Therefore Pid is the commutator subgroup [Pi,Pi] of Pi, and"; print "AbelianQuotientInvariants([Pi,Pi]) is", AbelianQuotientInvariants(Pid); // Output: [2,2,364]