// this script checks all genus 4 generating triples // setup SetLogFile("genus4check.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(9); CheckTriple(4,9,[9,9,9],G,x,x,x^7); print "###case 2"; G := CyclicGroup(10); CheckTriple(4,10,[5,10,10],G,x^2,x,x^7); print "###case 3"; G := CyclicGroup(10); CheckTriple(4,10,[5,10,10],G,x^8,x,x); print "###case 4"; G := CyclicGroup(12); CheckTriple(4,12,[3,12,12],G,x^4,x,x^7); print "###case 5"; G := CyclicGroup(12); CheckTriple(4,12,[4,6,12],G,x^3,x^2,x^7); print "###case 6"; G := AbelianGroup([6,2]); CheckTriple(4,12,[6,6,6],G,x,x+y,4*x+y); print "###case 7"; G := CyclicGroup(15); CheckTriple(4,15,[3,5,15],G,x^5,x^3,x^7); print "###case 8"; G := CyclicGroup(16); CheckTriple(4,16,[2,16,16],G,x^8,x^3,x^5); print "###case 9"; G := SmallGroup(16,9); CheckTriple(4,16,[4,4,8],G,y,x*z*w,x*y*z); print "###case 10"; G := CyclicGroup(18); CheckTriple(4,18,[2,9,18],G,x^9,x^2,x^7); print "###case 11"; G := AbelianGroup([6,3]); CheckTriple(4,18,[3,6,6],G,y,x+y,5*x+y); print "###case 12"; G := DirectProduct(SymmetricGroup(3),CyclicGroup(3)); CheckTriple(4,18,[3,6,6],G,x*z,y*z,y*x^2*z); print "###case 13"; G := DirectProduct(SymmetricGroup(3),CyclicGroup(3)); CheckTriple(4,18,[3,6,6],G,x,y*z^2,y*x^2*z); print "###case 14"; G := AbelianGroup([10,2]); CheckTriple(4,20,[2,10,10],G,y,x+y,9*x); print "###case 15"; G := PolycyclicGroup; x := a; y := c; CheckTriple(4,20,[4,4,5],G,x,(y*x)^(-1),y); [Order(x),Order(y)]; [y^x,y^(-1)]; print "###case 16"; G := PolycyclicGroup; x := a; y := c; CheckTriple(4,20,[4,4,5],G,x,(y*x)^(-1),y); [Order(x),Order(y)]; [y^x,y^2]; print "###case 17"; G := PolycyclicGroup; x := a; y := b; CheckTriple(4,24,[2,6,12],G,x,x*y^(-1),y); [Order(a),Order(y)]; [y^x,y^7]; print "###case 18"; G := SmallGroup(24,3); CheckTriple(4,24,[3,4,6],G,x,y*w,(x*y*w)^(-1)); print "###case 19"; G := PolycyclicGroup; x := a; y := b; CheckTriple(4,32,[2,4,16],G,x,x*y^(-1),y); [Order(x),Order(y)]; [y^x,y^7]; print "###case 20"; G := SmallGroup(36,10); CheckTriple(4,36,[2,6,6],G,x*y,y*z*w^2,x*z^2*w^2); print "###case 21"; G := SmallGroup(36,12); CheckTriple(4,36,[2,6,6],G,x,y*z*w^2,x*y*z^2*w^2); print "###case 22"; G := SmallGroup(36,11); CheckTriple(4,36,[3,3,6],G,x,x^2*y*z*w,y^2*z*w); print "###case 23"; G := SmallGroup(36,9); x := a; y := c; z := d; CheckTriple(4,36,[3,4,4],G,y,(x*y)^(-1),x); [Order(x),Order(y),Order(z)]; [y^x,y*z^2]; [z^x,y^2*z^2]; print "###case 24"; G := SmallGroup(40,8); CheckTriple(4,40,[2,4,10],G,x,x*y*z*w,y*z*w^4); print "###case 25"; G := AlternatingGroup(5); x := G!(1,2)(3,4); y := G!(1,2,3,4,5); CheckTriple(4,60,[2,5,5],G,x,x*y^2,y^3); print "###case 26"; G := SmallGroup(72,42); CheckTriple(4,72,[2,3,12],G,x,y*z^2*w*v,x*y^2*z^2*v); print "###case 27"; G := SmallGroup(72,40); CheckTriple(4,72,[2,4,6],G,y,x*y*z*w^2*v^2,x*w^2*v); print "###case 28"; G := SymmetricGroup(5); x := G!(1,2); y := G!(1,2,3,4,5); CheckTriple(4,120,[2,4,5],G,x,(y*x)^(-1),y); // finish UnsetLogFile();