pith. machine review for the scientific record. sign in
theorem

weighted_Jlog_average

proved
show as:
view math explainer →
module
IndisputableMonolith.Foundation.VariationalDynamics
domain
Foundation
line
145 · github
papers citing
none yet

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

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

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 : ℝ)))