|
| 1 | +--- |
| 2 | +layout: "gsoc" |
| 3 | +bgImage: "/images/smalloverlap_510x510.png" |
| 4 | +--- |
| 5 | + |
| 6 | +# GSoC 2026 project ideas |
| 7 | + |
| 8 | +This page contains a list of ideas for GSoC in 2026 within the |
| 9 | +[libsemigroups][] organisation: |
| 10 | + |
| 11 | +1. [Julia bindings for libsemigroups](#1-julia-bindings-semigroupsjl-for-libsemigroups) |
| 12 | +2. [Formal verification of Knuth-Bendix and |
| 13 | + Todd-Coxeter](#2-formal-verification-of-knuth-bendix-and-todd-coxeter) |
| 14 | +3. [AI for auto-tuning undecidable |
| 15 | + problems](#3-ai-for-auto-tuning-undecidable-problems) |
| 16 | +4. [High-performance tropical algebra |
| 17 | + library](#4-high-performance-tropical-algebra-library) |
| 18 | +5. [Computing congruences of finite inverse |
| 19 | + semigroups](#5-computing-congruences-of-finite-inverse-semigroups) |
| 20 | +6. [Improving errors and their messages in |
| 21 | + GAP](#6-improving-errors-and-their-messages-in-gap) |
| 22 | +7. [Free bands](#7-free-bands) |
| 23 | + |
| 24 | +### 1. Julia bindings Semigroups.jl for libsemigroups |
| 25 | + |
| 26 | +This project would involve porting as much as possible of the functionality of |
| 27 | +[libsemigroups][] into [Semigroups.jl][]. Something similar already exists for |
| 28 | +python in [libsemigroups_pybind11][]. The aim is for [Semigroups.jl][] to |
| 29 | +expose the low-level functionality of [libsemigroups][] to be used as a |
| 30 | +foundation for a separate higher level package. In particular, a longer term |
| 31 | +aim of this project is to replace the kernel extension of the |
| 32 | +[GAP package Semigroups][] with [Semigroups.jl][]. |
| 33 | + |
| 34 | +This project may involve: |
| 35 | + |
| 36 | +- some familiarity with modern C++ and Julia; |
| 37 | +- writing some tools to (at least partially) automate the generation of the |
| 38 | + Julia bindings, documentation, and tests; |
| 39 | +- making design decisions about how to map C++ idioms to Julia. |
| 40 | + |
| 41 | +### 2. Formal verification of Knuth-Bendix and Todd-Coxeter |
| 42 | + |
| 43 | +A computer algebra system may produce an answer, but how much confidence can we |
| 44 | +have that it is correct? We might compute the same solution using two different |
| 45 | +algorithms, if they match, then we have higher confidence! This project is to |
| 46 | +provide alternate implementations of some key parts of the [Knuth-Bendix][] and |
| 47 | +[Todd-Coxeter][] algorithms in [libsemigroups][] to permit the generation of a |
| 48 | +formal proof certificate in [rocq][] or [lean][] that _proves_ with 100% |
| 49 | +certainty that the output is correct. |
| 50 | + |
| 51 | +This project may involve: |
| 52 | + |
| 53 | +- some familiarity with modern C++ and [rocq][] or [lean][]; |
| 54 | +- implementing a logged rewriter in modern C++; |
| 55 | +- understanding the mathematics behind [Knuth-Bendix][] and |
| 56 | + [Todd-Coxeter][] as applied to finitely presented semigroups and monoids. |
| 57 | + |
| 58 | +### 3. AI for auto-tuning undecidable problems |
| 59 | + |
| 60 | +In this project we aim to use techniques from AI and machine learning to guide |
| 61 | +computations related to undecidable problems. If a group or semigroup is |
| 62 | +defined by a presentation, then a classical undecidable problem is whether or |
| 63 | +not that semigroup is finite. Two key algorithms for attempting to determine |
| 64 | +whether or not a finitely presented semigroup is finite are the |
| 65 | +[Knuth-Bendix][] and [Todd-Coxeter][] algorithms. [Todd-Coxeter][] in |
| 66 | +particular terminates if and only if the semigroup is finite. |
| 67 | + |
| 68 | +This project may involve: |
| 69 | + |
| 70 | +- extensive testing of the existing implementation of [Knuth-Bendix][] and |
| 71 | + [Todd-Coxeter][] in [libsemigroups][]; |
| 72 | +- figuring out what AI tools and/or machine learning techniques might be usable |
| 73 | + for this purpose. |
| 74 | +- implementing these techniques in modern C++. |
| 75 | + |
| 76 | +### 4. High-performance tropical algebra library |
| 77 | + |
| 78 | +There are a number of high-performance linear algebra packages for linear |
| 79 | +algebra involving matrix and vector manipulation over fields (usually the real |
| 80 | +numbers or finite fields. Some well-known examples among many others are: |
| 81 | +[LinBox](https://linalg.org) and [Eigen](https://libeigen.gitlab.io). This |
| 82 | +project will involve implementing (at least some of) the |
| 83 | +[BLAS](https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) |
| 84 | +specification for matrices and vectors of [tropical |
| 85 | +semirings](https://en.wikipedia.org/wiki/Tropical_semiring) in modern C++. |
| 86 | +Tropical semirings, often using min-plus or max-plus algebra, are powerful |
| 87 | +tools for solving optimization, scheduling, and combinatorial problems by |
| 88 | +replacing addition/multiplication with minimum/maximum/summation. As such a |
| 89 | +high-performance library implementing linear algebra over tropical semirings is |
| 90 | +likely to be widely applicable. |
| 91 | + |
| 92 | +This project may involve: |
| 93 | + |
| 94 | +- developing some familiarity with linear algebra over tropical semirings; |
| 95 | +- implementing low-level high-performance SIMD accelerated linear algebra over |
| 96 | + tropical semirings; |
| 97 | +- developing a new C++ library (build system, documentation, testing framework). |
| 98 | + |
| 99 | +### 5. Computing congruences of finite inverse semigroups |
| 100 | + |
| 101 | +In the paper |
| 102 | + |
| 103 | +- "Computing congruences of finite inverse semigroups" by L. Elliott, A. |
| 104 | + Levine, and J. D. Mitchell [https://arxiv.org/abs/2406.09281][] |
| 105 | + |
| 106 | +the authors present a novel algorithm for |
| 107 | +computing a congruence on an inverse semigroup from a collection of generating |
| 108 | +pairs. This algorithm uses a myriad of techniques from the theories of groups, |
| 109 | +automata, and inverse semigroups. An initial implementation of this algorithm |
| 110 | +outperforms existing implementations by several orders of magnitude. In this |
| 111 | +project, you would implement this algorithm either in [GAP package |
| 112 | +Semigroups][] or within the C++ library [libsemigroups][]. |
| 113 | + |
| 114 | +This project may involve: |
| 115 | + |
| 116 | +- developing some familiarity with the theory of inverse semigroups; |
| 117 | +- implementing the algorithms described in |
| 118 | + [https://arxiv.org/abs/2406.09281][]; |
| 119 | +- thoroughly testing and documenting the implementation. |
| 120 | + |
| 121 | +<!-- Cuttings algorithm--> |
| 122 | + |
| 123 | +<!-- Parallelising computer algebra --> |
| 124 | + |
| 125 | +### 6. Improving errors and their messages in GAP |
| 126 | + |
| 127 | +[GAP][] is a system for computational discrete algebra, with particular |
| 128 | +emphasis on Computational Group Theory. [GAP][] provides a programming |
| 129 | +language, a library of thousands of functions implementing algebraic algorithms |
| 130 | +written in the [GAP][] language as well as large data libraries of algebraic |
| 131 | +objects. |
| 132 | + |
| 133 | +The aim of this project is to improve errors and their messages in [GAP][] in |
| 134 | +something of the same spirit as those introduced in [Python |
| 135 | +3.13](https://docs.python.org/3/whatsnew/3.13.html#improved-error-messages). |
| 136 | + |
| 137 | +This project may involve: |
| 138 | + |
| 139 | +- doing a wide-scale review of error messages in the [GAP][] library; |
| 140 | +- identification of error messages that can be improved; |
| 141 | +- standardisation of error messages across the [GAP][] library; |
| 142 | +- liaising with code owners to effect any changes; |
| 143 | +- improvements to the error message infrastructure in [GAP][] arising from the |
| 144 | + above. |
| 145 | + |
| 146 | +<!-- ### Nielsen-Schreier free bases |
| 147 | +
|
| 148 | +Implement an algorithm for finding the free basis of a finitely generated |
| 149 | +subgroup of a free group (i.e. implement a proof of the Nielsen-Schreier |
| 150 | +theorem for finitely generated subgroups) (this is pretty nice actually and |
| 151 | +uses a similar word graph folding method to what Stephen's algorithm does); |
| 152 | +--> |
| 153 | + |
| 154 | +### 7. Free bands |
| 155 | + |
| 156 | +In the paper: |
| 157 | + |
| 158 | +- "Polynomial time multiplication and normal forms in free band" by R. |
| 159 | + Cirpons and J. D. Mitchell [https://doi.org/10.1016/j.tcs.2023.113783](https://doi.org/10.1016/j.tcs.2023.113783) |
| 160 | + |
| 161 | +the authors present efficient computational solutions to the problems of |
| 162 | +checking equality, performing multiplication, and computing minimal |
| 163 | +representatives of elements of free bands. A reference implementation of the |
| 164 | +algorithms from this paper is given in |
| 165 | +[https://doi.org/10.5281/zenodo.7071676](https://doi.org/10.5281/zenodo.7071676). |
| 166 | +In this project, the reference implementation would be re-implemented in modern |
| 167 | +C++ as part of [libsemigroups][]; and integrating subsemigroups of free bands |
| 168 | +and their quotients into the framework established in [https://arxiv.org/abs/1510.01868](https://arxiv.org/abs/1510.01868). |
| 169 | + |
| 170 | +This project may involve: |
| 171 | + |
| 172 | +- object oriented programming in modern C++; |
| 173 | +- some familiarity with automata and transducers; |
| 174 | +- integrating the C++ code into [libsemigroups_pybind11][], |
| 175 | + [Semigroups.jl][], and [GAP package Semigroups][]; |
| 176 | + |
| 177 | +<!-- Morphocompletion for Knuth-Bendix |
| 178 | +
|
| 179 | +Implement the morphocompletion algorithm using the stop and reinitialize |
| 180 | +method you mentioned before. |
| 181 | +
|
| 182 | +### High-performance finite state automata |
| 183 | +
|
| 184 | +Implement various algorithms for automata or incorporate a good enough |
| 185 | +automata library. In particular things like efficient products of automata. |
| 186 | +
|
| 187 | +### Todd-Coxeter for varieties |
| 188 | +
|
| 189 | +Implement something like the Todd-Coxeter algorithm for varieties from my |
| 190 | +thesis, either in full generality or for some specific classes (e.g. bands). |
| 191 | +--> |
| 192 | + |
| 193 | +[libsemigroups]: https://libsemigroups.github.io/libsemigroups/ |
| 194 | +[Semigroups.jl]: https://github.com/libsemigroups/Semigroups.jl |
| 195 | +[GAP package Semigroups]: https://semigroups.github.io/Semigroups/ |
| 196 | +[libsemigroups_pybind11]: https://libsemigroups.github.io/libsemigroups_pybind11/ |
| 197 | +[rocq]: https://rocq-prover.org |
| 198 | +[lean]: https://lean-lang.org |
| 199 | +[Todd-Coxeter]: https://link.springer.com/article/10.1007/s00233-024-10431-z |
| 200 | +[Knuth-Bendix]: https://en.wikipedia.org/wiki/Knuth–Bendix_completion_algorithm |
| 201 | +[https://arxiv.org/abs/2406.09281]: https://arxiv.org/abs/2406.09281 |
| 202 | +[GAP]: https://www.gap-system.org |
0 commit comments