// this script checks all genus 5 generating triples // setup SetLogFile("genus5check.log":Overwrite := true); CheckTriple := function(sigma,g,ords,G,a,b,c); print sigma,g,ords; print G, [a,b,c]; l := ords[1]; m := ords[2]; n := ords[3]; RH := (2*sigma-2)/g -(1-1/l-1/m-1/n); return([ RH eq 0, g eq #G, #G eq #sub, l eq Order(a),m eq Order(b), n eq Order(c), a*b*c eq Identity(G)]); end function; // tests print "###case 1"; G := CyclicGroup(11); CheckTriple(5,11,[11,11,11],G,x,x,x^9); print "###case 2"; G := CyclicGroup(11); CheckTriple(5,11,[11,11,11],G,x,x^2,x^8); print "###case 3"; G := CyclicGroup(12); CheckTriple(5,12,[6,12,12],G,x^2,x^5,x^5); print "###case 4"; G := CyclicGroup(15); CheckTriple(5,15,[3,15,15],G,x^5,x^2,x^8); print "###case 5"; G := AbelianGroup([8,2]); CheckTriple(5,16,[4,8,8],G,2*x+y,x,5*x+y); print "###case 6"; G := PolycyclicGroup; x := a; y := b; CheckTriple(5,16,[4,8,8],G,x*y^2,x*y,y^5); [Order(x),Order(y)]; [y^x,y^5]; print "###case 7"; G := CyclicGroup(20); CheckTriple(5,20,[2,20,20],G,x^10,x,x^9); print "###case 8"; G := PolycyclicGroup; x := a; y := c; CheckTriple(5,20,[4,4,10],G,x,x*y,x^2*y^4); [Order(x),Order(y)]; [y^x,y^(-1)]; print "###case 9"; G := CyclicGroup(22); CheckTriple(5,22,[2,11,22],G,x^11,x^2,x^9); print "###case 10"; G := AbelianGroup([12,2]); CheckTriple(5,24,[2,12,12],G,6*x+y,x,5*x+y); print "###case 11"; G := PolycyclicGroup; CheckTriple(5,24,[3,6,6],G,x,x*y*z*w,x*y*z); print "###case 12"; G := PolycyclicGroup; x := a; y := c*d; CheckTriple(5,24,[4,4,6],G,x,(y*x)^(-1),y); [Order(x),Order(y)]; [y^x,y^(-1)]; print "###case 13"; G := PolycyclicGroup; x := a*b; y := c; CheckTriple(5,30,[2,6,15],G,x^3,x*y,x^2*y^(-1)); [Order(x),Order(y)]; [y^x,y^(-1)]; print "###case 14"; G := PolycyclicGroup; x := a; y := d; z := e; CheckTriple(5,32,[2,8,8],G,y,(x*y)^(-1),x); [Order(x),Order(y), Order(z)]; [y^x,y*z]; print "###case 15"; G := SmallGroup(32,7); CheckTriple(5,32,[2,8,8],G,y,x*v,x*y*w*v); print "###case 16"; G := SmallGroup(32,2); x := a; y := b; z := c; CheckTriple(5,32,[4,4,4],G,y,x*y^2,x^3*y); [Order(x),Order(y),Order(z)]; [y^x,y*z]; print "###case 17"; G := SmallGroup(32,6); x := a; y := b; z := c; w := e; CheckTriple(5,32,[4,4,4],G,x,x*y,(x^2*y)^(-1)); [Order(x),Order(y), Order(z),Order(w)]; [y^x,y*z]; [z^x,z*w]; print "###case 18"; G := PolycyclicGroup; x := a; y := b*d; CheckTriple(5,40,[2,4,20],G,x,x*y^(-1),y); [Order(x),Order(y)]; [y^x,y^9]; print "###case 19"; G := PolycyclicGroup; x := a; y := b*d; z := e; CheckTriple(5,48,[2,4,12],G,x,(y*z*x)^(-1),y*z); [Order(x),Order(y), Order(z)]; [y^x,y^5*z]; [z^x,z]; print "###case 20"; G := SmallGroup(48,30); CheckTriple(5,48,[3,4,4],G,z,x*w*v,x*y*z^2*v); print "###case 21"; G := SmallGroup(48,30); CheckTriple(5,48,[3,4,4],G,z,x*z*w,x*y*v); print "###case 22"; G := AlternatingGroup(5); x := G!(1,2,3); y := G!(3,4,5); CheckTriple(5,60,[3,3,5],G,x,y,(x*y)^(-1)); print "###case 23"; G := SmallGroup(64,8); CheckTriple(5,64,[2,4,8],G,y,x*z*u,x*y*z*w); print "###case 24"; G := PolycyclicGroup; x := a; y := c; z := d; w:= e; v := f; CheckTriple(5,64,[2,4,8],G,y,x,(y*x)^(-1)); [Order(x),Order(y), Order(z),Order(w),Order(v)]; [y^x,y*z]; [z^x,z*w]; [w^x,w*v]; [v^x,v]; print "###case 25"; G := SmallGroup(80,49); CheckTriple(5,80,[2,5,5],G,y,x*y*w,x^4*z*w*v); print "###case 26"; G := PolycyclicGroup; CheckTriple(5,96,[2,4,6],G,x,x*y*z*v,(y*z*v)^(-1)); print "###case 27"; G := SmallGroup(96,3); CheckTriple(5,96,[3,3,4],G,x,x^2*z*u,(z*u)^(-1)); print "###case 28"; P := SymmetricGroup(7); G := sub

; CheckTriple(5,120,[2,3,10],G,x*z,(y*x)^(-1), y*z); print "###case 29"; G := SmallGroup(160,234); CheckTriple(5,160,[2,4,5],G,x,x*y^4*w*v,y*w*u); print "###case 30"; G := SmallGroup(192,181); CheckTriple(5,192,[2,3,8],G,x,y*z*v*t,x*y*z*w*v); // finish UnsetLogFile();