One-relator group census
A one-relator group is a group of the form \(F_r/\langle\langle w\rangle\rangle\) where \(F_r\) is the free group of rank \(r\) and \(w\) is word in the free group. If \(\alpha\in\mathrm{Aut}(F_r)\) then \(F_r/\langle\langle w\rangle\rangle\) and \(F_r/\langle\langle \alpha(w)^{\pm 1}\rangle\rangle\) are isomorphic, so the \(\mathrm{Aut}(F_r)\)–orbit of the cyclic subgroup \(\langle w\rangle\) determines the group. This is still redundant at the level of isomorphism type of one-relator group, but we don't know a convenient way to enumerate isomorphism types.Let's define the length of such an automorphic class of cyclic subgroup to be the minimal length of a generator of a representative cyclic subgroup. We enumerate the automorphic orbits by length, for rank \(2\leq r\leq 4\) and length \(2\leq L\leq 16\) by choosing the shortlex minimal element among all cyclic generators of cyclic subgroups in the class. If the free group is, eg, \(F_4=\langle a,b,c,d\rangle\) then our base lexicographic order is \(D\lt C\lt B\lt A\lt a\lt b\lt c\lt d\), where case change denotes inversion.
This is based on the paper:
Cashen and Hoffmann, Short, highly imprimitive words yield
hyperbolic one-relator groups, Experimental Mathematics (in press).
The code used to produce this data can be found on github.
Organization
For each \(r\in\{2,3,4\}\) we enumerate only words that are not contained in a proper free factor of \(F_r\). For each rank there is a single .csv file containing all representatives of length \(2\leq L\leq 13\), with some additional data. For \(14\leq L\leq 16\) the words are separated into .txt files by rank, length, and additionally by imprimitivity rank (irank). The imprimitivity rank of a word is the minimal rank of a subgroup of the free group containing the word as an imprimitive element. Some group information is determined by the imprimitivity rank: The one-relator group has torsion if and only if it has irank=1. For all data presented here, if the irank is not 2 then the one-relator group is hyperbolic. For irank=2 both hyperbolic and nonhyperbolic groups occur.Stats
length | \(F_1\) | \(F_2\) | \(F_3\) | \(F_4\) |
1 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 |
3 | 1 | 0 | 0 | 0 |
4 | 1 | 2 | 0 | 0 |
5 | 1 | 3 | 0 | 0 |
6 | 1 | 8 | 1 | 0 |
7 | 1 | 12 | 5 | 0 |
8 | 1 | 34 | 18 | 2 |
9 | 1 | 71 | 98 | 5 |
10 | 1 | 217 | 522 | 35 |
11 | 1 | 515 | 3,124 | 315 |
12 | 1 | 1,423 | 16,866 | 7,106 |
13 | 1 | 3,834 | 96,086 | 93,460 |
14 | 1 | 11,816 | 582,844 | 1,124,764 |
15 | 1 | 33,321 | 3,481,458 | 11,679,597 |
16 | 1 | 95,440 | 19,514,686 | 109,264,221 |
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
|
Usage
The data is not human readable. This python module, orgcensus.py, will decode it.Example:
$ python
>>> import orgcensus
>>> words=orgcensus.generator_from_text_file('Rank4Len16Irank1.txt',outputstyle='str')
>>> {w for w in words}
set(['DDCCBBAADDCCBBAA', 'DCBAbadcDCBAbadc'])
>>> df=orgcensus.read_csv('Rank2Len2_13.csv',keystyle='str')
>>> df['length']=df.apply(lambda row: len(row.name),axis=1)
>>> df[df.length==4]
irank hyperbolic hyperbolicparabolic hyperbolicreason length
BBAA 2 False None c 4
BAba 2 False None i 4
The 'hyperbolicreason' codes are:f
- free t
- torsionc
- cyclically pincheds
- small cancellationi
- conditions from a paper of Ivanov and Schuppb
- condition from a paper of Blufstein and Minianw
- verified with GAP package walrusk
- verified with program kbmagData files
Rank 2
Rank2Len2_13.csv (70K)Rank2Len14Irank1.txt (84)
Rank2Len14Irank2.txt (81K)
Rank2Len15Irank1.txt (24)
Rank2Len15Irank2.txt (261K)
Rank2Len16Irank1.txt (272)
Rank2Len16Irank2.txt (746K)
Rank 3
Rank3Len2_13.csv (1.4M)Rank3Len14Irank1.txt (35)
Rank3Len14Irank2.txt (2.5K)
Rank3Len14Irank3.txt (3.9M)
Rank3Len15Irank1.txt (0)
Rank3Len15Irank2.txt (2.1K)
Rank3Len15Irank3.txt (27M)
Rank3Len16Irank1.txt (144)
Rank3Len16Irank2.txt (22K)
Rank3Len16Irank3.txt (149M)
Rank 4
Rank4Len2_13.csv (979K)Rank4Len14Irank1.txt (0)
Rank4Len14Irank2.txt (42)
Rank4Len14Irank3.txt (2.2K)
Rank4Len14Irank4.txt (7.6M)
Rank4Len15Irank1.txt (0)
Rank4Len15Irank2.txt (56)
Rank4Len15Irank3.txt (8.3K)
Rank4Len15Irank4.txt (90M)
Rank4Len16Irank1.txt (16)
Rank4Len16Irank2.txt (888)
Rank4Len16Irank3.txt (87K)
Rank4Len16Irank4.txt (834M)