// this script computes all non-abelian p-group rotation and tiling groups // in the SmallGroups database for genus 2 <= sigma <= 13 filetitle := "Classification of non-Abelain p-group Triangular Actions on Sufaces from Genus 2 to 13"; SetLogFile("pgroupNA.log":Overwrite := true); FW := Open("pgroupNA.act","w"); FWR := Open("pgroupNA.rez","w"); print filetitle; fprintf FW, "%o \n", filetitle; multiactions := []; groupBDpairsingenus := []; kaleidoactionsingenus := []; nonkaleidoactionsingenus := []; actionsingenus := []; totalgroupBDpairs := 0; totalkaleidoactions := 0; totalnonkaleidoactions := 0; totalactions := 0; load "tileclass.mgm"; load "lowgengroups2.mgm"; for n := 2 to 13 do fname := "zpolybd_sig"*IntegerToString(n)*"_tau0_t3.bdat"; print " "; print "********** working on " cat fname; print " "; FR := Open(fname, "r"); Insert(~groupBDpairsingenus,n,[n,0]); Insert(~actionsingenus,n,[n,0]); Insert(~kaleidoactionsingenus,n,[n,0]); Insert(~nonkaleidoactionsingenus,n,[n,0]); repeat s := Gets(FR); if not IsEof(s) then sig, g, ords, note := ParseBData(s); ispow,p,e := IsPrimePower(g); if ispow eq false then continue; end if; if e lt 3 then continue; end if; numgrps := NumberOfLowGenGroups(g); print " ... ", note; print sig, g, ords; print "Looking at ",numgrps," groups of order ",g,"."; print " "; L :=Lcm(ords); for gpnum := 1 to numgrps do G := LowGenGroup(g,gpnum); if IsAbelian(G) or(Exponent(G) mod L gt 0) then print "Skipping group #",gpnum," of ",numgrps," groups of order ",g; continue gpnum; end if; print " "; print "Examining group #",gpnum," of ",numgrps," groups of order ",g; triset, normforms := Pgroup3Triples(G,sig,g,ords); print " "; if #normforms gt 0 then fprintf FW, "\n \n"; fprintf FW, "bdata: %2o %3o %o \n", sig, g, ords; fprintf FW, "G = non-abelian p-group SmallGroup(%o,%o) \n", g, LowGenGroupIndex(g,gpnum); fprintf FW, "%o \n", G; fprintf FW, "%-2o generating vector(s)\n", #normforms; fprintf FW, "%o \n", normforms; if IsDefined(multiactions,#normforms) then multiactions[#normforms] := [#normforms, multiactions[#normforms][2]+1]; else Insert(~multiactions,#normforms,[#normforms,1]); end if; groupBDpairsingenus[n] := [n, groupBDpairsingenus[n][2]+1]; kal :=0; nkal :=0; for x in normforms do if x[2] eq true then kal := kal +1; else nkal := nkal +1; end if; end for; kaleidoactionsingenus[n] := [n,kaleidoactionsingenus[n][2]+kal]; nonkaleidoactionsingenus[n] := [n,nonkaleidoactionsingenus[n][2]+nkal]; actionsingenus[n] := [n,kaleidoactionsingenus[n][2]+nonkaleidoactionsingenus[n][2]]; totalgroupBDpairs := totalgroupBDpairs + 1; totalkaleidoactions := totalkaleidoactions + kal; totalnonkaleidoactions := totalnonkaleidoactions + nkal; totalactions := totalkaleidoactions + totalnonkaleidoactions; fprintf FWR, "%2o %3o %14o G(%3o,%-2o) %2o %2o %2o \n", sig, g, ords,g,LowGenGroupIndex(g,gpnum),kal,nkal,kal+nkal; end if; end for; end if; until IsEof(s); end for; print " "; print "done computing, summary information to follow"; print "total groupBDpairs: ", totalgroupBDpairs; print "total actions : ", totalactions; print "total kaleidoscopic actions: ", totalkaleidoactions; print "total non kaleidoscopic actions: ", totalnonkaleidoactions; print "multiple actions: ", multiactions; print "groupBDpairs in genus: ", groupBDpairsingenus; print "actions in genus: ", actionsingenus; print "kaleidoscopic actions in genus: ", kaleidoactionsingenus; print "non-kaleidoscopic actions in genus: ", nonkaleidoactionsingenus; fprintf FW, " \n ### summary #### \n"; fprintf FW, "total groupBDpairs: %o \n\n", totalgroupBDpairs; fprintf FW, "total actions: %o \n\n", totalactions; fprintf FW, "total kaleidoscopic actions: %o \n\n", totalkaleidoactions; fprintf FW, "total non kaleidoscopic actions: %o \n\n", totalnonkaleidoactions; fprintf FW, "multiple actions: %o \n\n", multiactions; fprintf FW, "groupBDpairs in genus: %o \n\n", groupBDpairsingenus; fprintf FW, "actions in genus: %o \n\n", actionsingenus; fprintf FW, "kaleidoscopic actions in genus: %o \n\n", kaleidoactionsingenus; fprintf FW, "non-kaleidoscopic actions in genus: %o \n\n", nonkaleidoactionsingenus; delete FW; delete FWR; UnsetLogFile();