@@ -14,16 +14,16 @@ import Mathlib.FieldTheory.Finite.Basic
1414ABF26 Grand Challenge 1 is an *upper* bound: `ε_mca(RS, δ) ≤ poly(2^m, 1/ρ)/q` for Reed–Solomon
1515codes 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
2929set_option linter.unusedSectionVars false
@@ -38,19 +38,24 @@ variable {F : Type} [Field F] [Fintype F] [DecidableEq F]
3838variable {A : Type } [Fintype A] [DecidableEq A] [AddCommGroup A] [Module F A]
3939
4040open 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. -/
4454theorem 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