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(repair): Stage 3.1 — pure repair primitive correctness (idempotence proved)
FSState's verifiable content is its hash map (no separate block data), so the pure
repairBlockPure — installing a hash at one index — is the genuine repair semantics,
not a no-op. Factored it out of the IO repairBlock (IO↔pure pattern: repairBlock =
repairBlockPure + range check), making the correctness theorems well-founded.
RepairProof (axiom-free, machine-checked):
- repairBlockSets — the repaired index now holds exactly the new hash;
- repairBlockPreserves — every other index is untouched;
- repairBlockNumBlocks — the block count is unchanged;
- repairBlockIdempotent — repairing the same (index, hash) twice = once
(the ledger's "idempotence as a proof", delivered).
Index test is Nat == (structural reflexivity eqNatReflTrue / neqNatFalse), so
wall-free — unlike the primitive Hash ==. Idempotence decided via decEq to avoid the
with-on-(==) asymmetric-reduction trap.
NEXT (3.2): whole-manifest repair ⇒ verifyRefsHelper passes — builds on 2.2 + these
lemmas, needs a distinct-in-range ref-name precondition and the isolated
Hash-reflexivity hypothesis (documented).
Verified: idris2 0.8.0, --build (--total), 25/25 modules, axiom-free.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011z2t8zAxfcCNLJzU7YdpBQ
purpose = """Neurosymbolic filesystem verification framework in Idris2 dependent types: a pluggable VerifiedSubsystem interface, A2ML attestation/audit markup, a verified Merkle tree with a combiner-generic soundness theorem, and ECHIDNA integration."""
"Stage 2 provable core COMPLETE — 2.1 validateManifestSound, 2.2 verifyRefsSound, 2.3 parsePairsRoundtrip; all machine-checked. DEFERRED (architectural decision): wire verify to merkleCorrect — the verify path builds no Merkle tree today",
60
-
"Stage 3 (Opus) — repair correctness (L3 linear types). PRECONDITION: repair is a stub; introduce a pure repairPure that genuinely reconstructs the hash map and prove over that (IO↔pure pattern), else the theorem is vacuous",
"Then: verify→merkleCorrect wiring (architectural — verify builds no Merkle tree today; would carry merkleBinding's no-collision guarantee into verification)",
61
63
"Remove Idris-side crypto stubs and build + link libochrance.so into the flow (unblocks the crypto-integrity claim)",
0 commit comments