fix(BCIKS20): correct false/vacuous statement of large_agreement_set_on_curve_implies_correlated_agreement - #606
Conversation
…on_curve_implies_correlated_agreement The conclusion had two defects (see Verified-zkEVM#588, with a machine-checked counterexample): - the `∃ v, …` conjunct was vacuous — discharged by `v := u` (`δᵣ(curve u z, curve u z) = 0`, and `{x | ∃ i, u i x ≠ u i x} = ∅`); - the `… = Finset.univ` conjunct is false as stated (`rho` is unconstrained by `V`; e.g. `F = ZMod 5`, `n=1`, `l=2`, `V` three words gives `S = {0,1,2} ≠ univ` while both hypotheses hold). Restate to mirror the correctly-shaped Johnson-regime sibling `large_agreement_set_on_curve_implies_correlated_agreement'`, sharing its conclusion: `∃ v, ∀ i, v i ∈ V ∧ (1 - δ) * n ≤ #{x | ∀ i, u i x = v i x}`. Proof remains `sorry` (as before this change).
🤖 PR Summaryfix(BCIKS20): correct false/vacuous statement of large_agreement_set_on_curve_implies_correlated_agreement Statistics
Lean Declarations
📋 **Additional Analysis**The diff does not relate to the supplied review instructions. The instructions concern contribution guidelines, PR title/description format, and style/naming conventions for ArkLib; the diff only modifies two Lean theorems in a coding theory file. There is no PR description, title change, or style-guideline content to check against the instructions. Therefore the response is: No findings. (No findings.) 📄 **Per-File Summaries**
Last updated: 2026-07-10 13:18 UTC. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3eb66cd13b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…lated-agreement lemmas
The previous fix (this branch) added `v i ∈ V` but left `V` an arbitrary `Finset`
with `rho` unconstrained, which is still false: per [BCIKS20] Theorem 6.1/6.2 (paper
pp. 28-29), `V` must literally be a Reed-Solomon code `RS[F_q, D, deg]` of rate `rho`,
not merely a set with some distance bound - the closeness argument relies on the
code's algebraic (evaluation) structure, not just its distance. Codex's counterexample
(V = {2,3,4}, not even a linear code) exploited exactly this gap.
Restated both `large_agreement_set_on_curve_implies_correlated_agreement` (Thm 6.1) and
`..._agreement'` (Thm 6.2) to take `{deg, domain}` and set `V := ReedSolomon.code domain
deg`, `rho := ρ (ReedSolomon.code domain deg)`. Also restored two conjuncts the previous
fix had dropped from the unique-decoding theorem (closeness for all curve points, and
curve-wise v-closeness for all z) - these are real content from Theorem 6.1, not the
vacuous part; only the missing `v i ∈ V` was actually vacuous. Fixed both cardinality
thresholds from `n * l` to `(l - 1) * n` to match the paper's `l * n` (paper's l = curve
degree = this file's l - 1). `coeffs_of_close_proximity_curve` now takes `V : Set` instead
of `Finset`, mirroring the already-proven `RS_goodCoeffs` (AffineLines) pattern.
Proofs remain `sorry`, matching every other theorem in this file (including Theorem 1.5
itself): proving Thm 6.1/6.2 for general `l` is a genuine generalization of the ~3000-line
lines-case machinery (BWMatrix/JointAgreement/GoodCoeffs) and out of scope here.
# Conflicts: # ArkLib/Data/CodingTheory/ProximityGap/BCIKS20/Curves.lean
Closes #588. Corrects the statement of
large_agreement_set_on_curve_implies_correlated_agreementin
ProximityGap/BCIKS20/Curves.lean— the two defects #588 reports (a vacuous∃ vand a false… = Finset.univ) are removed. The proof of the corrected lemma is left assorry, exactly as it wasbefore this change (the
sorrycount is unchanged); #588 is about the statement being wrong, whichthis fixes.
The current conclusion has two defects, both machine-checked in #588:
∃ v.v := udischarges the existential with no hypotheses(
δᵣ(curve u z, curve u z) = 0 ≤ δ, and{x | ∃ i, u i x ≠ u i x} = ∅), so its only realcontent was the first conjunct.
… = Finset.univ.rhooccurs only inhδand is otherwise unconstrained byV, sothe statement is equivalent to its
rho := 0instance. Concretely (F = ZMod 5,n = 1,l = 2,V = {const 0, const 1, const 2},δ = 1/2):S = {0,1,2}, so bothhδandhS(n·l = 2 < 3)hold while
S ≠ univ. The counterexample in BCIKS20large_agreement_set_on_curve_implies_correlated_agreementis false as stated (vacuous∃ v,rhounlinked toV) #588 compiles and#print axiomsreports only[propext, Classical.choice, Quot.sound].This PR restates the lemma to mirror the correctly-shaped Johnson-regime sibling
large_agreement_set_on_curve_implies_correlated_agreement', sharing its conclusion, and keeping theunique-decoding hypotheses (
hδ : δ ≤ (1 - rho) / 2,hS : n * l < #S):∃ v : Fin l → Fin n → F, ∀ i, v i ∈ V ∧ (1 - δ) * n ≤ ({ x : Fin n | ∀ i, u i x = v i x } : Finset _).cardNotes:
sorrycount is unchanged (the lemma was alreadysorry); no declaration consumes it, so nodownstream code is affected.
lake build/validate.shgreen locally.rhounconnected toV. Should both lemmasadditionally tie
rhotoV(e.g.Va rate-rholinear code, or(1 - rho) * n ≤ Code.dist V)so that
δ ≤ (1 - rho)/2sits insideV's unique-decoding radius? Glad to adjust to whatever shapeyou intend.
Happy to follow up with a proof of the unique-decoding regime once the target statement is confirmed.