Skip to content

Commit 4be6d02

Browse files
proof(solo-core/idris): close preservation (#108) — total, hole-free (#120)
## What Discharges the **Idris2 twin's `preservation`** (Phase F1.4, #108) — the last open normative *must*. The solo core is now **hole-free on both proof tracks** (Coq already complete + axiom-free). ## How **`Substitution.idr`** - `uaddAssoc` — associativity of the partial `uadd` (existential form), by structural recursion; heads reassociate via `qAddAssoc`. - `subst2Lemma` — two-variable `LetPair` substitution, mirroring Coq `subst2_lemma`: two nested `substLemma0` applications (pre-shifted `u2` under the inner binder, then `u1`), residual usages realigned via `uaddAssoc`/`uaddComm`. - local `coeUsage` (retype along a usage equality); export `justInj'`. - **Module dependency inverted**: dropped the unused `import Soundness` so `Soundness` can import `Substitution` (no cycle). **`Soundness.idr`** - replaced `?todo_preservation` with the full proof by induction on `Step`, mirroring the Coq twin. Reduction cases consume `substLemma0` (App/Case/Let) and `subst2Lemma` (LetPair); congruence cases recurse. - the reduct term is taken **explicitly (relevant)**, exactly as `progress` does, so the substitution lemmas receive the bound body + substituted value under Idris index erasure. `affinePreservation` follows as the corollary. ## Verification (in-environment, not asserted) - `idris2 --build solo-core.ipkg` → exit 0 (8/8 modules). - `:total` confirms `preservation`, `affinePreservation`, `subst2Lemma`, `uaddAssoc`, `substLemma0` are all **total**. - No holes / `postulate` / `believe_me` / `assert_total`; `%default total` throughout. - Coq twin recompiled fresh; `Print Assumptions preservation` / `affine_pres` → *"Closed under the global context"* (axiom-free). ## Docs (honesty discipline) - `proofs/STATUS.md`: Idris `preservation` row → **locally-checked**; solo core hole-free. - `docs/STATUS.adoc`: normative MUST met. - `AFFIRMATION.adoc`: revision 2 (preservation moved from the open boundary to affirmed-true). - `docs/handoff/NEXT-SESSION.md`: redirected to the compilation axis (wasm32 → RISC-V → typed-wasm). - Stale "hole" comments in both modules refreshed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV --- _Generated by [Claude Code](https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV)_ --------- Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 769f427 commit 4be6d02

6 files changed

Lines changed: 229 additions & 112 deletions

File tree

AFFIRMATION.adoc

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
= Affirmation
55
:toc: preamble
66
:sectnums:
7-
:revdate: 2026-06-19T21:35:54Z
8-
:revnumber: 1
7+
:revdate: 2026-06-21T02:22:08Z
8+
:revnumber: 2
99

1010
This AFFIRMATION records the standing of *my-lang* against the hyperpolymath
1111
standards and this project's own honesty discipline, at the timestamp below.
@@ -29,12 +29,17 @@ Rust compiler. The normative obligation — the *must* — is that the language
2929

3030
To the verified state of this repository, I affirm:
3131

32-
. *Soundness is mechanised, not asserted.* The Coq solo-core proves
33-
`progress`, `preservation`, and `affine_pres`; the algorithmic checker
34-
(`check`, R5) and the affine decision (`aff_type_dec`, R5b); the
35-
`me -> solo` elaboration adequacy (M1); the session-pi metatheory through
36-
S3c.3; and the echo residue-measure seam (E4). All are real `Qed`,
37-
*axiom-free* (`Print Assumptions` closed), and CI-gated.
32+
. *Soundness is mechanised, not asserted — now on BOTH tracks.* The Coq
33+
solo-core proves `progress`, `preservation`, and `affine_pres`; the
34+
algorithmic checker (`check`, R5) and the affine decision (`aff_type_dec`,
35+
R5b); the `me -> solo` elaboration adequacy (M1); the session-pi metatheory
36+
through S3c.3; and the echo residue-measure seam (E4). All are real `Qed`,
37+
*axiom-free* (`Print Assumptions` closed), and CI-gated. The *Idris2 twin*
38+
now also proves both `progress` and `preservation` (#108, discharged
39+
2026-06-21): total, hole-free functions under `%default total` with no
40+
postulates — `:total preservation` confirms — via the QTT substitution
41+
lemmas `htSubst` / `substLemma0` / `subst2Lemma` (with `uaddAssoc`). The
42+
solo core is hole-free on both tracks.
3843

3944
. *No overclaim.* Every proof hole is recorded as an obligation, never as a
4045
result (`proofs/STATUS.md` is authoritative and wins over any prose).
@@ -56,20 +61,23 @@ To the verified state of this repository, I affirm:
5661

5762
* Coq: `.github/workflows/proofs.yml` compiles the solo-core and asserts the
5863
headline theorems are axiom-free on every PR touching `proofs/verification/**`.
59-
* Idris2: `idris2 --build` under `%default total`; the only open marker is
60-
`?todo_preservation` plus the five `htSubst` usage-splitting holes.
64+
* Idris2: `idris2 --build solo-core.ipkg` exits 0 under `%default total`,
65+
no postulates / `believe_me` / `assert_total`; the solo core is HOLE-FREE
66+
(`preservation`, `affinePreservation`, `htSubst`, `substLemma0`,
67+
`subst2Lemma`, `uaddAssoc` all `:total`).
6168
* Rust: `cargo test -p my-qtt` and `cargo test -p my-lang qtt_bridge` green;
6269
`my-qtt` carries the R5/R5b oracle tests.
6370

6471
== Affirmed NOT done (the honest boundary)
6572

66-
The Idris twin's `preservation` (`#108`) is *not* proved. The QTT substitution
67-
lemma `htSubst` is structurally landed (10 of 15 cases; the `b`-index erasure
68-
resolved) and committed locally; the five usage-splitting cases, the
69-
`substLemma0` / `subst2Lemma` corollaries, and `preservation` itself remain
70-
open. This is the single outstanding *must*. The wasm / RISC-V / mobile /
71-
typed-wasm legs are *intends* and *wishes* (`docs/STATUS.adoc`), not affirmed
72-
as done.
73+
The normative *must* (a mechanised-sound core, coupled into the compiler) is
74+
met on both proof tracks. What remains is *intends* and *wishes*
75+
(`docs/STATUS.adoc`), affirmed as NOT done: making the QTT axis the *default*
76+
in `checker.rs`; surface quantity syntax for real per-binder linearity; the
77+
`wasm32` and `RISC-V` backend legs; the typed-wasm WasmGC verified leg
78+
(blocked on `typed-wasm` / AffineScript / Ephapax being added to the session);
79+
and Android / iOS via Tauri / Dioxus. The non-Solo dialect compilers (Duet /
80+
Ensemble) are scaffold only.
7381

7482
== Affirmation
7583

@@ -81,7 +89,7 @@ herein is described as proved that a proof assistant does not accept today.
8189
|===
8290
| Affirmed by | Jonathan D.A. Jewell (@hyperpolymath) <j.d.a.jewell@open.ac.uk>
8391
| Repository | hyperpolymath/my-lang
84-
| Timestamp (UTC) | 2026-06-19T21:35:54Z
85-
| Verified basis | `main` @ `a7765e7` (merged: PR #116 `my-qtt`, PR #117 coupling step 2); dev `acd29d6` (`htSubst` structure)
92+
| Timestamp (UTC) | 2026-06-21T02:22:08Z
93+
| Verified basis | `claude/dreamy-hypatia-O8XHo` (Idris `preservation` #108 discharged, solo core hole-free) atop `main` @ `a7765e7` (PR #116 `my-qtt`, PR #117 coupling step 2)
8694
| Authority | `proofs/STATUS.md` (proofs) · `docs/STATUS.adoc` (programme) · `.machine_readable/contractiles/Mustfile.a2ml` (invariants)
8795
|===

docs/STATUS.adoc

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ file is the priority-grouped programme view.
1818

1919
== Position (one line)
2020

21-
my-lang's normative must is essentially met — the Coq metatheory is complete
22-
and axiom-free, and the verified usage-checker is merged into the Rust
23-
toolchain. The single open must is the Idris twin's `preservation`,
24-
structurally landed (10/15 `htSubst` cases, `b`-erasure solved), committed
25-
locally at `acd29d6`.
21+
my-lang's normative must is met — the Coq metatheory is complete and
22+
axiom-free, the verified usage-checker is merged into the Rust toolchain, and
23+
the Idris twin's `preservation` (#108) is now DISCHARGED (total, hole-free;
24+
`:total preservation`). The solo core is hole-free on both tracks.
2625

2726
== MUST — my-lang itself (sound core, verified-coupled, compiling)
2827

@@ -38,15 +37,14 @@ locally at `acd29d6`.
3837
| Surface -> core coupling (named engine + real `ast::Expr` bridge) | `[x]` | `main` (PR #117)
3938
| Idris twin `progress` (total, hole-free) | `[x]` | `main`
4039
| Working compiler pipeline parse->HIR->MIR->LLVM->native (x86_64 / aarch64) | `[x]` | `main`
41-
| **Idris twin `preservation` (#108)** — `htSubst` structure + `b`-erasure solved | `[~]` 10/15 cases | local `acd29d6`
40+
| **Idris twin `preservation` (#108)** — full `htSubst` + `subst2Lemma` + `uaddAssoc`, `Step`-induction, total + hole-free | `[x]` | `claude/dreamy-hypatia-O8XHo`
4241
|===
4342

4443
== INTEND — planned next
4544

4645
[cols="4,1,3",options="header"]
4746
|===
4847
| Item | Status | Note
49-
| Close Idris `preservation`: 5 `htSubst` split cases -> `substLemma0` / `subst2Lemma` | `[~]` next | consumes the landed `usplit3` / `uaddSplitBoundary2` / `substReassocAdd` / `substReassocMult`
5048
| Make the resource axis the *default* in `crates/my-lang/src/checker.rs` | `[ ]` | the QTT bridge is opt-in (`qtt_bridge::check_expr`) today
5149
| Surface *quantity syntax* so the bridge enforces real per-binder linearity | `[ ]` | `Param` has no quantity field; bridge defaults to `One`
5250
| `wasm32` via the existing LLVM backend (`TargetSpec::wasm32` + `wasm-ld`) | `[ ]` | fastest target leg; backend already emits objects
@@ -67,6 +65,6 @@ locally at `acd29d6`.
6765
== Provenance
6866

6967
* Coq: axiom-free (`Print Assumptions` closed), CI-gated (`.github/workflows/proofs.yml`), no `Admitted`/`Axiom` in the trusted base.
70-
* Idris: `idris2 --build`-checked, `%default total`, no postulates; only `?todo_preservation` and the 5 `htSubst` split holes open.
68+
* Idris: `idris2 --build solo-core.ipkg` exits 0, `%default total`, no postulates / `believe_me` / `assert_total`; the solo core is HOLE-FREE (`preservation`, `affinePreservation`, `subst2Lemma`, `uaddAssoc`, `substLemma0`, `htSubst` all `:total`).
7169
* Rust: `cargo test -p my-qtt` (20 tests incl. the R5/R5b `reflexivity` oracle tests + the surface-coupling tests) and `cargo test -p my-lang qtt_bridge` (6 tests) green.
72-
* Landed this programme increment: PR #116 (`my-qtt`), PR #117 (coupling step 2); local `acd29d6` (`htSubst` structure).
70+
* Landed this programme increment: PR #116 (`my-qtt`), PR #117 (coupling step 2); `preservation` #108 discharged (this increment).

docs/handoff/NEXT-SESSION.md

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,40 @@ branch `claude/dreamy-hypatia-O8XHo`; commit green slices; push and open a
1010
**draft** PR when a slice is complete. Read `docs/STATUS.adoc` (musts/intends/
1111
wishes) and `proofs/STATUS.md` (authoritative proof registry) first.
1212

13-
## The one open MUST: close Idris `preservation` (#108)
13+
## The one open MUST is now CLOSED: Idris `preservation` (#108)
1414

15-
The Coq metatheory is complete and axiom-free. The Idris twin's `progress` is
16-
done; **`preservation` is the last normative obligation** (`?todo_preservation`
17-
in `proofs/verification/idris/solo-core/Soundness.idr`). It rests on the QTT
18-
substitution lemma `htSubst`, which is now **structurally landed** (commit
19-
`acd29d6` on the dev branch, build green 8/8):
15+
The Coq metatheory is complete and axiom-free, and **the Idris twin's
16+
`preservation` is now DISCHARGED** (2026-06-21): a total, hole-free function
17+
by induction on `Step` in `proofs/verification/idris/solo-core/Soundness.idr`,
18+
`:total preservation` confirmed, `%default total`, no postulates. The whole
19+
solo core is HOLE-FREE on both tracks. `htSubst` (all 15 cases), `substLemma0`,
20+
`subst2Lemma`, and `uaddAssoc` all land in `Substitution.idr` (the module
21+
dependency was inverted: `Soundness` now imports `Substitution`).
2022

21-
- **10/15 `htSubst` cases proved**: Var, Unit, Lam, With, Fst, Snd, Inl, Inr,
22-
MkEcho, Weaken.
23-
- **5 usage-splitting holes remain** in `Substitution.idr`:
24-
`?htSubst_app`, `?htSubst_tensor`, `?htSubst_letpair`, `?htSubst_case`,
25-
`?htSubst_let`.
26-
27-
### Do this, in order
28-
1. Fill the 5 split holes. Each mirrors the Coq `ht_subst` case in
29-
`proofs/verification/coq/solo-core/SoloCore.v` (≈ lines 1618–1889) and
30-
**consumes already-landed lemmas**: `usplit3`, `uaddSplitBoundary2`,
31-
`substReassocAdd` (additive, for App/Let), `substReassocMult` (for
32-
Tensor/LetPair/Case), `uaddUappend`, `uscaleUappend`, `ushiftUscale`.
33-
App splits `d1` and the `q`-scaled `d2`; Tensor/LetPair/Case split `d1`,`d2`;
34-
Let scales `d1`. The binder cases (LetPair/Case/Let) recurse into bodies with
35-
the prefix `I` extended (mirror the `hvSubst`/`htShift` binder pattern).
36-
2. Add `substLemma0` (the `I = TEmpty` corollary) and `subst2Lemma` (two-var,
37-
for `LetPair`), mirroring Coq `subst_lemma0` / `subst2_lemma` (≈ 1893–1937).
38-
3. Fill `?todo_preservation` in `Soundness.idr` by induction on `Step`
39-
(mirror Coq `preservation`, ≈ 1941–2036): reduction cases use
40-
`substLemma0`/`subst2Lemma`; congruence cases recurse.
41-
4. Move the `preservation` row in `proofs/STATUS.md` to *machine-checked* and
42-
update `docs/STATUS.adoc`.
23+
### Where the normative work goes next (the compilation axis)
24+
The sound core is done and coupled. The open items are *intends*/*wishes* in
25+
`docs/STATUS.adoc`:
26+
1. Make the QTT resource axis the **default** in `crates/my-lang/src/checker.rs`
27+
(the bridge is opt-in today via `qtt_bridge::check_expr`).
28+
2. Add surface **quantity syntax** so the bridge enforces real per-binder
29+
linearity (`Param` has no quantity field; the bridge defaults to `One`).
30+
3. **wasm32** via the existing LLVM backend (`TargetSpec::wasm32` + `wasm-ld`),
31+
then **RISC-V** (`riscv64gc-unknown-linux-gnu`), then the **typed-wasm**
32+
WasmGC verified leg (blocked until `typed-wasm` / AffineScript / Ephapax are
33+
added to the working session).
4334

4435
### Load-bearing context (do NOT relitigate)
36+
- **`preservation` takes the reduct term `t` explicitly** (relevant), exactly
37+
as `progress` does. Idris erases the derivation's term/type indices, but the
38+
substitution lemmas compute on the bound body + substituted value, so those
39+
must come from a matched (relevant) term; `{g}`/`{d}` are relevant for the
40+
same reason. `subst2Lemma`'s result type `c` is an erased implicit.
41+
- **Per-clause pattern variables that unify** (the Lam/arrow quantity, the
42+
Inl/Inr annotation vs the sum's summand, the Let quantity) must share ONE
43+
name in the LHS — Idris rejects two names that provably unify.
44+
- **`let`-block rule**: don't mix type-annotated bindings with dependent-pair
45+
pattern bindings in one block (parse error). Use single-binding nested
46+
`let … in let …`, or inline.
4547
- **`b`-erasure is solved.** The result type `b` is a genuine type index, so
4648
`hvSubst` and `htSubst` both carry it as an **erased implicit** (`{0 b}` /
4749
auto-bound). Passing an *unrestricted* `b` (or an erased `b` to an
@@ -51,11 +53,12 @@ substitution lemma `htSubst`, which is now **structurally landed** (commit
5153
- **`THLet`/`THCase`/`THLetPair` carry explicit bound-type fields** (Option A,
5254
already merged) — that is how the binder cases recover the body context under
5355
erasure. Don't revert it.
54-
- Toolchain: Idris2 0.7.0 isn't preinstalled — bootstrap from source
55-
(`make bootstrap SCHEME=chezscheme && make install`, ~10 min), then
56-
`cd proofs/verification/idris/solo-core && idris2 --build solo-core.ipkg`.
57-
Discipline: every edit ends with a compile; `--safe`/`%default total`; no
58-
postulates; pin headline theorems where the repo convention does.
56+
- Toolchain: if Idris2 0.7.0 isn't preinstalled, bootstrap from source
57+
(`make bootstrap SCHEME=chezscheme && make install`, ~10 min). Then
58+
`cd proofs/verification/idris/solo-core && idris2 --build solo-core.ipkg`
59+
(exit 0), and check totality with `:total <name>` in the REPL. Discipline:
60+
every edit ends with a compile; `%default total`; no postulates; pin
61+
headline theorems where the repo convention does.
5962

6063
## The other axis: fundamentals -> compilation (see docs/STATUS.adoc)
6164

proofs/STATUS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Last verified: 2026-06-14.
6161
| `progress` | Coq `solo-core/SoloCore` | **machine-checked** | `Theorem progress : Progress.` real `Qed`, axiom-free. Phase F1.3. CI: `proofs.yml` compiles it + asserts `Print Assumptions` closed. |
6262
| `progress` | Idris2 `solo-core/Soundness` | **locally-checked** | Hole-free total function (no `?todo_progress`); accepted by `idris2`, package built in CI (`proofs.yml`). Phase F1.3. **Re-proven over the SEPARATED context (`Tctx`/`Uvec`) + both products (`TWith`/`TTensor`, `LetPair`) in the 2026-06-15 F1.4 design migration** — closed-term inversions now massage only the usage vector (`uaddEmpty`/`uscaleEmpty`), since the shared type context stays `TEmpty` automatically; `:total progress` confirms totality. |
6363
| `preservation` | Coq `solo-core/SoloCore` | **machine-checked** | `Theorem preservation : Preservation.`, real `Qed`, axiom-free, via the open-context QTT substitution lemma `ht_subst`. Phase F1.4. CI: `proofs.yml` compiles it + asserts `Print Assumptions` closed (and likewise `affine_pres`). |
64-
| `preservation` | Idris2 `solo-core/Soundness` | **statement-only** | `?todo_preservation`, **now stated over the CORRECT design** (separated context + genuine products). The OLD Idris design (split-intro `Pair` + project-elim `Fst`/`Snd`) made the same-usage statement UNSOUND (issue #93); the 2026-06-15 migration makes it provable. Proof obligation = Phase F1.4 (Idris track), #108 — the QTT substitution lemma (`htSubst` + `subst2Lemma`) lands in a companion `Substitution.idr` and is wired in here once discharged. NOT described as proved. **Progress (2026-06-19): `Substitution.idr` (in the ipkg) now carries the append-context algebra, the shape invariant (`shapeVar`/`shapeType`), `hvShift`/`htShift` (term weakening, all 14 cases), the substitution accounting algebra (`qReassoc`/`vecReassoc`/`substReassocAdd`/`substReassocMult`/`usplit3`/`uaddSplitBoundary2`), `hvSubst`, the FULL `htSubst` (the QTT substitution lemma — all 15 cases, total, hole-free), and `substLemma0` (the `subst0` corollary). The `b`-index-erasure obstruction (ADR-003) is resolved by carrying `b` as an erased implicit in `hvSubst`/`htSubst`. `idris2 --build` exits 0; the ONLY remaining hole in the whole solo-core is `?todo_preservation`. REMAINING for `preservation`: `uaddAssoc` -> `subst2Lemma` (two-variable LetPair substitution) -> the `Step`-induction. PENDING (still NOT proved).** |
64+
| `preservation` | Idris2 `solo-core/Soundness` | **locally-checked** | **DISCHARGED 2026-06-21 (#108).** `preservation : (t : Tm) -> Has g d t a -> Step t t' -> Has g d t' a` is a total, hole-free function by induction on `Step` — `:total preservation` confirms; `%default total`, no `postulate`/`believe_me`/`assert_total`/`?hole`. Mirrors the Coq twin `preservation`: the β/projection/elimination cases consume the QTT substitution lemmas from `Substitution.idr` — `substLemma0` (App/Case/Let single-variable) and `subst2Lemma` (LetPair two-variable) — realigning the residual usage with `d` via `uadd` commutativity/associativity (`uaddAssoc`) and `uscale One`; congruence cases recurse structurally. Stated over the CORRECT design (separated context + genuine products) that made the same-usage statement sound (issue #93). The reduct term `t` is taken explicitly (relevant), exactly as `progress` does, because Idris erases the derivation's term/type indices while the substitution lemmas compute on the bound body + substituted value. `affinePreservation` follows as the Solo-kernel corollary (`:total` too). Supporting chain in `Substitution.idr` (all total, hole-free): append-context algebra, shape invariant (`shapeVar`/`shapeType`), `hvShift`/`htShift`, the accounting algebra (`qReassoc`/`vecReassoc`/`substReassocAdd`/`substReassocMult`/`usplit3`/`uaddSplitBoundary2`/`uaddAssoc`), `hvSubst`, the FULL `htSubst` (all 15 cases), `substLemma0`, `subst2Lemma`. The `b`-index-erasure obstruction (ADR-003) is resolved by carrying `b` erased. `idris2 --build solo-core.ipkg` exits 0; **the solo core is now HOLE-FREE**. CI: `proofs.yml` Idris job. |
6565
| Small-step `step` | Coq `solo-core/SoloCore` | **definitions-only** | CBV left-to-right relation, all redex + congruence constructors. Committed in F1.1. |
6666
| Small-step `Step` | Idris2 `solo-core/Soundness` | **definitions-only** | CBV left-to-right relation, both products: additive `SFst`/`SSnd` fire on `With` values, multiplicative `SLetPair` fires on a `Tensor` value via `subst2`; plus the echo residue rules (`SWeaken`). Consumed by the verified `progress`. Migrated 2026-06-15. |
6767
| General core typing + substitution | Coq `coq/Typing.v` | **locally-checked** | Pre-existing: 9 `Qed`, 0 `Admitted`. Non-quantitative; substitution lemma proved. |
@@ -86,7 +86,7 @@ Last verified: 2026-06-14.
8686
| Topic AS has | my-lang status | Plan phase |
8787
|--------------|----------------|-----------|
8888
| Mechanised QTT solo-core | **commenced** (this PR) | F1 |
89-
| Mechanised progress/preservation | Coq **machine-checked** (axiom-free `Qed`, CI-guarded); Idris twin pending | F1.3 / F1.4 |
89+
| Mechanised progress/preservation | Coq **machine-checked** (axiom-free `Qed`, CI-guarded); Idris twin **locally-checked** (both total + hole-free; `preservation` #108 discharged 2026-06-21) | F1.3 / F1.4 |
9090
| Algorithmic typing / decidable typecheck (static-split ≡ usage-walk) | Coq **machine-checked** (`check_correct`, axiom-free) — **overtakes AS** (states it as prose "future work" only) | F1.4 |
9191
| Surface→core elaboration correctness (`me``solo`) | Coq **machine-checked** (`me_wt_sound` over the WHOLE `me_tm` + `elab_data_check`, axiom-free, M1.1/M1.1b — M1 complete) — **overtakes AS** (solo-only; no `me`-like dialect, nothing analogous as surveyed (AS@main 2026-06-02)) | M1 |
9292
| Quantitative-types (dedicated doc) | folded into solo affine doc | F4 |

0 commit comments

Comments
 (0)