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_orders
etc… (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+1
is 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_i
and quotient the groupQ_i
with 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_k
in the quotient map fromG_i -> G_i+1
will 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/H
is given by adding the generators ofG
to 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_i
such thatg_i
belongs toG_i/G_i+1
. And the relative orderr_i
is written asr_i = [G_i:G_i+1]
.
Implementation
- A
PcGroup
class is defined as a child of theFpoGroup
class. - Method
is_polycyclic
is 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
PermutationGroup
isomorphic to it). - A few elementary methods are implemented as a part of the
PcGroup
class, 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.