with(combinat); pet_autom2cycles := proc(src, aut) local numa, numsubs; local marks, pos, cycs, cpos, clen; numsubs := [seq(src[k]=k, k=1..nops(src))]; numa := subs(numsubs, aut); marks := Array([seq(true, pos=1..nops(aut))]); cycs := []; pos := 1; while pos <= nops(aut) do if marks[pos] then clen := 0; cpos := pos; while marks[cpos] do marks[cpos] := false; cpos := numa[cpos]; clen := clen+1; od; cycs := [op(cycs), clen]; fi; pos := pos+1; od; return mul(a[cycs[k]], k=1..nops(cycs)); end; pet_cube_symact := proc(cv, symp, symf) local bincbverts, bin, f; bincbverts := [[0,0,0], [0,0,1], [0,1,0], [0,1,1], [1,0,0], [1,0,1], [1,1,0], [1,1,1]]; bin := bincbverts[cv]; bin := [seq(bin[symp[q]], q=1..3)]; for f to 3 do if f in symf then bin[f] := 1 - bin[f]; fi; od; 1 + bin[1]*4 + bin[2]*2 + bin[3]; end; pet_cycleind_tcube_verts := proc() local bincbverts, cbedg, sl, perm, flip, cind, verts, vperm; cbedg := [{1,2}, {1,3}, {1,5}, {2,4}, {2,6}, {3,4}, {3,7}, {4,8}, {5,6}, {5,7}, {6,8}, {7,8}]; verts := [seq(seq([edg, v], v in edg), edg in cbedg)]; cind := 0; for perm in permute(3) do for flip in powerset(3) do sl := [seq(q=pet_cube_symact(q, perm, flip), q=1..8)]; vperm := subs(sl, verts); cind := cind + pet_autom2cycles(verts, vperm); od; od; cind/48; end; pet_cycleind_tcube_faces := proc() local perm, flip, cind, sl, faces, fperm; cind := 0; faces := [1,2,3,4,5,6,7,8, {1,2,3,4}, {1,2,5,6}, {2,4,6,8}, {1,3,5,7}, {3,4,7,8}, {5,6,7,8}]; for perm in permute(3) do for flip in powerset(3) do sl := [seq(q=pet_cube_symact(q, perm, flip), q=1..8)]; fperm := subs(sl, faces); cind := cind + pet_autom2cycles(faces, fperm); od; od; cind/48; end; Xverts := subs([seq(a[q]=n, q=1..24)], pet_cycleind_tcube_verts()); Xfaces := subs([seq(a[q]=n, q=1..14)], pet_cycleind_tcube_faces()); pet_cycleind_tcube_edges := proc() local bincbverts, cbedg, sl, perm, flip, cind, edges, eperm, e1, e2, f1, f2; cbedg := [{1,2}, {1,3}, {1,5}, {2,4}, {2,6}, {3,4}, {3,7}, {4,8}, {5,6}, {5,7}, {6,8}, {7,8}]; edges := [seq(e, e in cbedg)]; for e1 to nops(cbedg) do for e2 from e1+1 to nops(cbedg) do f1 := cbedg[e1]; f2 := cbedg[e2]; if nops(f1 intersect f2) = 1 then edges := [op(edges), {f1, f2}]; fi; od; od; cind := 0; for perm in permute(3) do for flip in powerset(3) do sl := [seq(q=pet_cube_symact(q, perm, flip), q=1..8)]; eperm := subs(sl, edges); cind := cind + pet_autom2cycles(edges, eperm); od; od; cind/48; end; Xedges := subs([seq(a[q]=n, q=1..36)], pet_cycleind_tcube_edges()); A274900 := unapply(Xverts, n); A274901 := unapply(Xfaces, n); A274902 := unapply(Xedges, n);