theorem
proved
weighted_Jlog_average
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Foundation.VariationalDynamics on GitHub at line 145.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
142 ring
143
144/-- Weighted average of `Jlog(log x_i)` equals `total_defect / N`. -/
145private theorem weighted_Jlog_average {N : ℕ} (c : Configuration N) :
146 (∑ i ∈ (Finset.univ : Finset (Fin N)), (1 / (N : ℝ)) * Jlog (Real.log (c.entries i))) =
147 (1 / (N : ℝ)) * total_defect c := by
148 calc
149 (∑ i ∈ (Finset.univ : Finset (Fin N)), (1 / (N : ℝ)) * Jlog (Real.log (c.entries i)))
150 = ∑ i ∈ (Finset.univ : Finset (Fin N)), (1 / (N : ℝ)) * defect (c.entries i) := by
151 apply Finset.sum_congr rfl
152 intro i _
153 unfold Jlog defect J Jcost
154 rw [Real.exp_log (c.entries_pos i)]
155 _ = (1 / (N : ℝ)) * total_defect c := by
156 unfold total_defect
157 rw [← Finset.mul_sum]
158
159/-- Jensen lower bound: fixed log-charge implies a defect lower bound. -/
160private theorem total_defect_lower_bound {N : ℕ} (hN : 0 < N) (c : Configuration N) :
161 (N : ℝ) * Jlog (log_charge c / N) ≤ total_defect c := by
162 have hN_pos : (0 : ℝ) < N := Nat.cast_pos.mpr hN
163 have hw_nonneg : ∀ i ∈ (Finset.univ : Finset (Fin N)), 0 ≤ (1 / (N : ℝ)) := by
164 intro _ _
165 positivity
166 have hw_sum : ∑ i ∈ (Finset.univ : Finset (Fin N)), (1 / (N : ℝ)) = 1 := by
167 rw [Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul]
168 field_simp [hN_pos.ne']
169 have hmem : ∀ i ∈ (Finset.univ : Finset (Fin N)), Real.log (c.entries i) ∈ (Set.univ : Set ℝ) := by
170 intro _ _
171 simp
172 have hJensen :=
173 Jlog_strictConvexOn.convexOn.map_sum_le
174 (t := (Finset.univ : Finset (Fin N)))
175 (w := fun _ : Fin N => (1 / (N : ℝ)))