123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- from sympy.combinatorics.permutations import Permutation
- from sympy.combinatorics.named_groups import SymmetricGroup, AlternatingGroup, DihedralGroup
- from sympy.matrices import Matrix
- def test_pc_presentation():
- Groups = [SymmetricGroup(3), SymmetricGroup(4), SymmetricGroup(9).sylow_subgroup(3),
- SymmetricGroup(9).sylow_subgroup(2), SymmetricGroup(8).sylow_subgroup(2), DihedralGroup(10)]
- S = SymmetricGroup(125).sylow_subgroup(5)
- G = S.derived_series()[2]
- Groups.append(G)
- G = SymmetricGroup(25).sylow_subgroup(5)
- Groups.append(G)
- S = SymmetricGroup(11**2).sylow_subgroup(11)
- G = S.derived_series()[2]
- Groups.append(G)
- for G in Groups:
- PcGroup = G.polycyclic_group()
- collector = PcGroup.collector
- pc_presentation = collector.pc_presentation
- pcgs = PcGroup.pcgs
- free_group = collector.free_group
- free_to_perm = {}
- for s, g in zip(free_group.symbols, pcgs):
- free_to_perm[s] = g
- for k, v in pc_presentation.items():
- k_array = k.array_form
- if v != ():
- v_array = v.array_form
- lhs = Permutation()
- for gen in k_array:
- s = gen[0]
- e = gen[1]
- lhs = lhs*free_to_perm[s]**e
- if v == ():
- assert lhs.is_identity
- continue
- rhs = Permutation()
- for gen in v_array:
- s = gen[0]
- e = gen[1]
- rhs = rhs*free_to_perm[s]**e
- assert lhs == rhs
- def test_exponent_vector():
- Groups = [SymmetricGroup(3), SymmetricGroup(4), SymmetricGroup(9).sylow_subgroup(3),
- SymmetricGroup(9).sylow_subgroup(2), SymmetricGroup(8).sylow_subgroup(2)]
- for G in Groups:
- PcGroup = G.polycyclic_group()
- collector = PcGroup.collector
- pcgs = PcGroup.pcgs
- # free_group = collector.free_group
- for gen in G.generators:
- exp = collector.exponent_vector(gen)
- g = Permutation()
- for i in range(len(exp)):
- g = g*pcgs[i]**exp[i] if exp[i] else g
- assert g == gen
- def test_induced_pcgs():
- G = [SymmetricGroup(9).sylow_subgroup(3), SymmetricGroup(20).sylow_subgroup(2), AlternatingGroup(4),
- DihedralGroup(4), DihedralGroup(10), DihedralGroup(9), SymmetricGroup(3), SymmetricGroup(4)]
- for g in G:
- PcGroup = g.polycyclic_group()
- collector = PcGroup.collector
- gens = list(g.generators)
- ipcgs = collector.induced_pcgs(gens)
- m = []
- for i in ipcgs:
- m.append(collector.exponent_vector(i))
- assert Matrix(m).is_upper
|