You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
proof: A12 — close 3 more untracked items (4-full, 6, 3) per coordinator clearance
Per coordinator-routed go-ahead for A12 priority list 1->6 (with items
7+8 cleared as "yours, in typed-wasm"), this round closes three more
untracked items from the post-A10 audit in the same PR #72.
Item 4 (CLOSED IN FULL — supersedes A11 partial).
Switched composeCertificates from Prelude.min (Ord-derived) to
Data.Nat.minimum (structural Nat) so the structural lemmas apply
directly. Coordinator hint pointed at minimum_Comm/Assoc as the
right primitives.
New theorems:
- composeAssoc : three-way associativity of composition
across list parts, multi-module parts,
AND highestProven Nat side.
- composeHighProvenComm : Nat-side commutativity of composition.
composeAssocLists is retained as a back-compat corollary.
Item 6 (CLOSED).
Region.idr gains RegionDisjoint r1 r2 (two constructors capturing
both orderings of LTE (baseAddr + totalSize) baseAddr', proving
byte-footprint non-overlap) plus regionDisjointSym proving the
predicate is symmetric. Cross-level theorem linking disjointness
to L7 (aliasing-safety) and L10 (linearity) deferred to a future
pass — the predicate itself was the missing primitive.
Item 3 (CLOSED).
ResourceCapabilities.idr gains:
- containedConcat : ContainedIn distributes over ++
- jointBudgetCompose : L8 <-> L15 joint composition theorem.
Given individual EffectSubsumes witnesses +
individual FunctionCaps witnesses for two
functions sharing an owner module, the
compound function satisfies both the
combined L8 envelope (via subsumeCompose)
AND the combined L15 module envelope (via
containedConcat + l15bSoundness).
Verification:
- idris2 --build typed-wasm.ipkg clean (21 modules, EXIT=0)
- node tests/proof/regression.mjs 50 passed / 0 failed
(Layer 1 grep + Layer 2 --build, 6 new theorem assertions)
Docs updated:
- LEVEL-STATUS.md: Proofs.idr, Region.idr, ResourceCapabilities.idr
inventory rows extended with A12 attribution
- PROOF-NEEDS.md: new "RECONCILIATION 2026-05-26 (A12 follow-up)"
banner above the A11 one
- CHANGELOG.md [Unreleased]: new "Proof-debt pass A12" subsection
- .machine_readable/6a2/STATE.a2ml: session field summarises
A10+A11+A12, 3 new completed milestones, proof-regression
bumped 44 -> 50
Memory updated:
- project_typed_wasm_proof_debt_post_a10.md: items 4 (full), 6, 3
marked CLOSED; remaining open list reduced to {5, 7, 8}
Remaining open (-> A13, coordinator pre-cleared as mine in typed-wasm):
- Item 5: L13xL10 + L14xL13 cross-level theorems
- Item 7: Rust verifier <-> Idris2 spec equivalence
- Item 8: source-checker <-> verifier coverage agreement
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Region.idr | 0 | 0 | 0 | In package. Structural injectivity added A8 (2026-04-18): `fieldNameInj` / `fieldTypeInj` / `fieldInj` (MkField constructor injectivity), `schemaEqSym` / `schemaEqTrans` (making SchemaEq a full equivalence relation with the pre-existing `schemaEqRefl`), `lookupFieldName` (L2 soundness — `FieldIn name schema` implies `fieldName (lookupField prf) = name`). |
92
+
| Region.idr | 0 | 0 | 0 | In package. Structural injectivity added A8 (2026-04-18): `fieldNameInj` / `fieldTypeInj` / `fieldInj` (MkField constructor injectivity), `schemaEqSym` / `schemaEqTrans` (making SchemaEq a full equivalence relation with the pre-existing `schemaEqRefl`), `lookupFieldName` (L2 soundness — `FieldIn name schema` implies `fieldName (lookupField prf) = name`). A12 (2026-05-26): byte-disjointness layer added — `RegionDisjoint r1 r2` (two constructors covering both orderings of footprint endpoints) plus `regionDisjointSym` proving symmetry. Closes post-A10 audit item 6. Cross-level theorem linking disjointness to L7 aliasing-safety and L10 linearity deferred to a future pass. |
93
93
| TypedAccess.idr | 0 | 0 | 0 | In package |
94
94
| Levels.idr | 0 | 0 | 0 | In package |
95
95
| Pointer.idr | 0 | 0 | 0 | In package |
@@ -99,9 +99,9 @@ toolchain remains future work.
99
99
| MultiModule.idr | 0 | 0 | 0 | In package. Flagship no-spoofing theorem proven A6 (2026-04-18): `FieldMatches`, `SchemaSub` preorder (`schemaSubRefl`, `schemaSubTrans`), `ModuleCompat` indexed on modules + schemas (`compatRefl`, `compatTrans`), and the flagship `noSpoofing : ModuleCompat from to imp exp -> FieldMatches f imp -> FieldMatches f exp`. Worked Rust-exports / AffineScript-imports example (4-field export, 2-field import subset) constructs a live certificate and applies the theorem. A10 (2026-05-26) closes the deferred `compatCommute` item: mutual-subschema commutativity `compatCommute : ModuleCompat from to imp exp -> SchemaSub exp imp -> ModuleCompat to from exp imp`, plus the `noSpoofingBidir` corollary returning a pair of field-transport functions. Second worked example (`serviceA`/`serviceB` with permuted schemas) demonstrates `compatCommute` on a case where both `SchemaSub` directions hold. |
| ResourceCapabilities.idr | 0 | 0 | 0 | In package (v1.4 / L15). A12 (2026-05-26): `containedConcat` proves `ContainedIn` distributes over `++`; `jointBudgetCompose` proves the L8 ↔ L15 **joint** budget composition theorem — given individual `EffectSubsumes` witnesses and individual `FunctionCaps` witnesses for two functions sharing an owner module, the compound function still satisfies both the combined L8 envelope (via `subsumeCompose`) AND the combined L15 module envelope (via `containedConcat` + `l15bSoundness`). Closes post-A10 audit item 3.|
| Proofs.idr | 0 | 0 | 0 | In package. Attestation API hardened A7 (2026-04-18): every L1-L10 attestation now requires a witness from its level module (Schema / FieldIn / WasmTypeCompat / Ptr-NonNull / InBounds / AccessResult / ExclusiveWitness / EffectSubsumes / Lifetime.Outlives / CompletedProtocol). `simpleReadCert` / `fullCert12` / `fullCert15` thread witnesses per level; the certificate cannot be constructed without real proof artefacts. Level-achievement layer added A8 (2026-04-18): `LevelAchievedIn` predicate, `achievedAppendL` / `achievedAppendR` list-append preservation, `LevelAchieved n cert` lifted to certificates, `composeAchievedL` / `composeAchievedR` proving any level achieved in either component of `composeCertificates` is still achieved in the composition. A11 (2026-05-26): partial laws for `composeCertificates` itself — `achievedAppendSplit` decomposes a `LevelAchievedIn n (xs ++ ys)` into one side; `composeAssocLists` proves the list-level associativity of three-way composition; `composeAchievedSym` is the symmetric counterpart of `composeAchievedL`/`R`, recovering the achieved-side from a composed certificate. |
104
+
| Proofs.idr | 0 | 0 | 0 | In package. Attestation API hardened A7 (2026-04-18): every L1-L10 attestation now requires a witness from its level module (Schema / FieldIn / WasmTypeCompat / Ptr-NonNull / InBounds / AccessResult / ExclusiveWitness / EffectSubsumes / Lifetime.Outlives / CompletedProtocol). `simpleReadCert` / `fullCert12` / `fullCert15` thread witnesses per level; the certificate cannot be constructed without real proof artefacts. Level-achievement layer added A8 (2026-04-18): `LevelAchievedIn` predicate, `achievedAppendL` / `achievedAppendR` list-append preservation, `LevelAchieved n cert` lifted to certificates, `composeAchievedL` / `composeAchievedR` proving any level achieved in either component of `composeCertificates` is still achieved in the composition. A11 (2026-05-26): partial laws for `composeCertificates` itself — `achievedAppendSplit` decomposes a `LevelAchievedIn n (xs ++ ys)` into one side; `composeAssocLists` proves the list-level associativity of three-way composition; `composeAchievedSym` is the symmetric counterpart of `composeAchievedL`/`R`, recovering the achieved-side from a composed certificate. A12 (2026-05-26): switched `composeCertificates` from Ord-derived `Prelude.min` to structural `Data.Nat.minimum` so structural lemmas apply; **full** `composeAssoc` proves three-way associativity across list parts, multi-module parts, AND `highestProven` Nat side (via `minimumAssociative`); `composeHighProvenComm` proves Nat-side commutativity (via `minimumCommutative`). Closes post-A10 audit item 4 in full. |
| Epistemic.idr | 0 | 0 | 0 | In package (A1, 2026-04-18). A10 (2026-05-26): propagation theorems added — `freshImpliesEqual`, `staleImpliesLT`, `freshNotStale` (mutual exclusion via local `ltIrreflexive`), `concurrentWriteStales`, `resyncRecoversFresh`, the flagship `freshnessPropagatesUnderWrites`, `syncChainEndsFresh`, and the `epistemicFreshness` projector on `Level12Proof` (closes PROOF-NEEDS §P1.2). A11 (2026-05-26): constructor-tightening pass — `WriteSync` now demands a `FieldVersion` witness with three equality components (`field`/`version`/`lastWriter`), and `Knowledge.Observed` is grounded in a `Sync` event (no more unfounded versions). Corollaries: `writeSyncIdentifiesWriter` returns the `FieldVersion` (+ the three projections) for an explicit-or-implicit Sync; `observedHasProvenance` extracts the witnessing prior-version and `Sync` from any `Observed` value. |
0 commit comments