Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 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
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
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
34de345
Merge origin/claude/issue-89-typed-certificates (#146, 3b25b10a7) int…
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
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
6387196
Merge origin/main (#146) into claude/issue-89-certificate-a
claude Oct 16, 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
b29f0b9
#89 stage 2: certificate B as kernel-term data (SP-16): the aligner b…
claude Oct 17, 2026
59bfa33
#89 stage 2: certificate B: rustfmt, the shape-test lint allowance of…
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
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
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
3ba2e85
#89 stage 2: VERIFICATION.md: certificate B as data and its plants
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
8fe8800
wip: the fitting enumeration is 240 constructors, recorded in the not…
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
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
89fb2f1
#89 stage 2: scaling lens (checkpoint)
claude Oct 17, 2026
d25820c
#89 stage 2: the placeholder-free shortcut belongs to resolve, not to…
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
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
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
00f3a30
Lower the expression cost of the certificate A bound to fit the large…
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
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
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
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
0dedb4b
fix(rust): effects are the root's to state; the renderer no longer se…
claude Oct 17, 2026
76e77b5
Merge remote-tracking branch 'origin/train/package-scaffold' into cla…
claude Oct 17, 2026
89b7bcf
fix(#117): the runtime gates know LexLeanLaws, and their namespace li…
claude Oct 16, 2026
e858151
Merge remote-tracking branch 'origin/main' into claude/v0.4-train
claude Oct 17, 2026
7053b21
train: the preservation library states fromOrdering.eq_1 for the expl…
claude Oct 17, 2026
e24a7ff
train: regenerate every record the combined tree moves
claude Oct 17, 2026
d7a02d8
verification: the size-limit fixture and the data certificates
claude Oct 17, 2026
747e83b
spec: certificate B is weighed by its notation; the field-read floor …
claude Oct 17, 2026
cde36cd
train: no ignored test remains; SM-32 precedes SM-33; one README row …
claude Oct 17, 2026
ec89c45
train: SP-02 states 240 constructors; SPEC §17.17 and VERIFICATION fo…
claude Oct 17, 2026
2b0096c
train: the OR-04 plants on Coverage.Prims.text follow the oracle crat…
claude Oct 17, 2026
dd8691b
fix(rust): address review of the package scaffold (#91 slice 1)
claude Oct 17, 2026
878df44
Merge remote-tracking branch 'origin/train/package-scaffold' into cla…
claude Oct 17, 2026
9e0acfd
verification: the SP-15 plant record (certificate A as data), and the…
claude Oct 18, 2026
f1e1157
train: regenerate every record on the final tree
claude Oct 18, 2026
0c206d9
train: the gate's three faults on f1e11576e, each with its case passi…
claude Oct 18, 2026
f574885
ci: the host matrix's limit follows the slowest host, 300 minutes
claude Oct 18, 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
  •  
  •  
  •  
15 changes: 9 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -809,12 +809,15 @@ jobs:
- { os: macos-15, target: aarch64-apple-darwin }
- { os: windows-2022, target: x86_64-pc-windows-msvc }
runs-on: ${{ matrix.os }}
# The Intel macOS runner takes 51 to 61 minutes for this job, which is the
# limit it used to have: a leg cancelled at the limit says nothing about the
# code, and the only defence against it was to run the leg again. Twice the
# slowest observed time leaves the limit a bound on a hung job, not a race
# with the runner's speed.
timeout-minutes: 120
# The Intel macOS runner is the slowest host: 51 to 61 minutes for this job
# before certificates A and B were kernel data, and past 120 minutes (the
# limit it then had, cancelled) once the stress families of SP-02 and the
# 9000-arm match of SP-08 built them (the suite took 2.9 times as long on
# the arm Linux runner, 1064 to 3051 seconds). A leg cancelled at the limit
# says nothing about the code, and the only defence against it was to run
# the leg again. Twice the slowest observed time leaves the limit a bound on
# a hung job, not a race with the runner's speed.
timeout-minutes: 300
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install the pinned Rust toolchain
Expand Down
116 changes: 113 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,80 @@ versions, and the entries below say what each tag does and does not claim.
the gate are the rows of `.github/vv-rows.json`, the matrix the plan hands
to `vv`. `release.yml` still runs `just vv` whole and reads no earlier run.
The register is unchanged: the statement of `RP-14` is extended.
- Explicit shared byte literals (#68, `SM-19`, `MD-02`; languages 1.1 and 1.2):
a modeled byte literal is lowered as `_root_.ByteArray.mk #[…]` with every
octet written `_root_.UInt8.ofNat (nat_lit n)`, an octet occurring four or
more times in one literal bound once by a deterministic `let __byteN` scoped
to that literal; the canonical document keeps the decimal numbers. Every
generated literal and every embedded artifact byte is read back by an
independent closed-grammar reader. It is a form change and not a capacity
one: the largest literal that elaborates at the default `maxRecDepth` is
6394 bytes under both spellings (VERIFICATION.md). `lean_backend` moves to
`10` (language 1.1) and `20` (language 1.2): the language-1.1 and
language-1.2 compiler-semantics IDs move, and with them the lock, source,
semantic, and build IDs of every project that holds a byte literal;
language 1.0 has no semantic modules and does not move.
- The negative fixture `lowering-size-limit` is a match on 400 constructors
and no longer the generic chain `g_k<T> = g_{k+1}<(T, T)>` 16 deep, and the
cost table of SPEC.md §17.17 *Limits* is the one `COSTS_A` and `COSTS_B`
state. Certificates A and B are kernel data in which a repeated type is one
node, so the chain verifies (it did not fit under `max_file_bytes` as text)
and the lower bound counts no type node; what a small source still makes
large is the pairs of arms of a match, which the fixture now uses. The
fixture is refused with `LLS8002` in lowering, as before.
- The preservation library's statement of
`LexLeanTarget.TargetSemantics.fromOrdering.eq_1` is the one the elaborator
makes for the generated module under the explicit byte-literal spelling
(#68): the two byte arrays it compares are written
`UInt8.ofNat (nat_lit n)` where they were `OfNat.ofNat`. The embedded library
checks a stored equation against the elaborator's and refused the old one.
- 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). `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`; this change moves no language-1.0 or 1.1 identity
(language 1.1 moves with the byte-literal lowering below). Certificates read
elaborated declarations, so the certificate data needs no `to_int`/`to_nat`
rule. The register gains `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 records as the root states them, deriving and checking nothing (what the list
understates is #105's); 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; this change moves no language-1.0 or 1.1
identity. 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
Expand Down Expand Up @@ -131,6 +198,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`.
- 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`.
- 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 @@ -145,10 +251,14 @@ 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`).
- The runtime gates know the fifth runtime namespace (`RT-01`, `RT-04`): the
list of runtime namespaces gained `LexLeanLaws` and is asserted equal to the
namespaces the shipped runtime declares, so a module added to the runtime
cannot escape the gates by its namespace. No identity moves.
- 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
integer type with `<=` and `<`, by mathematical value; language 1.1 keeps
Expand Down
Loading
Loading