12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- """Test groups defined by the galois module. """
- from sympy.combinatorics.galois import (
- S4TransitiveSubgroups, S5TransitiveSubgroups, S6TransitiveSubgroups,
- find_transitive_subgroups_of_S6,
- )
- from sympy.combinatorics.homomorphisms import is_isomorphic
- from sympy.combinatorics.named_groups import (
- SymmetricGroup, AlternatingGroup, CyclicGroup,
- )
- def test_four_group():
- G = S4TransitiveSubgroups.V.get_perm_group()
- A4 = AlternatingGroup(4)
- assert G.is_subgroup(A4)
- assert G.degree == 4
- assert G.is_transitive()
- assert G.order() == 4
- assert not G.is_cyclic
- def test_M20():
- G = S5TransitiveSubgroups.M20.get_perm_group()
- S5 = SymmetricGroup(5)
- A5 = AlternatingGroup(5)
- assert G.is_subgroup(S5)
- assert not G.is_subgroup(A5)
- assert G.degree == 5
- assert G.is_transitive()
- assert G.order() == 20
- # Setting this True means that for each of the transitive subgroups of S6,
- # we run a test not only on the fixed representation, but also on one freshly
- # generated by the search procedure.
- INCLUDE_SEARCH_REPS = False
- S6_randomized = {}
- if INCLUDE_SEARCH_REPS:
- S6_randomized = find_transitive_subgroups_of_S6(*list(S6TransitiveSubgroups))
- def get_versions_of_S6_subgroup(name):
- vers = [name.get_perm_group()]
- if INCLUDE_SEARCH_REPS:
- vers.append(S6_randomized[name])
- return vers
- def test_S6_transitive_subgroups():
- """
- Test enough characteristics to distinguish all 16 transitive subgroups.
- """
- ts = S6TransitiveSubgroups
- A6 = AlternatingGroup(6)
- for name, alt, order, is_isom, not_isom in [
- (ts.C6, False, 6, CyclicGroup(6), None),
- (ts.S3, False, 6, SymmetricGroup(3), None),
- (ts.D6, False, 12, None, None),
- (ts.A4, True, 12, None, None),
- (ts.G18, False, 18, None, None),
- (ts.A4xC2, False, 24, None, SymmetricGroup(4)),
- (ts.S4m, False, 24, SymmetricGroup(4), None),
- (ts.S4p, True, 24, None, None),
- (ts.G36m, False, 36, None, None),
- (ts.G36p, True, 36, None, None),
- (ts.S4xC2, False, 48, None, None),
- (ts.PSL2F5, True, 60, None, None),
- (ts.G72, False, 72, None, None),
- (ts.PGL2F5, False, 120, None, None),
- (ts.A6, True, 360, None, None),
- (ts.S6, False, 720, None, None),
- ]:
- for G in get_versions_of_S6_subgroup(name):
- assert G.is_transitive()
- assert G.degree == 6
- assert G.is_subgroup(A6) is alt
- assert G.order() == order
- if is_isom:
- assert is_isomorphic(G, is_isom)
- if not_isom:
- assert not is_isomorphic(G, not_isom)
|