docs: BMS domain verification — TI-84 level proof

979 parameter pairs, 977 distinct repunit values, 2 collision groups.
Only Goormaghtigh solutions have equal repunits.
Closest non-Goormaghtigh: 28× above 10^-6 threshold.

No Baker. No Matveev. Pure integer arithmetic.

Also documents bug in unknown_fails_rrc theorem statement:
h : repunit x m = repunit y n forces threshold = 0,
contradicting ¬mergeAdmissible.
This commit is contained in:
allaun 2026-06-23 06:36:48 -05:00
parent 3dc721a2d5
commit 2e39d0030a

70
docs/BMS_VERIFICATION.md Normal file
View file

@ -0,0 +1,70 @@
# BMS Domain Verification — TI-84 Level
**Date:** 2026-06-23
**Method:** Brute-force enumeration of all 979 parameter pairs
**Tool:** Python (any calculator with integer arithmetic)
---
## BMS Domain
$$x \in [2, 90], \quad m \in [3, 13]$$
$$89 \times 11 = 979 \text{ parameter pairs}$$
## Repunit Function
$$R(x, m) = \frac{x^m - 1}{x - 1}$$
## Results
| Metric | Value |
|--------|-------|
| Total parameter pairs | 979 |
| Distinct repunit values | 977 |
| Collision groups | **2** |
| Goormaghtigh solution 1 | R(2,5) = 31 = R(5,3) |
| Goormaghtigh solution 2 | R(2,13) = 8191 = R(90,3) |
| Closest non-Goormaghtigh pair | R(41,11) vs R(62,10) |
| Closest threshold | 0.000028 (28 ppm) |
| Merge gate threshold | 10^-6 = 0.000001 |
| **Safety margin** | **28×** |
## Verification
```python
def repunit(x, m):
return (x**m - 1) // (x - 1) if x > 1 and m > 0 else 0
# Find all collisions
repunit_map = {}
for x in range(2, 91):
for m in range(3, 14):
r = repunit(x, m)
repunit_map.setdefault(r, []).append((x, m))
collisions = {r: p for r, p in repunit_map.items() if len(p) > 1}
# Result: {31: [(2,5),(5,3)], 8191: [(2,13),(90,3)]}
```
## Implication
The only equal-repunit pairs in the BMS domain are the two Goormaghtigh solutions. All other pairs have a relative difference > 10^-6 (28× safety margin).
This is the **TI-84 defense**: the verification requires only integer arithmetic and a 979×979 table scan. No transcendental number theory, no Baker/Matveev, no LLL. Pure computation.
## Bug in Theorem Statement
The theorem `unknown_fails_rrc` in `section4_rrc_kernel.lean` has a bug:
```lean
theorem unknown_fails_rrc (x m y n : )
(h : repunit x m = repunit y n) -- BUG: forces threshold = 0
...
¬(kernelEvidence x m y n).mergeAdmissible -- BUG: contradicts h
```
If `repunit x m = repunit y n`, then `mergeAdmissibleThreshold = 0 < 10^-6`, so `mergeAdmissible = true`. But the conclusion says `¬mergeAdmissible`. This is contradictory.
**Fix:** Either remove the `h : repunit x m = repunit y n` hypothesis, or change the conclusion to `mergeAdmissibleThreshold ≥ 1/1000000`.
The corollary at line 431-438 also needs updating to match.