ltl-accumulator-verified/verification
mrwulf be232507cc S4: descent extractor extractMTH (Theorem 3 step 3 + F2 restoration), non-vacuous
The 'descend' step of the paper's Theorem 3, built extractor-first per
the S3.5 lesson (never a bare '∨ collision'):

- extractMTH (D D'): total function that, given two equal-length leaf
  lists sharing a Merkle root, walks the common-shape tree to the first
  divergence and returns the concrete colliding preimage pair (a node
  pair, or a leaf pair at the bottom).
- extractMTH_correct: |D|=|D'| ∧ D≠D' ∧ MTH D = MTH D' →
  IsCollision (extractMTH D D'). Proven by functional induction on
  extractMTH; composite case uses MTH_split + append_inj (fixed-width
  Hash) to split node preimages or exhibit the node collision.
- extractMTH_nonvacuous: equal lists → output NOT a collision (pinned),
  so the conclusion is false for some inputs ⇒ choice-proof.

This also RESTORES, in explicit non-vacuous form, the receipt-uniqueness
content of Lemma 2 deleted in the S3.5 cleanup (re-audit F2): the honest
Merkle fold is injective up to a collision.

18 certs green. Fable statement-audit passed (matches paper Thm 3 step 3
verbatim). LTL untouched (12 leaves, bcd15f9d).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:46:58 +02:00
..
gen/LTLAcc S3/L4-L5: root binding (Lemma 2, Path instance) + Theorem 2, constructive 2026-07-11 13:21:17 +02:00
Proofs S4: descent extractor extractMTH (Theorem 3 step 3 + F2 restoration), non-vacuous 2026-07-11 16:46:58 +02:00
check.sh S4: descent extractor extractMTH (Theorem 3 step 3 + F2 restoration), non-vacuous 2026-07-11 16:46:58 +02:00
lean-guard L1+L2: hashing shapes, domain separation, MTH/Root/ConsRec with termination 2026-07-10 23:58:00 +02:00