@@ -72,19 +72,20 @@ $$ {\mathcal I} := \bbI[ \bigl(\sum_{i=1}^m X_{i,j}\bigr)_{j =1}^{m}
72
72
lemma mutual_information_le {G Ωₒ : Type u} [MeasureableFinGroup G] [MeasureSpace Ωₒ]
73
73
{p : multiRefPackage G Ωₒ} {Ω : Type u} [hΩ : MeasureSpace Ω] [IsProbabilityMeasure hΩ.volume]
74
74
{X : ∀ i, Ω → G} (hX : ∀ i, Measurable (X i)) (h_indep : iIndepFun X)
75
- (h_min : multiTauMinimizes p (fun _ ↦ Ω) (fun _ ↦ hΩ) X) {Ω' : Type * } [hΩ': MeasureSpace Ω']
75
+ (h_min : multiTauMinimizes p (fun _ ↦ Ω) (fun _ ↦ hΩ) X) {Ω' : Type u } [hΩ': MeasureSpace Ω']
76
76
[IsProbabilityMeasure hΩ'.volume]
77
77
{X' : Fin p.m × Fin p.m → Ω' → G} (hX' : ∀ i j, Measurable (X' (i, j)))
78
78
(h_indep': iIndepFun X')
79
79
(hperm : ∀ j, ∃ e : Fin p.m ≃ Fin p.m, IdentDistrib (fun ω ↦ (fun i ↦ X' (i, j) ω))
80
80
(fun ω ↦ (fun i ↦ X (e i) ω))) :
81
81
I[ fun ω ↦ ( fun j ↦ ∑ i, X' (i, j) ω) : fun ω ↦ ( fun i ↦ ∑ j, X' (i, j) ω) |
82
- fun ω ↦ ∑ i, ∑ j, X' (i, j) ω ] ≤ 2 * p.m * (2 *p.m + 1 ) * p.η * D[ X; (fun _ ↦ hΩ)] := by
82
+ fun ω ↦ ∑ i, ∑ j, X' (i, j) ω ] ≤ p.m * (4 *p.m+ 1 ) * p.η * D[ X; (fun _ ↦ hΩ)] := by
83
83
have hm := p.hm
84
84
have hη := p.hη
85
85
set I₀ := I[ fun ω ↦ ( fun j ↦ ∑ i, X' (i, j) ω) : fun ω ↦ ( fun i ↦ ∑ j, X' (i, j) ω) |
86
86
fun ω ↦ ∑ i, ∑ j, X' (i, j) ω ]
87
87
set k := D[X ; fun x ↦ hΩ]
88
+ have hk: 0 ≤ k := multiDist_nonneg _ inferInstance _ (by fun_prop)
88
89
set one : Fin p.m := ⟨ 1 , by omega ⟩
89
90
set last : Fin p.m := ⟨ p.m-1 , by omega ⟩
90
91
set column : Fin p.m → Fin p.m → Ω' → G := fun j i ω ↦ X' (i, j) ω
@@ -143,9 +144,24 @@ lemma mutual_information_le {G Ωₒ : Type u} [MeasureableFinGroup G] [MeasureS
143
144
apply ProbabilityTheory.iIndepFun.precomp _ h_indep'
144
145
intro ⟨ i, j ⟩ ⟨ i', j' ⟩ h; simpa using h
145
146
147
+ have hD (j: Fin p.m) : D[column j ; fun x ↦ hΩ'] = k := by
148
+ obtain ⟨ e, he ⟩ := hperm j
149
+ calc
150
+ _ = D[fun i ω ↦ X (e i) ω; fun x ↦ hΩ] := by
151
+ apply multiDist_copy _ _ _ _ _
152
+ intro i; exact IdentDistrib.comp (u := fun x ↦ x i) he (by fun_prop)
153
+ _ = _ := by
154
+ convert multiDist_of_perm (fun _ ↦ hΩ) _ _ e <;> try infer_instance
155
+
146
156
have h2 {j : Fin p.m} (hj: j ∈ Finset.Iio last)
147
- : A j ≤ p.η * (k + ∑ i, d[ X' (i,j) # X' (i,j) | S i j ]) := by
148
- sorry
157
+ : A j ≤ p.η * ∑ i, d[ X' (i,j) # X' (i,j) | S i j ] := by
158
+ obtain ⟨ e, he ⟩ := hperm j
159
+ simp only [A, hD]
160
+ convert sub_condMultiDistance_le' p (fun _ ↦ Ω) (fun _ ↦ hΩ) inferInstance X hX h_min (fun _ ↦ Ω') (fun _ ↦ hΩ') inferInstance (fun i ↦ X' (i, j)) _ _ _ e using 3 with i _ <;> try infer_instance
161
+ all_goals try fun_prop
162
+ apply condRuzsaDist'_of_copy <;> try fun_prop
163
+ . exact IdentDistrib.comp (u := fun x ↦ x i) he (by fun_prop)
164
+ apply IdentDistrib.refl; fun_prop
149
165
150
166
have h3 : B ≤ p.η * ∑ i, d[ X' (i, last) # V i ] := by
151
167
sorry
@@ -188,50 +204,47 @@ lemma mutual_information_le {G Ωₒ : Type u} [MeasureableFinGroup G] [MeasureS
188
204
+ (H[V i] - H[X' (i, last)]) / 2 := by
189
205
sorry
190
206
191
- have h7 : I₀/p.η ≤ p.m * k + p.m * ∑ i, d[X i # X i] + ∑ i, H[V i] - ∑ i, H[X i] := by
207
+ have h7 : I₀/p.η ≤ p.m * ∑ i, d[X i # X i] + ∑ i, H[V i] - ∑ i, H[X i] := by
192
208
rw [div_le_iff₀' hη]
193
209
apply h1.trans
194
210
calc
195
- _ ≤ ∑ j ∈ .Iio last, (p.η * (k + ∑ i, d[ X' (i,j) # X' (i,j) | S i j ])) + p.η * ∑ i, d[ X' (i, last) # V i ] := by gcongr with j hj; exact h2 hj
196
- _ ≤ p.η * (↑↑last * k + ∑ i, (∑ j ∈ .Iio last, d[ X' (i,j) # X' (i,j) ] + (H[V i] - H[X' (i, last)]) / 2 )) +
211
+ _ ≤ ∑ j ∈ .Iio last, (p.η * (∑ i, d[ X' (i,j) # X' (i,j) | S i j ])) + p.η * ∑ i, d[ X' (i, last) # V i ] := by gcongr with j hj; exact h2 hj
212
+ _ ≤ p.η * (∑ i, (∑ j ∈ .Iio last, d[ X' (i,j) # X' (i,j) ] + (H[V i] - H[X' (i, last)]) / 2 )) +
197
213
p.η * ∑ i, (d[ X' (i, last) # X' (i, last) ] + (H[V i] - H[X' (i, last)]) / 2 ) := by
198
214
simp [←Finset.mul_sum, Finset.sum_add_distrib]; rw [Finset.sum_comm]; gcongr
199
215
. rw [←Finset.sum_add_distrib]; apply Finset.sum_le_sum; intro i _; exact h5 i
200
216
rw [←Finset.sum_add_distrib]; apply Finset.sum_le_sum; intro i _; exact h6 i
201
- _ = p.η * (↑↑last * k + ∑ i, (∑ j ∈ .Iio last, d[ X' (i,j) # X' (i,j) ] + d[ X' (i, last) # X' (i, last) ]) + ∑ i, H[V i] - ∑ i, H[X' (i, last)]) := by
217
+ _ = p.η * (∑ i, (∑ j ∈ .Iio last, d[ X' (i,j) # X' (i,j) ] + d[ X' (i, last) # X' (i, last) ]) + ∑ i, H[V i] - ∑ i, H[X' (i, last)]) := by
202
218
simp_rw [Finset.sum_add_distrib, ←Finset.sum_div, Finset.sum_sub_distrib]; ring
203
- _ = p.η * (↑↑last * k + ∑ j, (∑ i, d[ X' (i,j) # X' (i,j) ]) + ∑ i, H[V i] - ∑ i, H[X' (i, last)]) := by
219
+ _ = p.η * (∑ j, (∑ i, d[ X' (i,j) # X' (i,j) ]) + ∑ i, H[V i] - ∑ i, H[X' (i, last)]) := by
204
220
rw [Finset.sum_comm]
205
221
rcongr i
206
222
convert Finset.sum_erase_add _ _ _ using 3
207
223
. ext ⟨ j, hj ⟩; simp [last]; omega
208
224
. infer_instance
209
225
simp
210
- _ = p.η * (↑↑last * k + (∑ j:Fin p.m, (∑ i, d[ X i # X i ])) + ∑ i, H[V i] - ∑ i, H[X i]) := by
226
+ _ = p.η * ((∑ j:Fin p.m, (∑ i, d[ X i # X i ])) + ∑ i, H[V i] - ∑ i, H[X i]) := by
211
227
congr 2
212
228
. congr; ext j; obtain ⟨ e, he ⟩ := hperm j
213
229
convert Equiv.sum_comp e _ with i _
214
230
apply IdentDistrib.rdist_congr <;> exact IdentDistrib.comp (u := fun x ↦ x i) he (by fun_prop)
215
231
obtain ⟨ e, he ⟩ := hperm last
216
232
convert Equiv.sum_comp e _ with i _
217
- apply IdentDistrib.entropy_congr <;> exact IdentDistrib.comp (u := fun x ↦ x i) he (by fun_prop)
218
- _ ≤ _ := by
219
- simp [last]; gcongr
220
- . apply multiDist_nonneg _ inferInstance _ (by fun_prop)
221
- omega
233
+ apply IdentDistrib.entropy_congr; exact IdentDistrib.comp (u := fun x ↦ x i) he (by fun_prop)
234
+ _ ≤ _ := by simp
222
235
223
236
have h8 (i: Fin p.m) : H[V i] ≤ H[ ∑ j, X j] + ∑ j, d[X' (i,j) # X' (i,j)] := by
224
237
sorry
225
238
226
239
have h9 : ∑ i, H[V i] - ∑ i, H[X i] ≤ p.m * ∑ i, d[X i # X i] + p.m * k := by
227
240
sorry
228
241
229
- have h10 : I₀/p.η ≤ 2 * p.m * ∑ i, d[X i # X i] + 2 * p.m * k := by linarith
242
+ have h10 : I₀/p.η ≤ 2 * p.m * ∑ i, d[X i # X i] + p.m * k := by linarith
230
243
231
244
have h11 : ∑ i, d[X i # X i] ≤ 2 * p.m * k := by
232
245
convert multidist_ruzsa_II hm _ _ _ hX _ <;> try infer_instance
233
246
234
247
calc
235
- _ ≤ p.η * (2 * p.m * ∑ i, d[X i # X i] + 2 * p.m * k) := by rwa [←div_le_iff₀' (by positivity)]
236
- _ ≤ p.η * (2 * p.m * (2 * p.m * k) + 2 * p.m * k) := by gcongr
248
+ _ ≤ p.η * (2 * p.m * ∑ i, d[X i # X i] + p.m * k) := by rwa [←div_le_iff₀' (by positivity)]
249
+ _ ≤ p.η * (2 * p.m * (2 * p.m * k) + p.m * k) := by gcongr
237
250
_ = _ := by ring
0 commit comments