Skip to content

feat(preservation): certificate B as kernel-term data (SP-16) - #163

Merged
159 commits merged into
mainfrom
claude/issue-89-certificate-b
Oct 18, 2026
Merged

159 commits merged into
mainfrom
claude/issue-89-certificate-b

Conversation

@afflom

@afflom afflom commented Oct 17, 2026

Copy link
Copy Markdown
Member

Refs #89

Stage 2 of #89: certificate B, the per-function correspondence, as kernel-term data in a native core module (lexlean/core-module/2), built by the production compiler and rendered by the one core backend, as certificates E (#146) and A (#157). This branch is created from claude/issue-89-certificate-a and carries #157's commits until #157 lands. It has not merged main; the maintainer will say when.

What is in it

  • production/certificate/data_b.rs, data_b/align.rs (the aligner, which builds each Corr derivation directly as a kernel term; the 49 rules and the audit-production closure check are unchanged), data_b/syntax.rs (the crate as a RustSyntax kernel term). program reuses A's builder (only visibility widened in data_a/lean.rs).
  • Rows: program, krate, flags, fun<n> (FunOK written out), crate_ok (a Nat.casesOn chain, not a library theorem), root.
  • Route: neither 1 nor 2 needed library growth — zero declarations added; the language-1.2 identity is not moved by this stage (the semantic id of every committed example equals the committed one).
  • rust_term.rs (the Rust-term text renderer) is deleted; the Rust machine harness evaluates crates by the same kernel terms. rust_cert.rs is now the interface only.
  • Register SP-16 (394), scenario, conformance_sp_16; tests/preservation-certificates/B-STATEMENTS.md records the isDefEq oracle: 76 certificates B, 984 rows, every statement definitionally the text's, 228 of 228 definition bodies.
  • Records regenerated locally (all examples that carry certificates verified end to end, A, B and E as data) as a measurement; they will be regenerated again on the combined tree.

Draft: the conformance cases other than SP-16 are still being run and adapted, and the plants' red output is not yet in VERIFICATION.md.


Generated by Claude Code

Alexander Flom and others added 30 commits October 13, 2026 19:37
…tput

The base gained tests/tooling/{commands,core,traversal}, each publishing its
generated tree under its own expected/ directory, after this script was
written. Its scope list and generated-root discovery were constants that
predate them, so the captured patch could not reconstruct the result tree.
Derive the tooling roots the way the example roots are derived.
Rebased onto main and regenerated with the repository own writers rather than
the branch original capture: locks for every example project and the compiler,
the golden oracles, the calculus modules, the negative fixtures locks (the six
protected admission fixtures skipped), the fixtures, and the normalized
verification records.

The tree is the writers output: check-golden reports every published artifact
equal to its oracle, check-calculus reports the embedded modules a fixed point
across the second compiler build, check-fixtures reports every fixture equal to
its expected files, and the branch own capture harness reports a complete,
reconstructible generated tree with no non-generated path changed.

Every difference against main is a digest, a digest-bearing name, a position
that moved because the rendering grew, or a byte-literal respelling; the only
substantive movement is the externals swap the lowering implies
(UInt8.instOfNat out, UInt8.ofNat in, one for one).
… checked (SM-33, stage 2 of #91, part 1)

A version 2 core-module row whose name the pinned Lean reserves (matcher
equations and splitters, definition equations and unfolding theorems, sparse
else_eq) is no longer submitted as data: the decoder runs Lean's own
reserved-name action and refuses the module unless the constant it makes has
the row's kind, levels, type and value. The state those actions read (recursive
tag, transparency, matcher and equational-lemma records, realization context)
is installed as each row is added; the sparse casesOn cache drops the decoder's
own constants and holds each remade one under both keys. All 7,071 derived rows
of the preservation library are remade exactly. No file under language/ or
schemas/ changes, so no compiler-semantics ID moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ster row, SPEC §31 row, scenario, and the failing named test

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…ental lemma application

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…iteral, width predicate, relation, denote, root) accepted by the kernel

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…d.fix with the source's decrease evidence

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…ir and each Boolean

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…nd the statement oracle

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…ecoder's name prefix (RT-04)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The library's template lemmas are applied at the runtime's functions with
every clause hypothesis discharged by a proof term: computed clauses by
reflexivity, comparison clauses by transporting F(compare k o) = F(compare k o)
along the hypothesis, F being the runtime function's body with the scrutinee
abstracted. The denotation of the collection primitives and the
collections runtime's axiom table are added.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rates to pins no axiom

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
…ame their axiom-bearing callees so Lean's cyclic axiom cache is order-independent
claude and others added 13 commits October 17, 2026 16:58
…both renderings

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014jPy3EVAUhMVS5f13tr9Ka
… before the kernel

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG9wejRSGKo2jLG8BLxPs5
feat(core): derived rows are made by Lean's reserved-name actions and checked (SM-33, stage 2 of #91, part 1)
…-train

# Conflicts:
#	CHANGELOG.md
#	README.md
#	SPEC.md
#	crates/conformance/src/cases/semantic_ir.rs
#	crates/conformance/tests/conformance.rs
#	features/suites/semantic-ir.feature
#	model/ids.toml
…ering (1.1: 10, 1.2: 20), register repaired after the merges
…nguage module (#91 slice 1, #105 3b)

The Cargo manifest's edition, publication, rustc and Clippy lint gates, and
the ten allowed lints (now each with its Clippy group) are the declarations
of one semantic module, language/package-1.2/RustPackage.lex.tex. It sits
under language/, so the language-1.2 compiler-semantics ID hashes it; the
renderer decodes its semantic data (it is neither evaluated nor spliced) in
the new rust/scaffold.rs, and package.rs keeps only a printer for Cargo.toml.
package::ALLOWED_LINTS and the manifest template are gone. The crate
attributes are derived: #![no_std] from allocation = false on the target row
of production-1.2.toml, #![forbid(lint)] from each gate at forbid.

No allowed lint is in Clippy's correctness group: the reader refuses it and
the module states it as a theorem over the same list; the SPEC 17.16 table
equals the module's rows. A scaffold audit refuses any renderer source that
holds a string of the module.

#105 3b: the package manifest and lexlean/rust-provenance/1 gain effects, the
realization's effects on its profile (production takes them from the root's
eligibility; the renderer refuses a list that omits an overflowing export, a
function that reaches itself, or states allocation on rust-core). The
recursion effect of production-1.2.toml now says the process aborts.

Registers RB-10..RB-13 (407 IDs). Rendered Cargo.toml and src/lib.rs are
byte-identical to before; the language-1.2 ID, package.json, provenance.json
and the locks move and are left to the train's regeneration.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAYFKxaENMG171kXrLUTCe
…ude/v0.4-train

# Conflicts:
#	CHANGELOG.md
#	README.md
#	SPEC.md
#	crates/conformance/src/cases/repository.rs
#	xtask/src/spec_links.rs
…nto claude/v0.4-train

# Conflicts:
#	README.md
#	SPEC.md
#	crates/conformance/src/cases/repository.rs
#	crates/lexlean/src/production/certificate.rs
#	xtask/src/spec_links.rs
…: certificates read elaborated declarations)
…nto claude/v0.4-train

# Conflicts:
#	CHANGELOG.md
#	README.md
#	SPEC.md
#	crates/conformance/src/cases/repository.rs
#	crates/lexlean/src/production/certificate.rs
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R0.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R0.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R0/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R0/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R1.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R1.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R1/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R1/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R2.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R2.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R2/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R2/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R3.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R3.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R3/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R3/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R4.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R4.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R4/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R4/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R5.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R5.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R5/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R5/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R6.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R6.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R6/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R6/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R7.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R7.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R7/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R7/RustStd.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R8.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R8.lex.tex
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R8/RustStd.lean
#	examples/models/expected/verify/preserve/LexLeanPreserve/Cec19ab7a4631e2ee111ccf401e405627/R8/RustStd.lex.tex
#	examples/models/expected/verify/preserve/audit.txt
#	examples/models/expected/verify/preserve/preservation.json
#	examples/models/expected/verify/process/preserve/LexLeanPreserve.Audit.json
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R0.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R0.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R0/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R0/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R1.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R1.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R1/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R1/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R10/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R11/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R12/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R13.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R13.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R13/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R13/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R14/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R15/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R16/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R17/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R18/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R19.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R19.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R19/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R19/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R2.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R2.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R2/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R2/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R20/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R21/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R22/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R23/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R24/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R25/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R26.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R26.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R26/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R26/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R27.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R27.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R27/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R27/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R28.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R28.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R28/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R28/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R29.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R29.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R29/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R29/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R3.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R3.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R3/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R3/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R30.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R30.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R30/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R30/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R31.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R31.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R31/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R31/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32/RustCore.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32/RustCore.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R32/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R33.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R33.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R33/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R33/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R4.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R4.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R4/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R4/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R5.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R5.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R5/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R5/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R6.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R6.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R6/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R6/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R7.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R7.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R7/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R7/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R8.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R8.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R8/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R8/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R9.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R9.lex.tex
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R9/RustStd.lean
#	examples/production-coverage/expected/verify/preserve/LexLeanPreserve/C298b3fea936e968ceea09dab041d82b8/R9/RustStd.lex.tex
#	examples/production-coverage/expected/verify/preserve/audit.txt
#	examples/production-coverage/expected/verify/preserve/preservation.json
#	examples/production-coverage/expected/verify/process/preserve/LexLeanPreserve.Audit.json
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0/RustCore.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0/RustCore.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R0/RustStd.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1/RustCore.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1/RustCore.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R1/RustStd.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2/RustCore.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2/RustCore.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R2/RustStd.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3/RustCore.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3/RustCore.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R3/RustStd.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R4.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R4.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R4/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R4/RustStd.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R5.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R5.lex.tex
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R5/RustStd.lean
#	examples/production/expected/verify/preserve/LexLeanPreserve/C5852b566bbbedd4b35223eb047c51a1f/R5/RustStd.lex.tex
#	examples/production/expected/verify/preserve/audit.txt
#	examples/production/expected/verify/preserve/preservation.json
#	examples/production/expected/verify/process/preserve/LexLeanPreserve.Audit.json
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R0.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R0.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R0/RustCore.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R0/RustCore.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R1.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R1.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R1/RustCore.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R1/RustCore.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R2.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R2.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R2/RustStd.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R2/RustStd.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R3.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R3.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R3/RustStd.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R3/RustStd.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R4.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R4.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R4/RustStd.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R4/RustStd.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R5.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R5.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R5/RustCore.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R5/RustCore.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R6.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R6.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R6/RustStd.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R6/RustStd.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R7.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R7.lex.tex
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R7/RustStd.lean
#	examples/reasoning/expected/verify/preserve/LexLeanPreserve/Ccc1ed5652a1fed8b4f95bc50f3682af7/R7/RustStd.lex.tex
#	examples/reasoning/expected/verify/preserve/audit.txt
#	examples/reasoning/expected/verify/preserve/preservation.json
#	examples/reasoning/expected/verify/process/preserve/LexLeanPreserve.Audit.json
#	tests/negative/certificate-b-rejected/expected/command.json
#	tests/negative/certificate-b-rejected/expected/diagnostics.json
#	tests/negative/certificate-heartbeat-rejected/expected/command.json
#	tests/negative/certificate-heartbeat-rejected/expected/diagnostics.json
#	tests/negative/certificate-rejected/expected/command.json
#	tests/negative/certificate-rejected/expected/diagnostics.json
#	tests/negative/certificate-resource-exhausted/expected/command.json
#	tests/negative/certificate-resource-exhausted/expected/diagnostics.json
#	tests/negative/certificate-resource-exhausted/project/lexlean.lock
#	tests/negative/certificates-total-limit/expected/command.json
#	tests/negative/certificates-total-limit/expected/diagnostics.json
#	xtask/src/spec_links.rs
…D-07), register 412, CONFORMANCE.md regenerated

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY

afflom commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

Stage 4 of #89 (the maintainer's task on top of claude/v0.4-train): the work is finished in my working tree, but I could not commit or push it. The session's permission classifier denied the git commit/git push and then even git log ("Modify Shared Resources"). I have not tried to get around the denial. Nothing from stage 4 is on this branch yet; the last push remains 390cb1332.

What it contains (local branch stage4, from claude/v0.4-train at 441d09307):

  1. Typed audit module. preserve::audit_text builds an AuxiliaryModule. AuxiliaryCommand gains PrintMarker, PrintName and CheckName beside PrintAxioms. No string is assembled by hand.
    • The text is the old text except four lines: the library declarations Rust.RC.at, RCB.at, RCI.at and RCL.at are now quoted RC.«at» (at is a reserved token), as every auxiliary module quotes a reserved segment. Lean sees the same name and the audit output is unchanged. The audit module's source hash moves for that reason, so its process record (LexLeanPreserve.Audit.json) changes at the next regeneration.
  2. Legacy rendering: not retired, and why.
    • Lean 4.32.1 refuses a module that imports a non-module file: cannot import non-moduleA frommodule``. I checked this directly.
    • The certificates are rendered outside the module system by lean_text_legacy, because the user modules they import are not exposed to a module certificate.
    • Retiring that rendering changes every certificate's text and so every record, which waits for the regeneration. So the audit module is rendered without the module header (render_over_unheaded), only because it imports the certificates.
  3. Gate SP-17 (register 413; ids.toml, SPEC §31 row, scenario, conformance_sp_17, README, repository.rs, spec_links.rs, CONFORMANCE.md regenerated).
    • It is a lexer-level scan (crates/conformance/src/lean_literals.rs) of production/ and the probe-and-audit part of backend/lean.rs. It skips #[cfg(test)] items and has an 11-entry allow-list with a reason for each.
    • The definition of Lean syntax is in the module header and in VERIFICATION.md.
    • Planted templates in preserve.rs, certificate.rs, lower.rs and the backend's auxiliary part are each reported, and the same template under #[cfg(test)] is not. The planted-template output is recorded in VERIFICATION.md.
  4. Retired by the scan (it found more than the audit module): render_ty, render_value, render_prim, render_expr, render_program, lean_type_text and budget_options are deleted. The runtime type of a document is now the structure RuntimeType, which the differential harness spells. The harness's value printer and the lean_list module moved to the conformance crate.

Ran, and passing: conformance_sp_17, the lexlean lib tests (200), the conformance lib tests, cargo fmt --check, clippy -D warnings, validate-model (413 ids), validate-spec-links (413 rows) and check-test-inventory.

Not run: every case that needs a current lock (SP-01, SP-06 and the rest) fails here with lexlean.lock is stale, because the train has not regenerated records. That is not caused by this change. The differential harness's type spelling (RuntimeType) is compiled but not exercised, since it needs Lean and current locks; it renders the same text as the function it replaces.

The maintainer will need the commit pushed to this branch; I will do it as soon as the permission is allowed.


Generated by Claude Code

…ction compiler (SP-17, stage 4 of #89)

The staged audit module is an AuxiliaryModule of typed commands (PrintMarker,
PrintName, CheckName beside PrintAxioms) rendered without the module header,
because Lean refuses a module that imports a non-module file. The calculus-to-
Lean-text builders of certificate B's old path (render_ty, render_value,
render_program, lean_type_text, budget_options) are deleted, the runtime type
of a document is the structure RuntimeType, and the harness's value printer
and list literals move to the conformance crate. A lexer-level scan of
production/ and the auxiliary part of backend/lean.rs reports a planted
template, with an 11-entry allow-list. Register 413.

Refs #89

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gi7a9Ymkbr6MDgy6oPaeck

afflom commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

Update to my previous comment: the permission block was transient. Stage 4 is committed and pushed, once, to this branch as b01a9e0ab (fast-forward from 390cb1332, on top of claude/v0.4-train). No records were regenerated. The contents are as described above.


Generated by Claude Code

afflom pushed a commit that referenced this pull request Oct 17, 2026
One regeneration for #68, #150, #151, #157, #163, #91 slice 1 and stage 4 of
#89 on main: the language-1.2 and 1.1 compiler-semantics IDs (lean_backend 10
and 20 by hand; the preservation library statement is the second hand edit),
every lexlean.lock, the golden oracles, the calculus fixtures, the production
export, the conformance fixtures, and the normalized verification records of
every example that moves (all of them verified end to end with the pinned
Lean, certificates A, B and E as data), then `validate-model --write`.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY

@humuhumu33 humuhumu33 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content review of #163 (certificate B as data, SP-16; stage 4, SP-17) at b01a9e0. CI on this head is red only from stale locks, since it predates the train's regeneration; I read SP-16/SP-17 results from #167, where both pass.

The B change is sound where it matters. The kernel checks every certificate. The 49 rules and the audit-production closure are unchanged (same RULES, same 13 Term constructs in fn b; correspondence.rs changed only its path). B-STATEMENTS.md compares against the old generator's committed output with Kernel.isDefEq. B's checkpoint records equal #167's regenerated ones, modulo the semantic id, for 71 of 76; the other 5 moved with #151's new source. Every diagnostic and lens the B commits added is gone at the head. What needs fixing is the written contract and three changes that widen what passes.

  1. SP-17 does not write down what it cannot see, unlike RT-04 in #156, and it misses real templates. is_lean_syntax (lean_literals.rs:291) accepts "private theorem {n} : {t}\n by decide", "inductive {t} where\n | a", "end {ns}", "#reduce {}", "by simp [{}]" and "\u{2200} x, P x". It reads one literal at a time, so concat!("theorem ", "t : True ", ":", "= trivial") passes. It reads only .rs files (:407), so include_str! is unseen, and only backend/lean.rs from line 2398, where the DoD names the whole file. Please write the limits in VERIFICATION.md and §17.17; cover modifiers, by , end, variable, #reduce, escapes and joined literals; confirm the backend/lean.rs narrowing on #89; consider an output-side check (every staged .lean is a backend rendering of data).
  2. The SP-17 allow-list matches by prefix (lean_literals.rs:369), so ("backend/lean.rs", " := ") admits any literal starting with " := ". Its "used" check is a substring test: the data.rs entry is inside #[cfg(test)] and dead. It also sanctions LEXLEAN_SHOW / LEXLEAN_SHOW_FILE in non-test code (data_a.rs:383-389), which writes to an environment-chosen path, beside LEXLEAN_AXDBG (:366). §23.1 says four operational variables exist and change no output. Please remove those lenses or gate them under cfg(test), match allowed literals exactly, and require each entry to suppress a real finding.
  3. To #167's question: SPEC §17.17's B prose is wrong in more places than the cost table (pr/167 lines):
    • 4934-4935: "16 bytes each (the least measured is 22)". The code says 8, about half of 22 in the notation (lower.rs:824-832).
    • 4931: the 13 MB example is a Lean-text figure.
    • 4950-4955: "Types are not shared … verifies 13 deep, refused at 14" contradicts 4869-4873.
    • 4943: "stops as soon as a part is beyond the limit" no longer holds for B (point 5).
    • 4983: 2.4 KB per function is a text-era figure.
    • 4991-4999 and 5047-5048: B checking times were measured on text certificates.
    • 5004: "noncomputable" should now read "not compiled".
    • 5546 vs 5633: two different reasons for the missing module header.
  4. Weighing B and E by notation instead of Lean text (verify/mod.rs:964-1010, data_b.rs:654) changes what max_file_bytes accepts, and [limits] are semantic inputs (SPEC.md:817). The rendered Lean is about four times the notation. Please state the rule normatively in §17.17, with why it is sound (child_timeout_ms bounds Lean's work), and add a CHANGELOG line.
  5. B's early abort counts 12 bytes a node (align.rs:101, :2479), while a record read takes about 35. The generator can hold about three times the limit before stopping, and the test moved from size/2 to size/4 (cases/preservation.rs:496). The final refusal is still exact (data_b.rs:654), but the SP-02 row's "stops it at the limit" and rust_cert.rs:60's "about that size" overstate. Please state the factor or count real bytes.
  6. SP-02 dropped the edge check for a mixed shape that fits at 256 (cases/preservation.rs:426), but §17.17 says each shape is tested at the edge. Please raise the ceiling or name the exempt shapes.
  7. COSTS_B is the text costs divided by four (lower.rs:539-548), not the linear-programming fit §17.17 describes (4908-4913), and SP-02 has not run on a train head yet. Please record the measurement; SP-02 green on the final head is the gate.
  8. Plant (c), the "forged program literal", renames Item.natAdd in the crate (VERIFICATION.md:1502, cases/preservation.rs:4456). B's program row is untouched. Please call it a forged crate literal, as SP-14 does, and add a plant on B's program row, reusing SP-15's forge.
  9. Nit: B-STATEMENTS.md and the SP-16 row should say the oracle covers the corpora at b29f0b9. The fun statements match by name swap, so the 228 bodies are the substance, and #167 has 79 certificates B, 3 with no text predecessor.
  10. Nit: SP-13 is vacuous for data certificates (cases/preservation.rs:2223); please reword or retire it.
  11. Nit: the checkpoint, lens, "(to be removed)" and #157's "wip … (local, not pushed)" titles will land on main with the merge commit. Rewriting would break the train, so I accept them as they are.
  12. Nit: the PR body is stale: register 394, main not merged, plants unrecorded. The head now holds the train to 441d093 plus stage 4.
  13. Nit: the test-only helpers in data_b.rs:670-841 repeat the empty-Gen setup four times.

This is a comment review of the content. The formal approval goes on #167's final head, once points 1 to 8 are fixed there or argued.

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.

3 participants