Home » GAP
Category Archives: GAP
After meeting at the Workshop on Permutation Groups: Methods and Applications in Bielefeld in Germany, Markus Pfeiffer became interested in some computational work which I am developing as part of my PhD. He kindly invited me to St Andrews to spend a week working together on my code. Funding for this trip was provided by CoDiMa.
The work concerns developing and implementing an algorithm which can construct Majorana algebras, objects which occur in the study of the Monster group and its associated representation, the Griess algebra. In particular, I am interested in studying these algebras as Majorana representations of certain finite groups.
The algorithm takes as its input a finite group and a generating set of involutions. It considers all possible Majorana representations of the group with respect to the generating set and then, for each representation, either attempts to construct it or shows that it cannot exist.
In 2012, Akos Seress announced that he had constructed such an algorithm and published a list of groups whose Majorana representations he had been able to classify. However, Seress sadly passed away before he was able to publish the details of either his algorithm or of the representations which he had constructed. Reproducing his work has been an important aim of Majorana theory ever since.
The code is currently able to construct the Majorana representations of some groups, but we have not been able to reproduce the full results of Seress’ work. Together, we have been working on improving the methods in the algorithm to extend its capabilities. Improvements can come either from better implementation of the current methods, or from finding new approaches from theoretical work on the algebras.
This work is of particular interest as these algebras are defined over the reals and their construction involves some linear algebra over rational numbers. Improving GAP’s functionality over fields of characteristic zero is something which is being actively worked on and will benefit this problem as well as many others.
I also got the opportunity to present my work at the School of Mathematics and Statistics’ Pure Colloquium.
Overall, the week was very productive and we look forward to working together in the future.
Yet again I attended the Nikolauskonferenz in Aachen this year, funded by CoDiMa.
At the meeting Chris Jefferson and I presented our work with Rebecca Waldecker, and co-funded by CoDiMa, on search and canonical images in permutation groups. A recent submission can be found here, and a further one is coming out soon.
Another notable talk was given by Mikaël Cavallin from Kaiserslautern: He and Donna Testerman found a bug in a paper by Seitz from 1987 which is widely used in algebraic groups. This reminded me of our CoDiMa event in January, where Carmen Rovi visited us to learn about how GAP computes Schur multipliers, and we suspected that there was a bug in GAP, but it turned out to be a bug in an old paper.
Richard Parker and I met mainly at breakfast and discussed high performance low level algorithms such as his meataxe64, or multiplying permutations on millions of points, making full use of modern computer systems, which according to Richard, humanity is too stupid to program.
Two further talks that caught my attention were Imke Toborg’s talk on An Algebraic View on a Composite Functional Equation on Groups, because I first thought: why would you do that? and then: actually this is really interesting, and Julian Brough’s talk about Central Intersections of Element Centralisers, because I like this kind of group theory.
Of course all the other talks were interesting too, and I very much enjoyed being in Aachen again meeting everyone and doing research – Cambridge style! once more. A special thank you goes to Frank Lübeck for organising the event. I hope to see everyone back in Aachen next year!
In October 2016, Markus Pfeiffer visited Alan Logan in Glasgow to work on the practical implementations of methods to compute with hyperbolic groups. This is an important direction of research, and it was once more highlighted at the “Computation in geometric and combinatorial group theory” workshop at the ICMS in Edinburgh in July this year that we need to have a usable and publicly available GAP implementation of these. The progress report on this visit is available here. The work on the new GAP package continues…
This summer Leonard Soicher (Queen Mary) and Patric Östergård (Aalto) published the preprint with the same title, in which they successfully used GAP to solve a 40-year-old problem about the existence of a partial geometry which has the McLaughlin graph as its point graph. The calculation, which used GAP and its GRAPE package, took about 250 core-years. Peter Cameron wrote a blog post about the significance of this result here.
We present a guest blog post by Alexander Konovalov, in which he mentions a number of activities that were partially or fully supported by the CoDiMa project. The original version of the post is located at his homepage.
This post is based on my earlier comment on the pull request number one submitted to the GAP repository on GutHub a little bit more than a year ago.
Of course, GAP is not new to the version control. The first revision in the CVS repository for GAP 4 is dated July 3rd 1996. Then 16 years later, in summer 2012 the repository had been converted to Mercurial (thanks to Max Horn!) after the release of GAP 4.5. In February 2015 the Mercurial repository had been converted to Git (thanks to Chris Jefferson!), and we started to host it on GitHub at https://github.com/gap-system/gap.
Below there are some highlights of what happened during the first year after that:
- On 26th February 2016 there were In total 640 pull requests and issues in this repository, namely:
- 120 open + 133 closed issues
- 32 open + 356 closed pull requests
- That’s more than one new pull request a day!
- While the ratio for open/closed issues is nearly 50:50, “if things are done, they are done”: pull requests are normally reviewed and getting merged, so the ratio open/closed for pull requests is about 1:10.
- We had several very productive GAP Days in Aachen, Trondheim and St Andrews.
- We have a gap-system virtual organisation on GitHub which also hosts repositories for other development tools, GAP Website, etc.
- We have an expanding virtual organisation for gap-packages.
- There is even more activity with GAP packages, since some of them are openly developed elsewhere (we are trying to keep an up-to-date list at this page).
- There is an active open GAP development mailing list.
- There is also a growing Wiki with documentation for developers.
- In 2015, we made two minor releases based on the stable-4.7 branch of the GitHub repository (4.7.8 and 4.7.9).
- We put a lot of efforts in making GAP more robust and test it better, in particular, we now run nightly check of the code coverage and publish code coverage reports.
- And we have just announced the first major release of GAP 4.8.2, which is the first major release of GAP that has been made from this repository! The overview of changes between GAP 4.7 and GAP 4.8 highlights most significant ones, including support for partially variadic functions, better tools for testing, debugging and profiling, function calls with timeouts, 12 new packages redistributed with GAP, and other changes.
Congratulations and thanks to everyone who worked on making all of this possible!!!
In addition, this visualisation, produced with gource, shows files and directories that were modified in the master branch of the core GAP system during the 1st year on GitHub. The large cluster in the top right corner corresponds to the GAP library. The top left corner is occupied by the GAP kernel. The pink cluster in the bottom represents GAP regression tests, and the main GAP manuals are marked by green. There are already changes waiting for GAP 4.9!
Just like every year since about 2004 I have attended the Nikolauskonferenz in Aachen in December 2015.
Nikolaus is a relatively small meeting of mathematicians interested in group- or representation theory, and computational methods in these fields in particular. As such this meeting is a good venue to meet users of the GAP system, hear about their experiences and do some advertising work for HPC-GAP.
One particular highlight to be mentioned here was my conversation with Sergio Siccha, who just started his PhD in Aachen and wants to use HPC-GAP, and Jürgen Müller, one of the authors of the Orb GAP package. Sergio is going to attend our first joint GAP and SageMath days in January and we will work on a HPC version of the orbit-by-suborbit algorithm.
Thanks to Frank Lübeck, who has been organising this meeting for as long as I can remember, to all the speakers who gave interesting talks, and all attendees who made this meeting a memorable experience.
Last but not least, thanks to CoDiMa for making this visit possible for me!
New release of GAP 4.7.9 was announced in the beginning of December 2015. In this guest post (reproduced from here), Alexander Konovalov tells about his work from research software engineering perspective.
This week I was mainly wearing my Research Software Engineer (RSE) hat. RSE support for the GAP system has three related strands: development of the core GAP system; support of package authors and other GAP users; training future users and contributors to the system. They are all important for the thriving community of users and developers, and this week I’ve done something to advance each of them.
The First Joint GAP-SageMath Days will be held at the University of St Andrews on January 18th-22nd, 2016. The focus of this event will be on improving GAP-SageMath integration and interaction between our systems. Further details will be posted soon!
We have just finalised the date and location for the First CoDiMa Training School in Computational Discrete Mathematics which will take place at the University of Manchester on November 16th-20th, 2015. This school is intended for PhD students and researchers from UK institutions. It will start with the 2-days hands-on Software Carpentry workshop covering basic concepts and tools, including working with the command line, version control and task automation, continued with introductions to GAP and SageMath systems, and followed by the series of lectures and exercise classes on a selection of topics in computational discrete mathematics. The school will finish at Friday lunchtime, with an option to stay for the NBSAN (North British Semigroups and Applications Network) meeting on Friday afternoon.
This blog post is based on an improvised demo that I gave at the Newcastle University on May 21st, 2015 during a short visit supported by the CoDiMa project.
Let’s consider the following exercise: for a finite group G, calculate the average order of its element (that is, the sum of orders of its elements divided by the order of the group). We begin with a very straightforward approach, iterating over all elements of the group in question:
gap> S:=SymmetricGroup(10); Sym( [ 1 .. 10 ] ) gap> sum:=0; 0 gap> for g in S do > sum := sum + Order(g); > od; gap> sum/Size(S); 39020911/3628800
Now assume that we would like to save this fragment of the GAP code and later repeat this calculation for some other groups. (more…)