Slava Pestov
Programming languages, finitely-presented monoids, horses
Life of a codebase:
1k lines: this is a promising prototype
10k lines: almost all basic functionality is in place!
100k lines: it’s getting serious, we’ve got real users
1m lines: completely unmaintainable mess, it’s time to start over
Things are going to get real awkward when OpenAI publishes my secret proof of the Collatz conjecture because then everyone will find out I have an AI girlfriend
It’s time to bring back the Windows .ini file format
This is probably completely obvious and well known, but I just realized is a one relation monoid presentation of the free *group* on 2 generators.
The relator begins and ends with ‘a’, so bcba=abcb is a two-sided inverse for ‘a’. This allows conjugating the relator, which gives bcbaa=1 and aabcb=1. Thus ‘b’ is invertible too, and repeating the same trick also gives an inverse for ‘c’. Every generator has an inverse, so all cyclic conjugates of the relator equal the identity, so also baabc=1.
So the monoid is isomorphic to the group and its possible to remove the generator ‘c’ since it appears in the relator only once. We’re left with a group with two generators and no relations, so the free group.
The monoid generators ‘a’ and ‘b’ map directly to the group generators, but their inverses are accessed in this weird way through ‘c’, where a^-1 = bcba and b^-1 = aabc.
OpenAI is burning millions in compute to find a finite complete rewriting system for this monoid but they don’t even realize it embeds in the group with the same presentation
There is a mistake on Page 335 of Computation with Finitely Presented Groups, by Charles S. Sims. The example starts with this matrix and computes its Smith normal form:
M := [
[2, 2, 6, 4, 0],
[6, 4, 16, 10, -14],
[4, 3, 11, 7, 0],
[8, 5, 21, 13, -4]
];;
Sims works it out to say the answer has 1, 2, 4, 0 on the diagonal. But it should actually be 1, 2, 2, 0 according to GAP:
S := SmithNormalFormIntegerMat( M );
[ [ 1, 0, 0, 0, 0 ], [ 0, 2, 0, 0, 0 ], [ 0, 0, 2, 0, 0 ], [ 0, 0, 0, 0, 0 ] ]
Feel free to mail the reward check to the address shown below!
What do you mean, compiling the same program twice should produce identical binaries? In the security world they’d call that a “replay attack”
This sounds perfect for full stack development. Tk frontend, AOLserver backend.
“AOLserver is multithreaded, Tcl-enabled, and used for large scale, dynamic web sites.”
Ok, now I’m completely sure that is a finite monoid with 336 elements.
I got Knuth-Bendix completion to succeed by adding the generator c=bbbbbbbb. It generates several million rules, before settling at 216 and establishing confluence.
Most of those intermediate rules don’t participate in any reductions leading up to the final system, so they can be thrown out. Only ~32,000 intermediate rules are referenced by the 216 that remain at the end.
For every necessary rule, I recorded a path that defines it from the two original axioms, together with c=bbbbbbbb. Here is the result (warning - large HTML file):
Zig incremental compilation internals https://mlugg.co.uk/posts/incremental-compilation-internals/
A counterexample to the unit conjecture for group rings, Giles Gardam
A Database of One-relator Groups https://warwick.ac.uk/fac/sci/maths/people/staff/linton/homepage/
@joe@f.duriansoftware.com @zwarich@hachyderm.io Also the if statement takes any type value as the condition, and checks if its zero