Example #1
0
from sympy.combinatorics import Permutation, Cycle
from sympy.combinatorics.named_groups import SymmetricGroup

S5 = SymmetricGroup(5)
S5_elems = list(S5.generate_schreier_sims())
IDENTITY = Permutation(4)
ALPHA = Permutation(Cycle(0, 1, 2, 3, 4))
BETA = Permutation(Cycle(0, 2, 4, 3, 1))
ALPHA_INV = (~ALPHA)
BETA_INV = (~BETA)
COMMUTATOR = ALPHA * BETA * ALPHA_INV * BETA_INV
ELEMENTS = [ALPHA, ALPHA_INV, BETA, BETA_INV, COMMUTATOR]
CONJUGATORS = {e: {} for e in ELEMENTS}

for e1 in ELEMENTS:
    for e2 in ELEMENTS:
        for gamma in S5_elems:
            if gamma * e1 * (~gamma) == e2:
                CONJUGATORS[e1][e2] = (gamma, ~gamma)
                break


class GroupInstruction(object):
    def __init__(self, index, g0, g1):
        self.index = index
        self.g0 = g0
        self.g1 = g1

    def __str__(self):
        return str(self.index).ljust(4) + str(self.g0).ljust(15) + str(
            self.g1).ljust(13)