Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
214 changes: 214 additions & 0 deletions research/depth5-connector-mitm/EVIDENCE.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
{
"schema": "depth5-connector-mitm/1",
"mitm_sha256": "2b88b27be8c398f31e327ef742bbcf76cff295cc1086d927e2e04c9857c9631a",
"runs": [
{
"m": 5,
"counts": [
5,
5,
5,
5,
5
],
"residues": [
1
],
"seconds": 15,
"command": "verify.py reruns this",
"environment": "live"
},
{
"m": 5,
"counts": [
10,
5,
5,
5,
5
],
"residues": [
1,
2
],
"seconds": 138.7,
"command": "python3.12 -B mitm.py 5 10,5,5,5,5 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
},
{
"m": 5,
"counts": [
5,
10,
5,
5,
5
],
"residues": [
1,
2
],
"seconds": 148.9,
"command": "python3.12 -B mitm.py 5 5,10,5,5,5 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
},
{
"m": 5,
"counts": [
5,
5,
10,
5,
5
],
"residues": [
1,
2
],
"seconds": 162.5,
"command": "python3.12 -B mitm.py 5 5,5,10,5,5 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
},
{
"m": 5,
"counts": [
5,
5,
5,
10,
5
],
"residues": [
1,
2
],
"seconds": 159.9,
"command": "python3.12 -B mitm.py 5 5,5,5,10,5 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
},
{
"m": 5,
"counts": [
5,
5,
5,
5,
10
],
"residues": [
1,
2
],
"seconds": 143.0,
"command": "python3.12 -B mitm.py 5 5,5,5,5,10 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
},
{
"m": 6,
"counts": [
6,
6,
6,
6,
6
],
"residues": [
1,
3
],
"seconds": 205.0,
"command": "python3.12 -B mitm.py 6 6,6,6,6,6 --residues",
"environment": "CPython 3.12.4, numpy 1.26.4, Windows 11, 32 GB"
}
],
"witnesses": [
{
"m": 5,
"c": 1,
"word": "4512341231215432154325435",
"counts": [
5,
5,
5,
5,
5
]
},
{
"m": 5,
"c": 2,
"word": "112345112311211432115432543545",
"counts": [
10,
5,
5,
5,
5
]
},
{
"m": 5,
"c": 3,
"word": "45234111231112111543254322212225435",
"counts": [
10,
10,
5,
5,
5
]
},
{
"m": 5,
"c": 4,
"word": "11223411223112211543221154322543545",
"counts": [
10,
10,
5,
5,
5
]
},
{
"m": 6,
"c": 1,
"word": "345212341231121354321554325454",
"counts": [
6,
6,
6,
6,
6
]
},
{
"m": 6,
"c": 3,
"word": "121234543112121354322443555435",
"counts": [
6,
6,
6,
6,
6
]
}
],
"minima": {
"5": {
"1": 25,
"2": 30,
"3": 35,
"4": 35
},
"6": {
"1": 30,
"3": 30,
"2": ">=36",
"4": ">=36",
"5": ">=36"
}
},
"note": "Length 5m for m<=5 reruns in the verifier; the length-30 runs are local evidence; length-35 hits are certified by witnesses."
}
94 changes: 94 additions & 0 deletions research/depth5-connector-mitm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Exact depth-five connector minima at m = 5, and the length-5m residues at m = 6

**Claim type:** an exhaustive finite computation by meet-in-the-middle, with explicit
certificates. **No new κ.** It answers open question 1 of petalas's
[#4281](https://github.com/CrocSwap/integer-mult-bounds/pull/4281) at m = 5 and m = 6, which is
also open next question 1 of my #4341.

## Model

The model is #4281's Lemma 1. A positive word over calls `1..5` is a correct depth-five dirty chain
connector for residue `c` exactly when the product of the generators `g_l = I + E[l][l−1]` in the
lower unitriangular group `U₆(ℤ/m)` equals `I + c·E[5][0]`. The subdiagonal entries count the calls,
so every call is used a positive multiple of `m` times. A word of length `5m` uses each call exactly
`m` times.

## Method

Split a word with call counts `n` into a prefix of `⌊L/2⌋` letters, with counts `a`, and a suffix
with counts `n − a`. Write `P` for the prefix product and `S` for the suffix product. Row 0 of `S⁻¹`
is `e₀`, so

P·S = I + cE₅₀ ⟺ P = S⁻¹ + cE₅₀.

So `P` and `S⁻¹` agree on the 14 coordinates other than `(5,0)`, and then `c = P₅₀ − (S⁻¹)₅₀`.
`mitm.py` builds the deduplicated sets of prefix products and suffix inverses for every count vector:
the prefixes by right multiplication with `g_l`, and the suffix inverses by right multiplication with
`g_l⁻¹`, prepending letters. It matches them by sorted search, which decides every residue in one
pass. On a hit it extracts an explicit word by backtracking through the stored layers and replays it.
#4281's own `m = 5` witness confirms the product convention, and so do all 173 of its witnesses,
checked locally.

## Results

| m | c | minimum length | how decided |
| --- | --- | --- | --- |
| 5 | 1 | **25 = 5m** | witness; also #4281 |
| 5 | 2 | **30** | none at 25 (exhaustive); witness at 30, counts (10,5,5,5,5) |
| 5 | 3 | **35** | none at 25 or 30 (all five count vectors); witness at 35, counts (10,10,5,5,5) |
| 5 | 4 | **35** | as for `c = 3` |
| 6 | 1 | **30 = 5m** | **new** witness; #4281's search had not found it |
| 6 | 3 | **30 = 5m** | witness; also #4281 |
| 6 | 2, 4, 5 | **≥ 36** | none at 30 (exhaustive) |

**Controls.** The same search finds no length-`5m` word at `m = 2, 3, 4`. That agrees with #4281's
exhaustive BFS minima of 16, 24, and 24/28 at those `m`.

So #4281's "search failures" at `m = 5` are genuine: the premium over `5m` is 5 for `c = 2` and 10
for `c = 3, 4`. At `m = 6`, residue 1 attains the floor after all, while 2, 4 and 5 do not.

## Evidence

| Check | Where it runs | Time |
| --- | --- | --- |
| `m = 2, 3, 4, 5` at length `5m` | reruns in the verifier | about 30 s |
| all witness words, replayed | in the verifier | instant |
| `m = 5` at length 30, all five count vectors | local, `evidence/` | about 150 s each |
| `m = 6` at length 30 | local, `evidence/` | about 160 s |

The local runs record the exact command and the `mitm.py` SHA256 in `EVIDENCE.json`.
`python3.12 -B verify.py --full` reruns them. The length-35 hits are certified by their witnesses,
so no exhaustive run is needed for them.

## Not covered

- `m = 7, 8`. The `m = 7` length-35 run exceeded this machine's 32 GB when run in parallel.
- Exact minima of `c = 2, 4, 5` at `m = 6`, beyond the bound `≥ 36`.
- Any physical price, admission or caller.

## Reproduce

```sh
python3.12 -B scripts/research_package.py --package research/depth5-connector-mitm --check-only
python3.12 -B scripts/research_package.py --package research/depth5-connector-mitm
python3.12 -B research/depth5-connector-mitm/mitm.py 5 10,10,5,5,5 # the length-35 witnesses, ~25 min
```

The registered command prints `PASS_DEPTH5_CONNECTOR_MITM`. It needs `numpy`.

## Open next questions

1. **What are the `m = 7, 8` length-`5m` residues?**
- *Why it matters:* they would settle the rest of #4281's eleven search failures.
- *First step:* run the decision-only `residues` mode one count vector at a time on a machine
with 64 GB of RAM, or reduce memory by streaming prefix groups.
2. **What are the exact `m = 6` minima for `c = 2, 4, 5`?**
- *First step:* the length-36 runs, three count vectors up to reversal.

## Credit

- The connector model, Lemma 1, the witnesses and the question are Nick Petalas's (#4281,
building on #4249 and #4263).

Prepared by Ryanson Jonathan with substantial Claude Code (Claude Opus 5.5) assistance.
Apache-2.0.
18 changes: 18 additions & 0 deletions research/depth5-connector-mitm/SOURCES.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"schema_version": 1,
"base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244",
"files": [
{
"path": "certificates/selected-result.json",
"usage": "provenance",
"git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81",
"sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129"
},
{
"path": "docs/research/agent-task-catalog.json",
"usage": "provenance",
"git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65",
"sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96"
}
]
}
68 changes: 68 additions & 0 deletions research/depth5-connector-mitm/TASK.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"schema_version": 1,
"task_id": "connector-alphabet-change",
"priority_revision": 7,
"base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244",
"original_card": {
"id": "connector-alphabet-change",
"question": "Does one explicit extension of the connector alphabet offer a favorable completed budget?",
"starting_points": [
"docs/research/research-family-status.md",
"research/universal-connector-boundary/README.md",
"certificates/selected-result.json"
],
"methods": [
"Construct and charge a legal extra operation on a minimal instance.",
"Prove a target-specific bound after adding one specified operation family."
],
"acceptance_gate": "State which fixed-alphabet premise changes and charge its implementation; do not declare it free. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.",
"first_step": {
"command": [
"python3",
"-B",
"research/universal-connector-boundary/verify.py"
],
"expected": "PASS_UNIVERSAL_CONNECTOR_BOUNDARY",
"inspect": "Reproduce the 945-pairing control, then read Exact interface to list the allowed calls.",
"scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay."
},
"first_experiment": "Add exactly one legally priced operation and test a tiny dirty-input instance before enumerating larger cases.",
"bottleneck_link": "A new legal connector operation could change recursive interface cost; a larger census in the same alphabet is a separate side result.",
"allowed_variations": [
"Choose one additional operation and a small source count for its first counterexample."
],
"scope_change_triggers": [
"Keeping the alphabet and only increasing the source count; record this as a changed assignment.",
"Extending a source-count census without naming a supplier/interface decision it could change; audit #2973 pruning concerns before relying on the affected predecessor exclusions."
],
"overlap_terms": [
"universal connector",
"source-toggle",
"connector alphabet"
]
},
"scope_status": "refined",
"actual_scope": "Answer #4281's open question 1 at m=5 (exact minima for every residue) and decide the length-5m residues at m=6, by exact meet-in-the-middle.",
"scope_change_reason": "#4281 and #4341 left the m=5..8 residues as search failures; a meet-in-the-middle avoids the 30 GB table.",
"bottleneck_link": "Depth-five connector premiums price the chain-connector alphabet change.",
"budget_minutes": 90,
"stop_rule": "Stop at m=5 exact and m=6 length 30; m=7,8 exceed local memory.",
"outcome": "completed",
"evidence": "m=5 minima 25,30,35,35 for c=1..4 with witnesses and exhaustive exclusions; m=6 length 30 attained exactly for c=1 (new witness) and c=3; controls m=2,3,4 none at 5m.",
"author": "Ryanson Jonathan, with Claude Code (Claude Opus 5.5) assistance",
"ai_assistance": "Substantial Claude Code (Claude Opus 5.5) assistance; no independent human review.",
"open_questions": [
{
"question": "What are the m=7, 8 length-5m residues?",
"why_it_matters": "They settle the rest of #4281's search failures.",
"first_step": "Decision-only runs one count vector at a time on a 64 GB machine.",
"blocked_by": "Local memory."
},
{
"question": "Exact m=6 minima for c=2,4,5?",
"why_it_matters": "Completes the m=6 table.",
"first_step": "Length-36 runs, three count vectors up to reversal.",
"blocked_by": "None."
}
]
}
Loading
Loading