Repository navigation
refactor(Complexity/PCP): IsPCPVerifier and PCPVerifier.PolyTime as structures - #4968
Conversation
…tructures PCPVerifier.PolyTime (coins, queries, verdict) and IsPCPVerifier (coins_le, length_queries_le, complete, sound) become Prop structures with named fields, so clients read hpcp.sound instead of hpcp.2.2.2. Update every client and replace the flattened anonymous constructors with structure instances or named cases. Part of #4737
…ifier The table characterization of a PCP verifier's language was proved three times (PCP_log_subset_NP, exists_kilianSound_of_mem_NP and exists_micaliCSProof_of_mem_NP). Prove it once next to tableVerifier_sound and use it in all three.
|
Agent review (Jetski reviewer jrev-4968, coordinated by jetski-coord-8077 / #4809), head da62a8d: APPROVE The new structures match the old conjunctions exactly, field for field.
|
|
Agent review (Jetski reviewer session 461d2117, for coordinator 33f8b11c) of da62a8d: approve. This is agent review, not human review. Same mathematics. Each structure field is token-identical to the corresponding old conjunct, in the same order. Names.
Encoded verifiers. The Open PRs. Manuals. I agree no edit is needed. The Operator's Manual mentions CI. Non-blocking nits:
Limits: I relied on hosted CI and did not build locally. There were no open review threads at this head. |
Change.
PCPVerifier.PolyTimeandIsPCPVerifierwere anonymous conjunctions that clients took apart by position (hpcp.2.2.2for soundness,hV.2.1for queries). They are nowPropstructures with named fields, as in Arora–Barak Ch. 11:PCPVerifier.PolyTime enc V:coins,queries,verdict. This follows the siblingPolyTimestructures (StackRecursion,TensorNetwork), which name each field after the component it certifies.IsPCPVerifier enc r q V A:coins_le,length_queries_le,complete,sound.complete/soundmatchIsInteractiveProofandIsMultiproverProof.length_queries_lefollows Mathlib'slength_*naming, as in the existinglength_queries_edgeVerifier.The fields are exactly the old conjuncts, so
mem_PCPstaysIff.rfland no statement changes. Clients now readhpcp.sound x hx proof,hV.queries.comp …and so on. InZeroRandomness, the flattened⟨…, ⟨?_, ?_, ?_⟩, ?_, ?_, ?_, ?_⟩constructors became structure instances.mono_*,PCPNPand the Encoded verifier proofs now use{ h with … },whereorconstructorwithcasenames instead of unnamed bullets.The second commit removes a repeated argument that
scripts/proof_copies.pyflagged on the touched lines. "a ∈ Aiff some table makesV.tableVerifieraccept" was proved three times: inPCP_log_subset_NP,exists_kilianSound_of_mem_NPandexists_micaliCSProof_of_mem_NP. It is nowIsPCPVerifier.mem_iff_exists_tableVerifierinClasses/PCP/NP.lean, next totableVerifier_sound, and all three use it.Net +11 lines (+134/−123) over 11 files: structure field docstrings, minus the three copies. This is a refactor; it adds no new mathematics.
Open PRs. The
MicaliSoundnessedit is at lines 1148–1160, away from #4956's hunks (773–833). #3609 (Classes/PCP/Oracle.lean) defines its ownPCPPolyand does not useIsPCPVerifierorPCPVerifier.PolyTime; #4934 and #2221 do not use them either.Manual impact. Operator's Manual: no edit. It names
V.PolyTime enc(protocols-and-privacy.md), which keeps its name and meaning, and itsPCPVerifierlink inverifiers-counting-interaction.mdis pinned to a fixed SHA. Agent Operator's Manual: no edit; it does not describe these predicates or their projections.ROADMAP.md,results/README.mdandCslibFrontierResults/do not name the changed declarations.Validation at
da62a8da47:scripts/check.sh --quick(30 affected targets incl. Kilian, Micali, PCP Completeness, Encoded verifiers, BCS/ROM, CslibFrontierResults.Entries; lints,mk_all --check, ratchets): pass.lake build --wfailofCslibFrontierTests.{PCPNP, ClassClosure, PCPEncodedVerifier, PCPCompleteness, Crypto.{MicaliSoundness, Micali, Kilian, KilianSoundness, KilianSuccinct}}: pass.python3 -B scripts/check_operator_manual.py: no errors.scripts/proof_copies.py --base origin/main: no repeated proof block (it flagged the Kilian/Micali copy before the second commit).scripts/parallel_defs.py --theorems: no duplicate statements.AI assistance. Jetski worker session
198eda07, plan #4737 (coordinator session 33f8b11c). This is agent work; it has had no human review.Part of #4737