@@ -50,17 +50,18 @@ private lemma K_eq_sum {α : F} : K B i α = ∑ (x : B), if x.1 i = α then 1 e
5050private lemma sum_choose_K' [Zero F]
5151 (h_card : 2 ≤ (Fintype.card F))
5252 :
53- ((Finset.univ (α := F)) .card - 1 : ℚ)
54- * choose_2 ((B.card - K B i 0 )/((Finset.univ (α := F)).card -1 ))
55- ≤ ∑ (α : F) with α ≠ 0 , choose_2 (K B i α) := by
53+ (Fintype.card (α := F) - 1 ) * choose_2 ((B .card - K B i 0 ) / (Fintype.card (α := F) - 1 )) ≤
54+ ∑ (α : F) with α ≠ 0 , choose_2 ( K B i α) := by
55+
5656 rw [←sum_K_eq_card (i := i)]
57- simp
57+ simp
5858 have h_univ : Finset.univ = insert 0 ({x : F | x ≠ 0 } : Finset F) := by
5959 ext x
6060 simp
6161 tauto
6262 rw [h_univ, Finset.sum_insert (by simp)]
6363 field_simp
64+
6465 have h : ((∑ x ∈ {x | ¬x = 0 }, ↑(K B i x)) : ℚ) / (↑(Fintype.card F) - 1 )
6566 = ∑ x ∈ {x : F | ¬x = 0 }, ((1 : ℚ)/((Fintype.card F) - 1 )) * ↑(K B i x) := by
6667 rw [Finset.sum_div]
@@ -131,6 +132,93 @@ private lemma sum_choose_K' [Zero F]
131132 tauto
132133 rw [h]
133134
135+ private lemma sum_choose_K'' [Zero F]
136+ (h_card : 2 ≤ (Fintype.card F))
137+ :
138+ (Fintype.card (α := F) - 1 ) * choose_2 ((B.card - K B i 0 ) / (Fintype.card (α := F) - 1 )) ≤
139+ ∑ (α : F) with α ≠ 0 , choose_2 (K B i α) := by
140+ rw [←sum_K_eq_card (i := i), Nat.cast_sum]
141+ set X₁ : ℚ := Fintype.card F - 1
142+ set X₂ := K B i
143+ suffices X₁ * choose_2 ((∑ x with x ≠ 0 , ↑(X₂ x)) / X₁) ≤
144+ ∑ α with α ≠ 0 , choose_2 ↑(X₂ α) by
145+ convert this
146+ rw [Finset.sum_eq_sum_diff_singleton_add (i := 0 ) (by simp)]
147+ ring_nf; apply Finset.sum_congr (Finset.ext _) <;> simp
148+
149+
150+
151+ have h : ((∑ x ∈ {x : F | ¬x = 0 }, ↑(K B i x)) : ℚ) / (↑(Fintype.card F) - 1 )
152+ = ∑ x ∈ {x : F | ¬x = 0 }, ((1 : ℚ)/((Fintype.card F) - 1 )) * ↑(K B i x) := by
153+ rw [Finset.sum_div]
154+ congr
155+ field_simp
156+ rw [h]
157+
158+ let w : F → ℚ := fun _ => (1 : ℚ) / (↑(Fintype.card F) - 1 )
159+ let p : F → ℚ := fun x => K B i x
160+ have h : ∑ x ∈ {x : F | ¬x = 0 }, ((1 : ℚ)/((Fintype.card F) - 1 )) * ↑(K B i x)
161+ = ∑ x ∈ {x : F | ¬x = 0 }, w x • p x := by simp [w, p]
162+ rw [h]
163+ rw [mul_comm]
164+ apply le_trans
165+ rewrite [mul_le_mul_right (by field_simp; linarith)]
166+ apply ConvexOn.map_sum_le choose_2_convex (by {
167+ simp [w]
168+ intro i _
169+ linarith
170+ })
171+ (by {
172+ simp [w]
173+ have h : (Finset.univ (α := F)).card = Fintype.card F := by rfl
174+ conv =>
175+ congr
176+ congr
177+ rfl
178+ rw [←h, h_univ]
179+ rfl
180+ rfl
181+ simp
182+ rw [Field.mul_inv_cancel]
183+ simp
184+ rw [←ne_eq]
185+ rw [←Finset.nonempty_iff_ne_empty]
186+ simp [Finset.Nonempty]
187+ have h_two := (Finset.one_lt_card (s := Finset.univ (α := F))).1 (by omega)
188+ rcases h_two with ⟨a, ha, b, hb, hab⟩
189+ by_cases h_ne_a : a ≠ 0 <;> try tauto
190+ simp at h_ne_a
191+ rw [h_ne_a] at hab
192+ tauto
193+ })
194+ (by simp)
195+ rw [mul_comm]
196+ simp [w, p]
197+ rw [Finset.mul_sum]
198+ conv =>
199+ lhs
200+ congr
201+ rfl
202+ ext α
203+ rw [←mul_assoc]
204+ rw [Field.mul_inv_cancel _ (by {
205+ intro contr
206+ have contr : (↑(Fintype.card F) : ℚ) = 1 := by
207+ rw [←zero_add 1 , ←contr]
208+ field_simp
209+ simp at contr
210+ omega
211+ })]
212+ rw [one_mul]
213+ rfl
214+ have h : ({x ∈ insert 0 ({x | ¬x = 0 } : Finset F) | ¬x = 0 } : Finset F)
215+ = ({ x : F | ¬ x = 0 } : Finset F) :=
216+ by
217+ ext x
218+ simp
219+ tauto
220+ rw [h]
221+
134222private def sum_choose_K_i (B : Finset (Fin n → F)) (i : Fin n) : ℚ :=
135223 ∑ (α : F), choose_2 (K B i α)
136224
@@ -825,7 +913,7 @@ protected lemma johnson_bound_lemma [Field F] {B : Finset (Fin n → F)} {v : Fi
825913 - (1 - ((Fintype.card F : ℚ) / (Fintype.card F - 1 )) * (d B/n))) ≤
826914 ((Fintype.card F : ℚ) / (Fintype.card F - 1 )) * d B/n := by
827915 rw [lin_shift_e (B := B) (by omega)]
828- rw [lin_shift_d v h_B]
916+ rw [lin_shift_d h_B]
829917 rw [lin_shift_card (B := B) (v := v)]
830918 exact johnson_bound₀ h_n (by {
831919 rw [←lin_shift_card (B := B)]
0 commit comments