Home » GAP
Category Archives: GAP
The next major release of GAP 4.10.0 has been announced on 12 November 2018. Its complete overview with links to the GAP documentation and GitHub pull requests can be found here. Alternative distributions – Gap.app for macOS and GAP Docker container have been updated too.
You can check the status of standard tests of GAP packages from GAP 4.10.0 release on Travis CI. Out of 140 packages, redistributed with this GAP release, 103 now provide such a test, and for 97 of these packages their tests pass cleanly. To compare, in GAP 4.7.9 (November 2015), only 56 packages had standard tests. But not only more tests were added over three years, but also their code coverage improved, as you can see by exploring code coverage for GAP packages at Codecov. This is a result of collaboration of many GAP developers and package authors, helper by keeping many package repositories on GitHub (see https://gap-packages.github.io/) and providing tools for package authors to automate testing and publishing releases, and keep a regular release cycle. In particular, in GAP 4.10.0 distribution, 103 packages have been updated in 2018, another 20 – in 2017, and 6 more in 2016. On the other hand, there are 2 packages dated 2011, 2 – 2012, 5 – 2013, 1 – 2014 and 1 – 2015, but no packages from 2000s any more!
GAP 4.10.0 contains the new release of the JupyterKernel package by Markus Pfeiffer which allows to use GAP in a
Jupyter notebook. This development has been supported by the OpenDreamKit project. You can try to use it remotely on Binder or install it locally as explained in its manual.
Another package is JupyterViz by Nathan Carter. It adds visualisation tools including standard line and bar charts, pie charts, scatter plots, and graphs (i.e. vertices & edges). Both packages also offer an opportunity to explore them on Binder (click on “launch on Binder” badges in their README files on GitHub).
Remarkably, there was no beta release this time. The new GAP 4.10.0 release is a proper official GAP release. With publicly available repositories for GAP and the majority of packages, and with the improved testing setup, the need in a preliminary beta release simply disappears. The GAP testing dashboard shows how code coverage (collected at Codecov with the help of the profiling package by Chris Jefferson) improved over releases.
The GAP testing dashboard also contains badges for Travis CI builds which test GAP packages. We test released and development versions of packages with released and development versions of GAP in various settings.
Other tools to support package authors are:
- PackageMaker – a GAP package that makes it easy and convenient to create new GAP packages
- Example package – an example of how to create a GAP package
- ReleaseTools – a script which automates the process of making a new release for a GAP package hosted on GitHub.
- GitHubPagesForGAP – a template for setting up a website for a GAP package hosted on GitHub.
- Docker containers for GAP – https://hub.docker.com/r/gapsystem/
The new minor release of GAP, version 4.9.2, is now available for download from the GAP website at https://www.gap-system.org/Releases/. It includes the new JupyterKernel package by Markus Pfeiffer which provides a so-called kernel for the Jupyter interactive document system. This package requires Jupyter to be installed on your system (see instructions here). It also requires GAP packages IO, ZeroMQInterface, json, and also two new packages by Markus Pfeiffer called crypting and uuid, all included into GAP 4.9.2 distribution. The JupyterKernel package is not yet usable on Windows.
The complete description of changes introduced in this release, with links to the documentation and to GitHub pull requests is available here. Please also see the release announcement in the GAP Forum.
The new major release of GAP, version 4.9.1 release, is now available for download from the GAP website at https://www.gap-system.org/Releases/. The complete description of these and other changes, with links to the documentation and to GitHub pull requests is available here. Please also see the release announcement in the GAP Forum.
I spent a week in St Andrews working with Markus Pfeiffer on an ongoing project which we are working on writing and implementing an algorithm to construct 2-closed Majorana representations. Funding for this trip was provided by CoDiMa.
Majorana algebras are non-associate algebras used to study the Monster group and its subgroups. They can be studied either in their own right, or as Majorana representations of certain groups. Many examples of Majorana algebras have been constructed by hand but it has become clear that, in order to construct bigger and more interesting algebras, a more computational approach is needed.
In a celebrated paper in 2012, Akos Seress announced the existence of an algorithm to constuct 2-closed Majorana representations. Sadly Seress passed away in 2013 and the full details of his algorithm and his results were never published. Recovering his work has been an important aim of the theory ever since.
This was my second visit funded by CoDiMa to work on this project. After the first visit, we had implemented such an algorithm and had started to reproduce Seress’ results. However, constructing Majorana representations is very expensive both in terms of time and memory and so the algorithm requires a lot of optimisation, which was the focus of our work this time around.
The week was a sucess and we have now completely recovered Seress’ results and we are expecting to shortly be able to construct representations larger than those achieved by Seress.
Our work is available on GitHub.
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!