The plan
12 May 2017This blog will follow the progress of my GSoC 2017 project for SymPy. My primary goal is to implement group homomorphisms and set it up in such a way that certain finite presentation groups (implemented as an FpGroup
class in SymPy) could be considered as permutation groups via an isomorphism. That would be good because SymPy already has many grouptheoretic algorithms implemented for perm groups. To get this to work, I will also need to implement rewriting systems for FpGroup
s. You can see my application for details.
This post is a revised timeline for the project. I am currently in the middle of a term at uni and I’m going to have exams at the end of it: that’s 1221 June (with 3 examfree days in that period). For that reason I won’t be fully productive until 21 June but I’ll do my best (and certainly will catch up afterwards). As such, I think I should do a bit of coding before 30 May. I’ll start with some functionality unrelated to homomorphisms, as explained in my application. My current plan until the end of the First Evaluation period (2630 June) is as follows:

By 30 May: Add a
.subgroup()
method and a.parent
attribute toFpGroup
s andPermutationGroup
s. Probably make some improvements in the ReidemeisterSchreier elimination techniques. Submit a PR. 
31 May  11 June: Implement better checks for infinite
FpGroup
s. That will include theabelian_invariants
function somewhere in the rings module (I’ll do it for integers unless there is an obvious way to make the same algorithm work for general rings) and a search for a finite cyclic subgroup (which might not terminate but it’s better to give it a try since if a group is infinite, this might works butcoset_enumeration
is unlikely to terminate). Create a PR by the end of it if it’s finished. 
1225 June My exams start. I’ll start writing the
GroupHomomorphism
class and its functions with the assumption that rewriting systems and other things I might need are already implemented (which I will actually do later on). I’ll also start writing my evaluation at the end of this period.