GSoC 2016 Report Gaurav Dhingra: Computational Group Theory - gxyd/sympy GitHub Wiki
Hi, I'm Gaurav Dhingra(@gxyd) and this page is a report of my work for SymPy under Google Summer of Code 2016.
Brief Information
Project: Group Theory
Blog: https://gxyd.github.io/gsoc.html
My Website: https://gxyd.github.io
e-mail: axyd0000[at]gmail.com
I am a pre-final year undergraduate student of Applied Mathematics at IIT Roorkee.
Before GSoC
I was introduced to the GSoC program and to SymPy by one of my college mate, Prasoon Shukla (he also participated in GSoC with SymPy). I was quite amazed by how mathematics and computer science could intersect and help in solving math problems. I have been contributing to SymPy from May last year. In the beginning I tended often to work on issues that were more often related to my then on-going courses in my college. In December I completed a basic course on Group Theory, so I thought of choosing to work on Group Theory and I saw quite a few things in CGT were missing from SymPy and those functionalities were already there in GAP and Magma. So I asked them from Kalevi, regarding things that could be taken up for a gsoc project. So finally with some discussions with him and Aaron, I was sure by December end that I was going to work on implementing Finitely Presented Group in SymPy. I looked upto the last GSoC project on CGT by Alexandar Makelov, for reference material that could be used for the implementation and it turned out that the book by Derek Holt, Handbook of Computational Group Theory (will mention as shortly "the Handbook").
Though I already started working on PR #10350 for implementation of free groups in beginning January though I started working on the proposal from February beginning.
Here is my GSoC proposal. Now that the summer is over and I've tackled a lot more with computational group theory, it seems that the main points in my GSoC proposal were:
-
Implementation of different algebraic structures monoid, free monoid, free group, semi group, free semi group, magma, etc.
-
Rewriting System for reducing the elements of finitely presented groups.
-
The Todd-Coxeter algorithm for coset enumeration, used to find the index of a subgroup of a finitely presented group.
-
Reidemeister Schreier algorithm
-
Implementation of main
Group
class.
During GSoC
I started working on 7th May, we first started with working on completing the Free Group PR #10350 and we discussed things on our channel sympy/GroupTheory
After GSoC
Things I did right/wrong
- I often lagged in writing blogs.
- I worked more than expected hours before 15 July (before college started) but much less in the last one month of GSoC because of a little busy schedule.
Conclusion
I had say that I did about 80% of the work I promised to do in my proposal, considering that I also did two non-included task of Low Index subgroups algorithm and Modified Todd Coxeter algorithm, so I can say I swapped my work. It is good enough, and I hope to get back to extending the things that I have started. I appreciate the help of my mentor Kalevi Suominen who was always there for any query that I had regarding Group Theory in project, and I appreciate his ability to reply back within 1 hour for any message I left any time of day and every day of the week (including weekend). I think he was a wonderful mentor and I learnt a lot from him, and my co-mentor Aaron Meurer, the current project leader of SymPy, and the entire SymPy community for helping me out and reviewing my work!