Repository navigation
refactor(Crypto/VOLE): bind masked/circuit transcript components by name (readability) - #5041
SamuelSchlesinger wants to merge 1 commit into
Conversation
…ame (readability) Remove the 12 positional projection chains in the VOLE MaskedMulCheck, AdaptiveMulCheck, Circuit and CircuitPrivacy public statements and definitions: - `MaskedMulCheckAccepts` binds the receiver share `(delta, q)` and the transcript `(d, r, (a, b), ())`, matching its docstring. - `maskedMulCheckReceiverView` binds `runAgainst`'s `(transcript, _, view)`, as `circuitReceiverView` already does. - `maskedMulCheckReceiverSimulate_accepts` and `circuitReceiverSimulate_linear` quantify over the named view components in their support hypotheses. - `circuitCheck_output` binds `(first, r, reply, ())`. Definitions stay definitionally equal; every existing test compiles unchanged. The baseline drops the 4 VOLE entries and the stale `VOLE/Native.lean: 2` entry (0 chains there since #4645). Part of #4817.
|
Agent review (Jetski reviewer rev-2, session ef349cc4-931b-4d20-b996-c6b2afd6e998), head 7f0d566: APPROVE This removes every counted chain in The approach follows CONTRIBUTING's first preference, binding the components by name. I agree with not adding records here, despite #920:
The rewritten definitions stay definitionally equal (
The two support theorems now state the hypothesis on a named tuple. Representative caller: Non-blocking, no push needed: the This is agent review, not human approval. |
Part of #4817. This removes the 12 positional projection chains from the public VOLE masked-check and circuit statements by binding their components by name (CONTRIBUTING's first preference). It also removes the stale
VOLE/Native.lean: 2baseline entry; that file has had 0 chains since #4645.MaskedMulCheckAcceptsbinds the receiver share(delta, q)and the transcript(d, r, (a, b), ()), which are the names its docstring already uses.maskedMulCheckReceiverViewbindsrunAgainst's(transcript, _, view), the same waycircuitReceiverViewalready does.maskedMulCheckReceiverSimulate_acceptsandcircuitReceiverSimulate_linearquantify over the named view components in their support hypotheses. For example, the linear conclusion now reads(coeffs *ᵥ voleAdjustReceiver (Fin.init q) d delta) row = targets row * delta + openings row, where it used to beview.1.2,view.2.1.1.1,view.1.1andview.2.1.1.2.circuitCheck_outputbinds(first, r, reply, ())before callingcircuitVerify.Every rewritten definition is definitionally equal to the old one, and no claim, hypothesis or model changes. Representative callers: the four VOLE test files, including
decideon¬ MaskedMulCheckAccepts …and thecircuitReceiverSimulate_linearclient inVOLECircuit, compile unchanged. Only the four proofs that destructure the support hypotheses changed.Why no records. Both tuple types come from shared definitions. The share pair is
VOLECorrelation.receiverView, thevoleReceiverSpecoracle response that the whole VOLE lane uses.Transcriptis the genericInteractivenested tuple. Neither is local to these files, and none of these typed values has a word encoding, since NativePPT encodes only the list-basedNative.View. Encoded words are therefore untouched. The(share, transcript, view)triple recurs in AdaptiveMulCheck, CircuitPrivacy and Native, but making it a record would change the simulator,Native.viewToListsand the concrete-tuple tests. That redesign is outside this sweep.Validation (local).
lake build --wfail --iofailon MaskedMulCheck, AdaptiveMulCheck, Circuit, CircuitPrivacy, CircuitSound, Native and NativePPT, and on the tests VOLEMaskedMulCheck, VOLEAdaptiveMulCheck, VOLECircuit and VOLENative (every library and test importer of the changed modules except the aggregate roots). Also run locally:lake linton each of the 4 changed modules;check_hygiene.py --check-simp;check_changed_files.py --source-only;[]).CI covers the full gates. The branch merges cleanly with main and with the queued #5001, which touches only private lines in AdaptiveMulCheck.
Manuals. The Operator's Manual (protocols-and-privacy, VOLE entries) names these declarations, but it doesn't describe their tuple shapes, so it needs no edit. The Agent Operator's Manual needs no edit either, because no workflow or tooling changed.
Session
2a1d23e9-71dc-403b-b46b-8c28a14db74c(clients), branchreadability/clients-vole-chains.AI disclosure: written by an AI agent (Jetski). Review is by agents, not humans.