예제 #1
0
def test_center():
    # the center of the dihedral group D_n is of order 2 for even n
    for i in (4, 6, 10):
        D = DihedralGroup(i)
        assert (D.center()).order() == 2
    # the center of the dihedral group D_n is of order 1 for odd n>2
    for i in (3, 5, 7):
        D = DihedralGroup(i)
        assert (D.center()).order() == 1
    # the center of an abelian group is the group itself
    for i in (2, 3, 5):
        for j in (1, 5, 7):
            for k in (1, 1, 11):
                G = AbelianGroup(i, j, k)
                assert G.center().is_subgroup(G)
    # the center of a nonabelian simple group is trivial
    for i in(1, 5, 9):
        A = AlternatingGroup(i)
        assert (A.center()).order() == 1
    # brute-force verifications
    D = DihedralGroup(5)
    A = AlternatingGroup(3)
    C = CyclicGroup(4)
    G.is_subgroup(D*A*C)
    assert _verify_centralizer(G, G)
예제 #2
0
def test_commutator():
    # the commutator of the trivial group and the trivial group is trivial
    S = SymmetricGroup(3)
    triv = PermutationGroup([Permutation([0, 1, 2])])
    assert S.commutator(triv, triv).is_subgroup(triv)
    # the commutator of the trivial group and any other group is again trivial
    A = AlternatingGroup(3)
    assert S.commutator(triv, A).is_subgroup(triv)
    # the commutator is commutative
    for i in (3, 4, 5):
        S = SymmetricGroup(i)
        A = AlternatingGroup(i)
        D = DihedralGroup(i)
        assert S.commutator(A, D).is_subgroup(S.commutator(D, A))
    # the commutator of an abelian group is trivial
    S = SymmetricGroup(7)
    A1 = AbelianGroup(2, 5)
    A2 = AbelianGroup(3, 4)
    triv = PermutationGroup([Permutation([0, 1, 2, 3, 4, 5, 6])])
    assert S.commutator(A1, A1).is_subgroup(triv)
    assert S.commutator(A2, A2).is_subgroup(triv)
    # examples calculated by hand
    S = SymmetricGroup(3)
    A = AlternatingGroup(3)
    assert S.commutator(A, S).is_subgroup(A)
예제 #3
0
def test_is_nilpotent():
    # every abelian group is nilpotent
    for i in (1, 2, 3):
        C = CyclicGroup(i)
        Ab = AbelianGroup(i, i + 2)
        assert C.is_nilpotent
        assert Ab.is_nilpotent
    Ab = AbelianGroup(5, 7, 10)
    assert Ab.is_nilpotent
    # A_5 is not solvable and thus not nilpotent
    assert AlternatingGroup(5).is_nilpotent is False
예제 #4
0
def test_Permutation_Cycle():
    # general principle: economically, canonically show all moved elements
    # and the size of the permutation.

    for p, s in [
        (Cycle(), 'Cycle()'),
        (Cycle(2), 'Cycle(2)'),
        (Cycle(2, 1), 'Cycle(1, 2)'),
        (Cycle(1, 2)(5)(6, 7)(10), 'Cycle(1, 2)(6, 7)(10)'),
        (Cycle(3, 4)(1, 2)(3, 4), 'Cycle(1, 2)(4)'),
    ]:
        assert str(p) == s

    Permutation.print_cyclic = False
    for p, s in [
        (Permutation([]), 'Permutation([])'),
        (Permutation([], size=1), 'Permutation([0])'),
        (Permutation([], size=2), 'Permutation([0, 1])'),
        (Permutation([], size=10), 'Permutation([], size=10)'),
        (Permutation([1, 0, 2]), 'Permutation([1, 0, 2])'),
        (Permutation([1, 0, 2, 3, 4, 5]), 'Permutation([1, 0], size=6)'),
        (Permutation([1, 0, 2, 3, 4, 5],
                     size=10), 'Permutation([1, 0], size=10)'),
    ]:
        assert str(p) == s

    Permutation.print_cyclic = True
    for p, s in [
        (Permutation([]), 'Permutation()'),
        (Permutation([], size=1), 'Permutation(0)'),
        (Permutation([], size=2), 'Permutation(1)'),
        (Permutation([], size=10), 'Permutation(9)'),
        (Permutation([1, 0, 2]), 'Permutation(2)(0, 1)'),
        (Permutation([1, 0, 2, 3, 4, 5]), 'Permutation(5)(0, 1)'),
        (Permutation([1, 0, 2, 3, 4, 5], size=10), 'Permutation(9)(0, 1)'),
        (Permutation([0, 1, 3, 2, 4, 5], size=10), 'Permutation(9)(2, 3)'),
    ]:
        assert str(p) == s

    assert str(AbelianGroup(3, 4)) == ("PermutationGroup([\n    "
                                       "Permutation(6)(0, 1, 2),\n"
                                       "    Permutation(3, 4, 5, 6)])")
    assert sstr(Cycle(1, 2)) == repr(Cycle(1, 2))
예제 #5
0
def test_AbelianGroup():
    A = AbelianGroup(3, 3, 3)
    assert A.order() == 27
    assert A.is_abelian is True