Idea
Implementation of polycyclic groups in Sympy. A few methods of the pc-groups require similar implementation as that of the FpGroups, so, PcGroup can be implemented as a child of the FpGroup such that it will inherit the methods required.
Deliverables
- Computation of polycyclic series for a given FpGroup.
- Solving word problem for Polycyclic groups using collection algortihm.
- Implement a method to compute coset representatives of a given CosetTable.(Might be useful in the computation of polycyclic series). (Week-9)
- Elementatry methods like compute_pc_presentation,compute_power_relations,compute_relative_ordersetc… (Week-9)
Algorithms
- Computing the polycyclic series: As sugested by Valeriia and Kalevi in the gitter channel, the method to compute the polycyclic series would be, first we compute the derived series G = G1, G2, ..., Gn = <identity>. Every quotientQ_i = G_i/G_i+1is abelian so every subgroup of the quotient group is a normal subgroup. To compute the subnormal series, we randomly pick and elemente(Could be the generators as well) fromQ_iand quotient the groupQ_iwith the group generated by this elemente. This will be repeated recursively to obtain the cyclic subnormal series,H1, H2, ..., Hn. Now, the pre-images(H*_k) ofH_kin the quotient map fromG_i -> G_i+1will be the subgroups ofG_i. Now, we lift it to the original group. So, the final cyclic subnormal series(polycyclic series) will beG1 > ... > G_i > H*_1 >... H*_n > G_i+1 > ... > <identity>.
- Computing the abelian-subgroup-quotient (Auxilary method): The presentation of the quotient G/His given by adding the generators ofGto the relators ofH, they are defined on the same free-group.
- Computing Polycyclic generating sequence and relative orders: The polycyclic generating sequence can be obtained by chosing an element g_isuch thatg_ibelongs toG_i/G_i+1. And the relative orderr_iis written asr_i = [G_i:G_i+1].
Implementation
- A PcGroupclass is defined as a child of theFpoGroupclass.
- Method is_polycyclicis implemented to check if the given group is polycyclic.
- A method to compute the polycyclic series for a given group.
- A method to check if a given group is the subgroup of a parent group.(Uses the PermutationGroupisomorphic to it).
- A few elementary methods are implemented as a part of the PcGroupclass, which includeis_prime_order,relative_order,compute_pcgs.
Trvial example
To be added after testing.
PR
Here is the link to the PR ‘Add methods for Polycyclic Groups’. This is currently work in progress (as of 11tha July, 2018) and would be completed soon.
Week-9:
- Method to compute the coset representative for a given cosetTable.
- Implementation of the collectuion algorthim.
- Implement methods to compute the pc-presentation and the power realtions.
- To-Do: Add tests and documentation. References
- [1] Derek F.Holt, Bettina Fick, Eamonn A.O’Brian. Handbook of Computational Group Theory.
- [2] Article on Polycyclic groups.
- [3] GAP - Polycyclic package.