Divyanshu Thakur Open Source Enthusiast

GSoC 2019 - Week 7 - Modify Presentation and Addition of Methods

The seventh week of coding period has ended and a few methods has been introduced to polycyclic groups, also pc presentation has been modified. Previously for pc presentation we were computing the LHS for both power and conjugate relators via separate methods and then finally their RHS was computed.

Now, the computation of presentation starts from the bottom of the polycyclic generating sequence(pcgs) and polycyclic series. Storing all the previous generators from pcgs and then taking the last generator as the generator which acts as a conjugator and conjugates all the previous generators in the list.

To get a clear picture let’s take an example of S(4) For S(4) we’ll have 4 generators in pcgs say [x0, x1, x2, x3] and the relative_order vector as [2, 3, 2, 2]. Starting from bottom of this sequence the presentation is computed in order as below.

x3**2	       	---| ---> using only [x3] from pcgs and pc_series[1]
x2**2		   |
x2**-1*x3*x2	---| from bottom up because pc_series[0] is an identity.

x1**3		---| ---> using [x3, x2] from pcgs and pc_series[2]	
x1**-1*x3*x1	   | 
x1**-1*x2*x1	---|      from bottom up(which have both the gens).

x0**2		---| ---> using [x3, x2, x1] from pcgs and pc_series[3]
x0**-1*x3*x0	   |
x0**-1*x2*x0	   |      from bottom up(which have all three gens).
x0**-1*x1*x0	---|

There were 3-methods which were added namely:

  • Exponent vector
  • Depth
  • Leading Exponent
>>> from sympy.combinatorics import *
>>> from sympy.combinatorics.free_groups import free_group
>>> G = SymmetricGroup(4)
>>> PcGroup = G.polycyclic_group()
>>> pcgs = PcGroup.pcgs
>>> group, x0, x1, x2, x3 = free_group("x0, x1, x2, x3")
>>> PcGroup.exponent_vector(G[0], group)
[1, 0, 0, 0]
>>> exp = PcGroup.exponent_vector(G[1], group)
>>> g = Permutation()
>>> for i in range(len(exp)):
...     g = g*pcgs[i] if exp[i] else g
... 
>>> g == G[1]
True
>>> 

For the details of these methods one can look into the docstrings and doctests of these methods in the PR sympy/sympy#16991.

Tasks I hope to complete next week:

  • Get the polycyclic group pr ready to be merged.
  • Get started with quotient groups.

Till then good byee..

Follow @divyanshu132