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
Session 4 lands the subterm-size argument that Session 3 had to
defer. This unblocks a *genuine* partial-secrecy theorem: on a
singleton encrypted trace, the attacker cannot derive the body
without knowing the key. This is the base case of the eventual
full secrecy induction.
Session 4 contents (all Qed-closed):
- `msg_size : msg -> nat` — structural size counting constructors.
- `msg_size_mEnc_eq`: msg_size (mEnc k m) = S (msg_size m).
- `msg_no_self_mEnc`: m ≠ mEnc k m for all k, m (via size).
- **`singleton_enc_trace_knows_equals_obs`**: on a 1-event
encrypted trace, if the attacker does not hold the key, every
derivable message equals the ciphertext. Proof is induction
on the `knows` derivation tree, with each rule's IH yielding
either the base case or a constructor-discrimination vacuity.
- **`singleton_enc_trace_without_key_cannot_know_body`**: direct
corollary — the body is unreachable without the key.
This is the partial-secrecy kernel: Dolev-Yao derivation from a
single-ciphertext trace, without the key, cannot extract the body.
The proof uses no `Admitted`, no banned constructs, and routes
every induction case either through k_obs (identifying the
derived message with the observed ciphertext) or through
constructor-discrimination inversion on IH-derived equalities.
MANIFEST unchanged; runner 35/35 stable; panic-attack 0.
Session 5 target: extend to multi-event traces via trace
induction; introduce per-session state tracking; close the
full secrecy invariant; Qed `needham_schroeder_fixed`.
File grew 586 -> 706 LOC.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments