Skip to content

The proof was provable because the model was wrong - #2894

Merged
gHashTag merged 1 commit into
masterfrom
w738
Aug 29, 2026
Merged

The proof was provable because the model was wrong#2894
gHashTag merged 1 commit into
masterfrom
w738

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

One section from #2893.

§341 declined to hand-write four Lean models, reasoning that a faithful model might make its theorem false, and that a red build would then be indistinguishable from a transcription error. An audit of the existing models found the same thing from the other side, and it is sharper than the argument.

specs/tri/utils/args.t27 declares fn parse(allocator: std.mem.Allocator)one parameter. Its Lean model declares three:

params := [("allocator", (.struct "Std")), ("mem", (.u32)), ("Allocator", (.u32))]

The dotted type path was split on its dots. And the env was given a struct to match — ("Std", [("value", .u32)]) — a name that appears in zero of the 650 specs and exactly once in the Lean file.

That fabrication is what makes the theorem provable. Ty.isLowerableFuel rejects a .struct whose fields are empty, so a faithful model — one parameter of the undeclared type std.mem.Allocator — is not lowerable and the theorem is false. The compiler agrees: icarus-lowerable prints not_lowerable. And t27c parse shows one parameter with the dotted path intact, so the split is not mirroring the AST either.

The same split appears in 16 models. Fifteen assert = false, where a wrong model changes nothing. The one asserting = true is the one where the fabrication decides the answer.

An unfaithful model is worse than an empty one. The 114 empty models announce themselves — functions := [] says the theorem is about nothing. This one lists four functions, all named correctly, in spec order, with tests populated. It looks checked.

And the risk §341 declined to take was real, in the direction it predicted: not I might transcribe it wrong and CI would tell me, but somebody already did, and no instrument has told anybody, because nothing builds these proofs.

Refs #2893

341 declined to hand-write Lean models, reasoning that a faithful model
might make its theorem false and that a red build would then be
indistinguishable from a transcription error. An audit of the existing
models found the same thing from the other side.

`specs/tri/utils/args.t27` declares `fn parse(allocator: std.mem.Allocator)`
-- one parameter. Its model declares three, the dotted path split on its
dots, and the env was given `("Std", [("value", .u32)])` to match: a name
in zero of the 650 specs and exactly once in the Lean file.

The fabrication is load-bearing. `Ty.isLowerableFuel` rejects a `.struct`
with empty fields, so a faithful model is not lowerable and the theorem
is false. `icarus-lowerable` on that spec prints `not_lowerable`, and
`t27c parse` shows one parameter with the dotted path intact, so the
split is not mirroring the AST either.

16 models carry the split. Fifteen assert `= false`, where a wrong model
changes nothing. The one asserting `= true` is the one where the
fabrication decides the answer.

An unfaithful model is worse than an empty one: the 114 empty models
announce themselves, and this one lists four correctly-named functions
in spec order and looks checked.

Refs #2893
@gHashTag
gHashTag enabled auto-merge (squash) August 29, 2026 21:48
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-29 21:48:20 UTC

Summary

Status Count
Total Open PRs 9
PRs with Failing Checks 7
PRs with All Checks Green 2
READY 1
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=f569da0c6c14 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 339d66d into master Aug 29, 2026
22 of 23 checks 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