Repository navigation
refactor(Crypto/Kilian): typed verifier view, prover input and prover commitment - #4990
SamuelSchlesinger wants to merge 2 commits into
Conversation
… commitment Kilian's efficiency statements and cheating-prover interface used anonymous tuples (`(k, x, w)`, `((x, root), state)`) read by position (`p.1.2.1`, `s.2.1.1`). They now use records with named fields, encoded with `enc_structure`: - `KilianClaim` (key, stmt, root) and `KilianView` (extends the claim with challenges and response): the input of `computableInPolyTime_kilianVerify` and `length_kilianVerifierInput_honest_le`. - `KilianProverInput` (key, stmt, table): the input of `computableInPolyTime_kilianCommit`/`_kilianRespond`. - `KilianMessage` (stmt, root) and `KilianCommitment` (extends it with state): the output of `KilianProver.commit`, used by the soundness game, the binding adversary, the rewinding helpers and the `hM` hypothesis. `encKilianInput` is removed (its two clients migrated). Encoded words are unchanged: sub-records reproduce the former left-grouped layouts, checked by `rfl` tests. The efficiency proofs use the generated field rules instead of hand-built fst/snd chains. Part of the crypto readability program (#4817), proofs lane item P5a. Co-authored-by: Jetski worker proofs (session 7134127c)
|
Agent review: APPROVE at The records replace the anonymous Kilian tuples without changing what any statement means.
Optional notes, none blocking:
#4968 touches adjacent lines, so whichever PR lands second needs a small merge. If that's this one, I'll review the merge delta. I'll queue this head once |
…lianVerify Co-authored-by: Jetski worker proofs (session 7134127c)
|
Agent review: APPROVE at |
|
Review follow-up (release holds) at Rendered: I inspected p. 468 of Advisory notices (ci-checks run 43371588766):
The source and API assessment in my approval above is unchanged. No holds remain. |
Part of #4817 (crypto readability, proofs lane P5a).
Kilian's efficiency statements and cheating-prover interface took anonymous tuples read by position:
fun p : (List Bool × α × List Bool) × … => kilianVerify H V p.1.1 p.1.2.1 p.1.2.2 p.2.1 p.2.2, prover output((x, root), state)with helpers readings.2.1.1. They now use records with named fields, each encoded byenc_structurewith an explicitencparameter:KilianClaim(key, stmt, root) andKilianView(extends the claim; challenges, response) are the input ofcomputableInPolyTime_kilianVerifyandlength_kilianVerifierInput_honest_le, which now readkilianVerify H V v.key v.stmt v.root v.challenges v.response.KilianProverInput(key, stmt, table) is the input ofcomputableInPolyTime_kilianCommitandcomputableInPolyTime_kilianRespond.KilianMessage(stmt, root) andKilianCommitment(extends it; state) are the output ofKilianProver.commit. The soundness game, binding adversary, private rewinding helpers and thehMtable-size hypothesis ofsuccProbability_kilianSoundnessGame_le(_collision)readc.stmt,c.root,c.state.encKilianInputis removed; its two clients (Kilian.lean, Succinct.lean) are migrated. Encoded words unchanged: nestingKilianClaiminKilianViewandKilianMessageinKilianCommitmentreproduces the former left-grouped layouts, checked byrfltests inCslibFrontierTests/Crypto/Kilian.leanandKilianSoundness.lean. Bounds and theorem content are unchanged;hMquantifies over the commitment instead of its three components. The verify/commit/respond proofs drop their hand-builtfst/sndchains (about 30 lines) in favour of the generated field rules.Representative caller:
isPPT_kilianBindingAdversarynow states the context throughKilianCommitment α(p.2.stmt,p.1.2.state); the residualp.1.1.…paths there come fromIsPPTOn.bind_withcontexts, not from the prover's output.Not in scope: the PCP soundness predicate (P5b), which #4968 largely covers. #4968 touches nearby lines (
hV.2.1,hpcp.2.2.2) in Kilian.lean/Soundness.lean, so whichever lands second needs a small merge.Validation. Targeted
--wfail --iofailbuild of Kilian, Soundness, Succinct, NP, Micali, MicaliSoundness, CslibFrontierResults and the Kilian/KilianSoundness/KilianSuccinct/Micali/MicaliSoundness tests (13471 jobs); lint on the three changed modules; hygiene; encoding readability and projection chain ratchets (--base origin/main);lint-style;mk_all --check; manual check (errors []).Manuals. Operator's Manual:
protocols-and-privacy.mdnow namesKilianView/encKilianViewas the verifier input ofcomputableInPolyTime_kilianVerify. Agent Operator's Manual: no change needed (no workflow or tooling change).AI disclosure: Jetski worker
proofs(session7134127c), under the #4817 coordinator; agent review only.