Skip to content

feat: add Kuznetsov/Boone–Higman word-problem-solvable eval problem#382

Merged
kim-em merged 2 commits into
mainfrom
knill-§122-boone-higman-simple
Jun 3, 2026

Hidden character warning

The head ref may contain hidden characters: "knill-\u00a7122-boone-higman-simple"
Merged

feat: add Kuznetsov/Boone–Higman word-problem-solvable eval problem#382
kim-em merged 2 commits into
mainfrom
knill-§122-boone-higman-simple

Conversation

@kim-em
Copy link
Copy Markdown
Collaborator

@kim-em kim-em commented Jun 2, 2026

This PR adds the Kuznetsov / Boone–Higman theorem (A.V. Kuznetsov 1958, W.W. Boone–G. Higman 1974) as an eval problem: a finitely presented simple group has a solvable word problem.

The encoding is computability-genuine: a word in the generators g₁, …, gₙ and their inverses is List (Fin n × Bool) (which is Primcodable), and the word problem is decidable iff the predicate w ↦ φ (FreeGroup.mk w) = 1 is ComputablePred — i.e. there's a Turing machine deciding it, not just a bundled Prop. The hypotheses hsurj + hker unpack Group.IsFinitelyPresented G for this presentation; since solvability of the word problem is independent of the chosen finite presentation, quantifying over an arbitrary one is the standard reading.

Mathlib has Group.IsFinitelyPresented, Subgroup.IsNormalClosureFG, FreeGroup, PresentedGroup, IsSimpleGroup, and the full ComputablePred / Computable / Partrec stack with Primcodable instances for Fin n × Bool and List _, but no notion of the word problem of a group, no Kuznetsov / Boone–Higman / Novikov result, and no r.e./co-r.e. machinery wired to group presentations. The proof (consequences r.e., negation r.e. via collapse from simplicity, both r.e. ⇒ decidable) is absent.

§122 of Knill's Some Fundamental Theorems in Mathematics (https://people.math.harvard.edu/~knill/graphgeometry/papers/fundamental.pdf).

🤖 Prepared with Claude+Codex+Aristotle

kim-em and others added 2 commits June 2, 2026 05:40
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…imple

Codex review of PR #382 confirmed the formal encoding is faithful
(ComputablePred is the right level of algorithmic decidability;
List (Fin n × Bool) signed-letter words match FreeGroup.mk;
IsNormalClosureFG + Surjective matches Group.IsFinitelyPresented;
IsSimpleGroup extends Nontrivial, so the trivial-group case is
excluded automatically) and caught a real mathematical error in
informal_solution. My prior text claimed "adjoining any nontrivial
relator collapses G" with no mechanism — adding `w' just makes
`w = 1' immediate, which proves nothing about non-membership of `w'.
Rewrote with the correct Kuznetsov argument: in a nontrivial simple
group, a nontrivial `w' has normal closure = G, so adding `w = 1'
collapses the presented group to trivial; semi-decide `w ≠ 1' by
enumerating consequences of `rels ∪ {w}' until each generator is
forced to 1.

Also tightened the attribution: this is Kuznetsov's theorem 1958;
Boone–Higman 1974 is the later iff characterisation that situates it.
Retitled and softened the docstring + manifest accordingly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@kim-em kim-em merged commit 03e81f1 into main Jun 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant