Skip to content

Commit 9b1835e

Browse files
ArkLib Agentclaude
andcommitted
@
feat(Verified-zkEVM#141,Verified-zkEVM#171): add mcaEvent_prob_le_epsMCA primitive to the MCA lower-bound theory Refactor MCALowerBound.lean: expose the fundamental lower-bound primitive mcaEvent_prob_le_epsMCA (epsMCA dominates every stack`s bad-scalar probability, by def the sup), and derive epsMCA_ge_inv_card_of_mcaEvent from it. All sorry-free, axiom-clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
1 parent dbfed6c commit 9b1835e

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

ArkLib/Data/CodingTheory/ProximityGap/MCALowerBound.lean

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ import Mathlib.FieldTheory.Finite.Basic
1414
ABF26 Grand Challenge 1 is an *upper* bound: `ε_mca(RS, δ) ≤ poly(2^m, 1/ρ)/q` for Reed–Solomon
1515
codes at the prize rates. This file proves the complementary *lower* side:
1616
17-
* `epsMCA_ge_inv_card_of_mcaEvent` — a general, reusable lower bound: whenever **some** word stack
18-
admits a bad scalar (`mcaEvent` fires), `epsMCA ≥ 1/|F|` (that scalar alone contributes `1/|F|`
19-
to the per-stack probability, and `epsMCA` is the supremum over stacks).
20-
17+
* `mcaEvent_prob_le_epsMCA` — the fundamental primitive: `epsMCA` dominates the bad-scalar
18+
probability of *every* word stack (`epsMCA` is, by definition, the supremum of those).
19+
* `epsMCA_ge_inv_card_of_mcaEvent` — whenever **some** stack admits a bad scalar (`mcaEvent`
20+
fires), `epsMCA ≥ 1/|F|`.
2121
* `MCALowerExample.epsMCA_C0_ge_half` — a concrete witness: the **zero linear code** over `ZMod 2`
2222
has `epsMCA ≥ 1/2`. Hence the Grand-Challenge-1 `poly/q` smallness is **false for general linear
2323
codes** — it genuinely requires the Reed–Solomon structure. This makes precise *why* the prize
24-
hypotheses (RS code, prize rate) cannot be dropped, complementing the upper-bound development.
24+
hypotheses cannot be dropped, complementing the upper-bound development.
2525
26-
Both results are `sorry`-free and axiom-clean (`[propext, Classical.choice, Quot.sound]`).
26+
All results are `sorry`-free and axiom-clean (`[propext, Classical.choice, Quot.sound]`).
2727
-/
2828

2929
set_option linter.unusedSectionVars false
@@ -38,19 +38,24 @@ variable {F : Type} [Field F] [Fintype F] [DecidableEq F]
3838
variable {A : Type} [Fintype A] [DecidableEq A] [AddCommGroup A] [Module F A]
3939

4040
open Classical in
41-
/-- **General MCA lower bound.** If some stack `u` admits a bad scalar `γ₀` (`mcaEvent` fires),
42-
then `epsMCA ≥ 1/|F|`: that single scalar contributes `1/|F|` to the per-stack probability, and
43-
`epsMCA` is the supremum over stacks. -/
41+
/-- **MCA lower-bound primitive.** `epsMCA` dominates the bad-scalar probability of every word
42+
stack, since it is the supremum of those probabilities. -/
43+
theorem mcaEvent_prob_le_epsMCA
44+
(C : Set (ι → A)) (δ : ℝ≥0) (u : WordStack A (Fin 2) ι) :
45+
Pr_{let γ ← $ᵖ F}[mcaEvent C δ (u 0) (u 1) γ] ≤ epsMCA (F := F) (A := A) C δ := by
46+
unfold epsMCA
47+
exact le_iSup (fun u : WordStack A (Fin 2) ι =>
48+
Pr_{let γ ← $ᵖ F}[mcaEvent C δ (u 0) (u 1) γ]) u
49+
50+
open Classical in
51+
/-- **MCA lower bound from a single bad scalar.** If some stack `u` admits a bad scalar `γ₀`
52+
(`mcaEvent` fires), then `epsMCA ≥ 1/|F|`: that scalar contributes `1/|F|` to `u`'s bad-scalar
53+
probability, which `epsMCA` dominates. -/
4454
theorem epsMCA_ge_inv_card_of_mcaEvent
4555
(C : Set (ι → A)) (δ : ℝ≥0) (u : WordStack A (Fin 2) ι) (γ₀ : F)
4656
(hev : mcaEvent C δ (u 0) (u 1) γ₀) :
4757
(1 : ℝ≥0∞) / (Fintype.card F : ℝ≥0∞) ≤ epsMCA (F := F) (A := A) C δ := by
48-
have hle : Pr_{let γ ← $ᵖ F}[mcaEvent C δ (u 0) (u 1) γ]
49-
≤ epsMCA (F := F) (A := A) C δ := by
50-
unfold epsMCA
51-
exact le_iSup (fun u : WordStack A (Fin 2) ι =>
52-
Pr_{let γ ← $ᵖ F}[mcaEvent C δ (u 0) (u 1) γ]) u
53-
refine le_trans ?_ hle
58+
refine le_trans ?_ (mcaEvent_prob_le_epsMCA (F := F) (A := A) C δ u)
5459
rw [prob_uniform_eq_card_filter_div_card]
5560
have hmem : γ₀ ∈ Finset.filter (fun γ => mcaEvent C δ (u 0) (u 1) γ) Finset.univ := by
5661
simp only [Finset.mem_filter, Finset.mem_univ, true_and]; exact hev

0 commit comments

Comments
 (0)