// this script computes all non-cyclic abelian tiling groups // for genus 2 <= sigma <= 13 filetitle := "Classification of 2-generator Abelian Triangular Actions on Sufaces from Genus 2 to 13"; SetLogFile("abelian2.log":Overwrite := true); FW := Open("abelian2.act","w"); FWR := Open("abelian2.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"; 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); L := Lcm(ords); if (Position(note,"is_cyclic")+ Position(note,"not_abelian") eq 0) then A2L := AbelianGroups2Gen(g); for A in A2L do inv := Invariants(A); if (Exponent(A) mod L) gt 0 then continue; end if; print " ... ", note; print "abelian (2-gen) group of order ",g; triset, normforms := AbelianGroup2GenTriples(A,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 = 2 generator abelian group Z_%-2o x Z_%-2o \n", inv[1],inv[2]; 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 Z_%-2ox Z_%-2o %2o %2o %2o \n", sig, g, ords,inv[1],inv[2],kal,nkal, kal+nkal; end if; end for; end if; 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();