Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
1260c70
test(backend): specify explicit shared byte lowering
Oct 11, 2026
2c52bfb
fix(backend): lower byte literals with explicit local octets
Oct 11, 2026
452386d
ci: add explicit own-devcontainer generator maintenance
Oct 11, 2026
a550a08
fix(ci): refresh final package provenance and retain retirement queries
Oct 11, 2026
1fd4550
fix(ci): retire fixture lock writer build roots
Oct 11, 2026
ffa8a13
fix(ci): capture complete generated trees against HEAD
Oct 11, 2026
58cd25a
fix(ci): preserve clean checkout before capture tests
Oct 11, 2026
c89c31e
fix(test): validate exact artifact bytes after octet sharing
Oct 11, 2026
8f0da54
fix(ci): capture the tooling projects generated trees as generated ou…
humuhumu33 Oct 13, 2026
c384e62
fix(golden): regenerate complete explicit byte backend outputs
humuhumu33 Oct 13, 2026
9f910eb
feat(core): derived rows are made by Lean's reserved-name actions and…
humuhumu33 Oct 16, 2026
559b408
#89 stage 3: register SP-15 (certificate A as kernel-term data): regi…
claude Oct 16, 2026
9949f67
#89 stage 3: kernel terms by free variables, placeholders, and increm…
claude Oct 16, 2026
80b96cd
#89 stage 3: certificate A as kernel-term data, first root (program l…
claude Oct 16, 2026
0580d20
#89 stage 3: certificate A data: lets by substitution, axioms by cons…
claude Oct 16, 2026
3b01fcd
#89 stage 3: certificate A data: encoders and recursion plans
claude Oct 16, 2026
68720c0
#89 stage 3: certificate A data: structural recursion by the argument…
claude Oct 16, 2026
556839c
#89 stage 3: certificate A data: mutual structural recursion on one t…
claude Oct 16, 2026
9441399
#89 stage 3: certificate A data: well-founded recursion by WellFounde…
claude Oct 16, 2026
1509a62
#89 stage 3: certificate A data: violation matches by cases on the pa…
claude Oct 16, 2026
cc00f2f
#89 stage 3: certificate A recorded in the notation, the SP-15 case a…
claude Oct 16, 2026
f054086
fix(#91): SM-33 scenario; the imports constant no longer shares the d…
claude Oct 16, 2026
3184610
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 16, 2026
0abe254
Certificate A: collection templates and key comparisons as kernel terms
claude Oct 16, 2026
c1aee39
Merge the collection templates as data into claude/issue-89-certifica…
claude Oct 16, 2026
e07c156
#89 stage 3: certificate A data: boundary validators and entry as ker…
claude Oct 16, 2026
dd5ebe3
#89 stage 3: certificate A data: boundary validators in the crate's e…
claude Oct 16, 2026
e40874a
#89 stage 3: certificate A data: a definition a model construct elabo…
claude Oct 16, 2026
41c1c44
Merge the collection templates into the boundary
claude Oct 16, 2026
82e4615
#89 stage 3: certificate A data: the group's implementation records n…
claude Oct 16, 2026
a870346
Merge the boundary validators and entry as data into claude/issue-89-…
claude Oct 16, 2026
d9c6655
#89 stage 3: the statement oracle compares by the kernel's definition…
claude Oct 16, 2026
07590c8
#89 stage 3: the record of the statement oracle over the committed ce…
claude Oct 16, 2026
cd7d3d2
#89 stage 3: the text generator of certificate A is deleted from the …
claude Oct 16, 2026
b3682de
#89 stage 3: SPEC, CHANGELOG, and the source scan of SP-15
claude Oct 16, 2026
43aa048
#89 stage 3: certificate A is clippy-clean under -D warnings
claude Oct 16, 2026
6757a48
Merge the clippy cleanup of certificate A into claude/issue-89-certif…
claude Oct 16, 2026
deaa451
#89 stage 3: the conformance cases read certificate A as data (SP-10 …
claude Oct 16, 2026
8a73c1c
#89 stage 3: SP-02 reads the root theorem of certificate A as a row
claude Oct 16, 2026
d30c246
#89 stage 3: the certificate-rejected fixture plants its defect in ce…
claude Oct 16, 2026
71354a3
fix(#91): the harness compiles shipped modules with their source root
claude Oct 16, 2026
10b2034
test(bootstrap): register BS-01, scenario, SPEC 17.23 and the failing…
claude Oct 16, 2026
b4d3274
feat(bootstrap): the axiom-output parser as language-1.2 source (work…
claude Oct 16, 2026
34de345
Merge origin/claude/issue-89-typed-certificates (#146, 3b25b10a7) int…
claude Oct 16, 2026
f0202d9
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 16, 2026
9ac7fa6
wip(bootstrap): axiom policies aligned; decimal formatting under inve…
claude Oct 16, 2026
ea75694
#89 stage 3: SP-05 reads certificate A at its notation path; the reso…
claude Oct 16, 2026
5407b6b
#89 stage 3: the certificate-resource-exhausted limit is 1 MiB for th…
claude Oct 16, 2026
703e71a
#89 stage 3: the certificate-resource-exhausted lock is current
claude Oct 16, 2026
30d47a0
wip(bootstrap): unrolled decimal, conditionals for connectives; certi…
claude Oct 16, 2026
dc15c0b
#89 stage 3: certificate A weighs its recorded notation against max_f…
claude Oct 16, 2026
9960874
#89 stage 3: certificate A data: the boundary derivation follows the …
claude Oct 16, 2026
d80980a
Merge the source-derived boundary into claude/issue-89-certificate-a
claude Oct 16, 2026
3010cfd
feat(bootstrap): axiom-output parser verified under Lean, packages ce…
claude Oct 16, 2026
289b2b1
docs(bootstrap): VERIFICATION entry for BS-01 plants
claude Oct 16, 2026
deceaad
Merge origin/main into claude/issue-92-pilot-axiom-parser
claude Oct 16, 2026
6387196
Merge origin/main (#146) into claude/issue-89-certificate-a
claude Oct 16, 2026
270ebc4
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 16, 2026
747e4c8
chore(bootstrap): register count 393 after merging main; relock boots…
claude Oct 16, 2026
48e943c
chore(bootstrap): regenerate expected records and packages after main…
claude Oct 16, 2026
ac11e6c
fix(#91): a certificate rendered outside the module system leaves the…
claude Oct 16, 2026
0d8fe99
docs(bootstrap): say why the vendored Text module is temporary
claude Oct 16, 2026
1e4ce71
fix(#91): certificates-total-limit records the longer decoder's bytes
claude Oct 17, 2026
3e70d97
wip: the sizes of certificate A by stress family (local, not pushed)
claude Oct 17, 2026
1ecbff0
wip: the sizes of the mixed stress shapes (local, not pushed)
claude Oct 17, 2026
3a5a3d6
wip: the size-limit message names the certificate (local, not pushed)
claude Oct 17, 2026
4077777
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 17, 2026
b29f0b9
#89 stage 2: certificate B as kernel-term data (SP-16): the aligner b…
claude Oct 17, 2026
e6064c2
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 17, 2026
59bfa33
#89 stage 2: certificate B: rustfmt, the shape-test lint allowance of…
claude Oct 17, 2026
60ed15b
Merge origin/main into claude/issue-92-pilot-axiom-parser
claude Oct 17, 2026
1fad393
#89 stage 2: B-STATEMENTS.md: the record of the statement oracle (76 …
claude Oct 17, 2026
1df33fa
#89 stage 2: verify records of the examples verified so far, certific…
claude Oct 17, 2026
8e8eae5
feat(packages): source packages, the registry rows, and the cases (Re…
claude Oct 17, 2026
39b87f8
#89 stage 2: verify records of production, certificates A, B and E as…
claude Oct 17, 2026
867d280
#89 stage 2: verify records of production-coverage and the examples a…
claude Oct 17, 2026
8633042
#89 stage 2: verify records, reasoning and the remaining examples (ch…
claude Oct 17, 2026
3a276ca
docs(packages): SPEC 10.5, the plants, CHANGELOG, README (Refs #161)
claude Oct 17, 2026
d3847ba
Merge main (#153, #159) into claude/issue-161-source-packages
claude Oct 17, 2026
f7a4496
test(packages): a non-canonical package file stays as its package wro…
claude Oct 17, 2026
c07981f
wip: the edge of the mixed shapes by certificate A alone (local, not …
claude Oct 17, 2026
72c8e37
#89 stage 2: the certificate-b-rejected overlay plants its defect in …
claude Oct 17, 2026
62ac764
#89 stage 2: fixture expectations (checkpoint, local)
claude Oct 17, 2026
9b6bbb0
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 17, 2026
46302c4
Merge main (#82 and the rest) into claude/issue-161-source-packages
claude Oct 17, 2026
4f0b5d7
Merge origin/main into claude/issue-92-pilot-axiom-parser
claude Oct 17, 2026
3ba2e85
#89 stage 2: VERIFICATION.md: certificate B as data and its plants
claude Oct 17, 2026
d060581
fix(bootstrap): regenerate bootstrap/ after #82; give rustc a 64 MiB …
claude Oct 17, 2026
113129b
wip: the wide-match sizes of certificate A (local, not pushed)
claude Oct 17, 2026
c4c579f
wip: the fitting enumeration is measured by count (local, not pushed)
claude Oct 17, 2026
bed743f
fix(#91): a row private to another module is data
claude Oct 17, 2026
8fe8800
wip: the fitting enumeration is 240 constructors, recorded in the not…
claude Oct 17, 2026
9f41fc5
Revert "fix(#91): a row private to another module is data"
claude Oct 17, 2026
060a46b
fix(#91): the text library's private names name the module it compile…
claude Oct 17, 2026
9d2a403
#89 stage 2: a lens on the aligner's scaling (to be removed)
claude Oct 17, 2026
d6b25cb
#89 stage 2: the kernel builder remembers terms that mention no place…
claude Oct 17, 2026
74be4fd
#89 stage 2: per-phase timing of a rule application (to be removed)
claude Oct 17, 2026
64041cb
#89 stage 2: node-walk counter (to be removed)
claude Oct 17, 2026
69c34e8
#89 stage 2: the kernel builder opens a lemma once (checkpoint)
claude Oct 17, 2026
39f3b04
chore(#91): regenerate the records the text library's private names move
claude Oct 17, 2026
f0a3563
#89 stage 2: scaling lens at 400 arms (checkpoint)
claude Oct 17, 2026
1547a6b
#89 stage 2: build/render timing (checkpoint)
claude Oct 17, 2026
480fe16
#89 stage 2: the kernel builder remembers the loose-variable bound of…
claude Oct 17, 2026
8a84467
Merge pull request #160 from UOR-Foundation/claude/issue-92-pilot-axi…
afflom Oct 17, 2026
ec51fd7
Merge remote-tracking branch 'origin/main' into claude/issue-91-deriv…
claude Oct 17, 2026
89fb2f1
#89 stage 2: scaling lens (checkpoint)
claude Oct 17, 2026
bd376aa
chore(#161): regenerate the language-1.2 records on the combined tree…
claude Oct 17, 2026
d25820c
#89 stage 2: the placeholder-free shortcut belongs to resolve, not to…
claude Oct 17, 2026
2bc5b01
Merge main (#160, bootstrap/) into claude/issue-161-source-packages
claude Oct 17, 2026
bc79505
#89 stage 2: remove the timing lenses
claude Oct 17, 2026
db18102
wip: the data behind the costs of certificate A (local, not pushed)
claude Oct 17, 2026
6e3952d
#89 stage 2: the crates the Rust machine evaluates are computable def…
claude Oct 17, 2026
017a33e
#89 stage 2: keep the machine module on failure (to be removed)
claude Oct 17, 2026
ed51aad
chore(#91): regenerate the records #160 brings under the old language…
claude Oct 17, 2026
7d8dfde
chore(#161): regenerate bootstrap/ and the records of compiler, stdli…
claude Oct 17, 2026
e497690
#89 stage 2: remove the machine-module diagnostic
claude Oct 17, 2026
698c2fd
wip: the bound data takes mixed scalings (local, not pushed)
claude Oct 17, 2026
66ebf12
fix(preservation): weigh certificate B by its recorded notation; read…
claude Oct 17, 2026
b5bf6fe
test(preservation): weigh certificate B by its recorded notation in t…
claude Oct 17, 2026
f738310
docs(packages): the README capability table claims PK-01..PK-04 (RP-11)
claude Oct 17, 2026
5855fe0
wip: the least costs of certificate A, refitted to the recorded notat…
claude Oct 17, 2026
fcf2d26
test(preservation): SP-09 reads certificates A and B as data
claude Oct 17, 2026
849aa3f
test(preservation): SP-15 forges the first program literal on either …
claude Oct 17, 2026
bae3adf
feat(packages): the bootstrap pilot imports the standard library's Te…
claude Oct 17, 2026
00f3a30
Lower the expression cost of the certificate A bound to fit the large…
claude Oct 17, 2026
ea0a4ed
Merge pull request #162 from UOR-Foundation/claude/issue-161-source-p…
afflom Oct 17, 2026
7440de2
Merge main (#162) into claude/issue-161-pk-05
claude Oct 17, 2026
4c4fba3
Merge origin/main (ea0a4eda, #162) into certificate A
claude Oct 17, 2026
84c816e
perf(preservation): calibrate the lower bounds on certificate B to it…
claude Oct 17, 2026
29752bc
perf(preservation): weigh certificate E by its recorded notation, as …
claude Oct 17, 2026
2be70e4
test(preservation): the exhausted-resource fixture's limit holds its …
claude Oct 17, 2026
ea8baad
Merge origin/main (#162, #160, #153...) into claude/issue-91-derived-…
Oct 17, 2026
243f0c7
Merge pull request #165 from UOR-Foundation/claude/issue-161-pk-05
afflom Oct 17, 2026
7fabb79
Merge remote-tracking branch 'origin/main' into m155
claude Oct 17, 2026
295a79a
test(preservation): halve certificate E by its recorded weight; a sha…
claude Oct 17, 2026
0b82bd8
test(preservation): B's lower bounds and early-abort check follow its…
claude Oct 17, 2026
00ecb49
test(preservation): the early-abort limit of a record copy is a quart…
claude Oct 17, 2026
543e50c
Merge origin/main into fix/explicit-shared-byte-regressions
claude Oct 17, 2026
390cb13
test(preservation): remove the developer lenses of certificate B
claude Oct 17, 2026
e30230a
feat(models): decode IEEE-754 bit patterns as exact dyadic rationals …
claude Oct 17, 2026
21f01a4
fix(backend): port explicit byte lowering onto current main
claude Oct 17, 2026
f329834
style(models): rustfmt the MD-13 oracle vectors
claude Oct 17, 2026
e465743
feat(semantic-ir): byte and fixed-width widening conversions in langu…
claude Oct 17, 2026
5a04afd
chore(#91): regenerate on the combined language-1.2 identity (main 24…
Oct 17, 2026
dfe7b65
cargo fmt
claude Oct 17, 2026
22663a7
docs(verification): record the largest elaborable byte literal under …
claude Oct 17, 2026
7653ed1
Plants: a lowering the generator refuses in lockstep counts as caught…
claude Oct 17, 2026
97a3df7
Merge pull request #155 from UOR-Foundation/claude/issue-91-derived-rows
afflom Oct 17, 2026
6375f32
Merge remote-tracking branch 'origin/train/dyadic' into claude/v0.4-t…
Oct 17, 2026
a90831d
Merge remote-tracking branch 'origin/train/widening' into claude/v0.4…
Oct 17, 2026
aa6193e
Merge remote-tracking branch 'origin/fix/explicit-shared-byte-regress…
claude Oct 17, 2026
c245450
train: register 406, lean_backend identities for the byte-literal low…
Oct 17, 2026
8ef72fc
feat(rust): the package scaffolding is data, read from an embedded la…
claude Oct 17, 2026
1b46538
Merge remote-tracking branch 'origin/train/package-scaffold' into cla…
Oct 17, 2026
24ed568
Merge remote-tracking branch 'origin/claude/issue-89-certificate-a' i…
Oct 17, 2026
a6e25ef
train: certificate A's data path refuses the widening conversions (#1…
Oct 17, 2026
ce6dfc3
Merge remote-tracking branch 'origin/claude/issue-89-certificate-b' i…
Oct 17, 2026
441d093
train: explicit dispositions for ToInt and ToNat in certificate.rs (P…
Oct 17, 2026
b01a9e0
feat(preservation): no Lean source text template remains in the produ…
claude Oct 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ compiler/.lexlean/
# Claude Code worktrees and session state (never part of the release set).
.claude/
stdlib/.lexlean/
bootstrap/.lexlean/
130 changes: 127 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,91 @@ versions, and the entries below say what each tag does and does not claim.

## Unreleased

- The decoder of a version 2 core module no longer takes a derived row from
the data (`SM-33`, SPEC.md §17.10, part 1 of #91 stage 2): a row whose name
the pinned Lean reserves (matcher equations and splitters, definition
equations and unfolding theorems, sparse `else_eq`) is made by Lean's own
reserved-name action and refused unless it equals the row. Every one of the
preservation library's 7,071 derived rows is remade exactly; no source,
lock, or compiler-semantics ID changes.
- IEEE-754 bit patterns as exact dyadic rationals (#118, SPEC.md §17.12 rule
15, `MD-13`, language 1.2 only; the register is 404 rows). `Models.Recognizer`
decodes `binary32` and `binary64` bit patterns (and their little-endian
`Bytes` forms) to `(sign, mantissa, exponent)` over `nat` and `int`,
rejecting out-of-width patterns and the non-finite biased exponents, and
derives `round(a * b / c * 2^32)` scale ratios (ties to even) by exact
integer division; 43 theorems (39 in `Models.Recognizer`, 4 in `Models.Main`) are closed by `decide`. The change is to the
`models` example and the register only: no compiler source moves.

- Widening conversions (#114, SPEC.md §17.12 *Widening conversions*, `SM-32`,
language 1.2 only). The total primitives `to_int` (any fixed-width integer to
`Int`) and `to_nat` (any unsigned fixed-width integer to `Nat`) elaborate in
linking to a single-evaluation `let` over bit tests (`bit_and`, `equal`) and a
balanced exact sum, so a production root decodes a byte string to integers
with no decimal text in its lowered program. Under language 1.0 and 1.1 they
are rejected with `LLT4001` and those identities are unchanged. Certificates read
elaborated declarations, so the certificate data needs no `to_int`/`to_nat`
rule. The register is 404 rows with `SM-32`; the language-1.2
compiler-semantics, semantic-IR (`12` to `13`), source, semantic, and build
IDs move, and the oracle tables are at versions 4 (`known-differences`) and 4
(`known-non-overlap`).
- The Rust package scaffolding is data (#91 slice 1, SPEC.md §17.16, `RB-10`..`RB-13`, language 1.2).
The Cargo manifest's edition, publication, rustc and Clippy lint gates, and the ten allowed
lints, each now with its Clippy group, are the declarations of one semantic module,
`language/package-1.2/RustPackage.lex.tex`, which the compiler embeds, hashes into the
language-1.2 compiler-semantics ID, and reads by decoding its semantic data (it is not
evaluated and not spliced). `package::ALLOWED_LINTS` and the manifest template are gone; the
crate attributes are derived, `#![no_std]` from `allocation = false` on the target row of
`language/production-1.2.toml` and `#![forbid(lint)]` from each gate at `forbid`. No allowed
lint is in Clippy's `correctness` group, which the reader refuses and the module states as a
theorem; the SPEC §17.16 table equals the module's rows. `lexlean/rust-provenance/1` and the
package manifest `lexlean/rust-package/1` gain `effects` (#105 step 3b): the effects of the
realization on its profile, which production takes from the root's eligibility and the
renderer checks against what the package shows of itself; the `recursion` effect of
`language/production-1.2.toml` now says that exhausting the stack aborts the process.
Rendered `Cargo.toml` and `src/lib.rs` are byte-identical to the previous renderer's. The
language-1.2 compiler-semantics ID moves once; languages 1.0 and 1.1 are unchanged. The
register gains `RB-10`..`RB-13`.
- Source packages (#161, SPEC.md §10.5, `PK-01`..`PK-04`, language 1.2 only).
A project declares `[[source_package]]` tables (`package`, `version`, `kind`
`path`, `path`), each naming a member project of the workspace an optional
`lexlean-workspace.toml` at the repository root lists, and imports its
modules by their own Lean names (`\importmodule{LexLeanStd.Text}`). The lock
gains `[[source_package]]` rows (tree digest over the package's manifest and
source files, manifest digest, version, prefix, its own packages) that every
command recomputes; a changed byte or version is `LLC0105` naming both
digests, a pin for an undeclared package `LLC0106`, a module prefix claimed
twice `LLC0107`, a project or path outside the workspace rule `LLC0108`
(a symlink or an escaping path is `LLS8001`), and an import of a package the
scope does not declare `LLR3009`. A package definition is an ordinary
definition of the importing project: its own `production:` roots are not
roots of the importer and nothing is re-exported. `verify` replays the
package modules under the package's prefix, with the package as their
`origin` in the build manifest, the snapshot, and the attestation; `fmt`
never writes a package file. The schema change moves the language-1.2
compiler-semantics ID once; languages 1.0 and 1.1, and a language-1.2 project
without source packages, keep their bytes apart from that identity. The
register gains `PK-01`..`PK-05` (403 rows with `SL-01`, `BS-01`, and `LM-01`..`LM-03`, `LM-13`); `PK-05`: the `bootstrap/`
pilot imports `stdlib/` through a source package, its vendored copy of `Text`
and the equivalence assertion of `BS-01` are deleted, the repository gains a
root `lexlean-workspace.toml`, and `xtask` stages a project with its packages.
- The first component of the compiler's own pipeline as language-1.2 source:
the exact axiom-output parser (SPEC.md §17.23, §22.5, `BS-01`, #92 step 4;
no new diagnostic code, no change to the language-1.2 identity).
`bootstrap/` is a language-1.2 project beside `compiler/` and `stdlib/`
under the module prefix `LexLeanBoot`; its `AxiomOutput` module declares
`parseAuditOutput` and `isClosedLeanName` as production roots for
`rust-std`. A project cannot import another's modules, so `Text` is a copy
of the standard library's without its `production` declarations, compared
with `stdlib/src/Text.lex.tex` on every run. `BS-01` runs the committed
golden vectors of `tests/golden/axiom-parser/` and a seeded corpus of
generated, wrapped, and mutated audit outputs against the Rust parser
`verify::axiom` (the stage-0 oracle, unchanged) under the calculus
evaluator and under the pinned rustc, detects seven planted defects, and,
under the pinned Lean, compares the certified packages the production
export publishes with the committed ones under
`tests/production-export/bootstrap/`. `bootstrap/expected/` holds the
example-gate records. `BS-01` brings the register to 398 IDs.
- A language-1.2 `tokenizer` elaborates, in linking, to ordinary definitions
over the embedded text-laws library and to generated theorems the library
proves (SPEC.md §17.12, `LM-01`..`LM-03`, `LM-13`, #30). The library is
Expand Down Expand Up @@ -74,6 +159,45 @@ versions, and the entries below say what each tag does and does not claim.
`leanchecker`; a mismatch is `LLI9001`, naming the record and both digests.
Every CI job installs the same pinned toolchain, so this held by practice
and is now checked.
- No Lean source text template remains in the production compiler (SPEC.md §17.17, `SP-17`; stage 4 of #89): the staged audit module is an auxiliary module of typed commands, the calculus-to-Lean-text builders that certificate B's old path left (`render_ty`, `render_value`, `render_program`, `lean_type_text`, `lean_list`, `budget_options`) are deleted or moved to the conformance crate, and a lexer-level scan of `production/` and the auxiliary part of `backend/lean.rs` is shown to fail on a planted template (register 413).
- Certificate B as kernel-term data (SPEC.md §17.17, `SP-16`; stage 2 of #89).
The per-function correspondence of every production root is no longer written
as Lean text by `production/rust_cert.rs` and `production/rust_term.rs`: the
compiler builds it as a native core module of schema `lexlean/core-module/2`
(`production/certificate/data_b`) on the vehicle of certificates E and A. The
program and the crate are kernel terms (the crate constructor for constructor
as the text printed it), each of the 49 rules of `Corr` is applied with every
argument written (the judgment the aligner derives, and the values it holds),
`FunOK` is written out as its witnesses and the derivation, and `crate_ok` is
a case analysis on the function index in place of a tactic block. The library
did not grow: no explicit-argument form was needed, so the language-1.2
identity does not move for this stage. The verify record holds the module in
the authoring notation (`R<i>/RustStd.lex.tex` in place of `.lean`), which
reads back to the data byte for byte, and `preservation.json` and the
production export bind those bytes. The statements of the 76 certificates B
of the four corpora are those the text stated, up to the kernel's
definitional equality (`tests/preservation-certificates/B-STATEMENTS.md`).
The aligner moved to `production/certificate/data_b/align.rs`, the Rust-term
renderer is gone, and the Rust machine's conformance harness evaluates the
crates by the same kernel terms. No diagnostic code is new; the register
gains `SP-16` (394 rows).
- Certificate A as kernel-term data (SPEC.md §17.17, `SP-15`; stage 3 of #89).
The preservation certificate of every production root is no longer written as
Lean text by `production/certificate.rs`: the compiler builds it as a native
core module of schema `lexlean/core-module/2` on the vehicle of
certificate E (`production/kernel.rs`), the program literal, encoders, width
predicates, relation theorems, validators, and entry as rows, each lemma
applied with every argument written, structural and well-founded recursion as
recursor and `WellFounded.fix` terms with the source's own decrease theorems,
and the collection templates' clause proofs as kernel terms in place of
tactics. The verify record holds the module in the authoring notation
(`R<i>.lex.tex` in place of `R<i>.lean`), which reads back to the data byte
for byte, and `preservation.json` binds those bytes. The statements of the 57
certificates A of the four corpora are those the text stated, up to the
kernel's definitional equality
(`tests/preservation-certificates/A-STATEMENTS.md`). Roughly 5 000 lines of the
text generator are gone from `production/certificate.rs`. Certificate B is
still Lean text. No diagnostic code is new; the register gains `SP-15` (403 rows).
- Certificate E as kernel-term data (SPEC.md §17.17, `SP-14`; stage 1 of #89,
stage 5 of #27). The composition certificate of every production root is no
longer written as Lean text by `production/certificate.rs`: the compiler
Expand All @@ -88,9 +212,9 @@ versions, and the entries below say what each tag does and does not claim.
policies, forbidden constants) and the audit module prints and checks the
axioms of every one of its rows. The statements of the 76 certificates E of
the four corpora are those the text stated, kernel term for kernel term
(`tests/preservation-certificates/E-STATEMENTS.md`). Certificates A and B are
still Lean text, so the data certificate is rendered outside the module
system until they follow. Languages 1.0 and 1.1 have no certificates and are
(`tests/preservation-certificates/E-STATEMENTS.md`). Certificate B (and, until
stage 3 of #89, certificate A) is still Lean text, so the data certificate is
rendered outside the module system until they follow. Languages 1.0 and 1.1 have no certificates and are
untouched. No diagnostic code is new; the register gains `SP-14` (383 rows with `SP-13`, `RB-09`, and `PX-13`).
- Program equalities over all inputs (#117, SPEC.md §17.12, `PF-20`..`PF-23`,
no new diagnostic code). Language 1.2 orders `Int` and every fixed-width
Expand Down
Loading
Loading