def double_moves(): for m in CUBE2_GENERATORS: print(px_wreath_mul(m[0], m[1], m[0], m[1], 3))
def cube2_group_nbrs(s): so, sp = s return [px_wreath_mul(no, np, so, sp, 3) for (no, np) in CUBE2_KGROUP_GENERATORS]
def cube2_double_nbrs(s): so, sp = s return [px_wreath_mul(no, np, so, sp, 3) for (no, np) in CUBE2_DOUBLE_GENERATORS]
def cube2_check_small(s): so, sp = s return [px_wreath_mul(no, np, so, sp, 3) for (no, np) in CUBE2_CHECK_SMALL]
def cube3_edge_nbrs(s): et, ep = s return [px_wreath_mul(net, nep, et, ep, 2) for (net, nep) in CUBE3_EDGE_GENS]
def cube3_half_nbrs(s): ct, cp, et, ep = s return [(*px_wreath_mul(nct, ncp, ct, cp, 3), *px_wreath_mul(net, nep, et, ep, 2)) for (nct, ncp, net, nep) in CUBE3_HALFS]