theorem
proved
evolve_equilibrium_eq
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Thermodynamics.SecondLaw on GitHub at line 163.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
formal source
160
161omit [Nonempty Ω] in
162/-- Equilibrium is a fixed point of the iterated evolution. -/
163theorem evolve_equilibrium_eq {peq : ProbabilityDistribution Ω}
164 (R : JDescentOperator peq) (n : ℕ) :
165 R.evolve n peq = peq := by
166 induction n with
167 | zero => rfl
168 | succ n ih =>
169 simp [evolve_succ, ih, R.fixes_equilibrium]
170
171end JDescentOperator
172
173/-! ## §3. KL is monotone non-increasing along the evolution -/
174
175omit [Nonempty Ω] in
176/-- Single-step KL contraction: `D_KL(qₙ₊₁ ‖ peq) ≤ D_KL(qₙ ‖ peq)`. -/
177theorem kl_step_le {peq : ProbabilityDistribution Ω}
178 (R : JDescentOperator peq) (q₀ : ProbabilityDistribution Ω) (n : ℕ) :
179 kl_divergence (R.evolve (n + 1) q₀).p peq.p ≤
180 kl_divergence (R.evolve n q₀).p peq.p := by
181 rw [JDescentOperator.evolve_succ]
182 exact R.kl_non_increasing _
183
184omit [Nonempty Ω] in
185/-- Pointwise KL contraction across a `n ≤ m` interval. -/
186theorem kl_le_of_le {peq : ProbabilityDistribution Ω}
187 (R : JDescentOperator peq) (q₀ : ProbabilityDistribution Ω)
188 {n m : ℕ} (hnm : n ≤ m) :
189 kl_divergence (R.evolve m q₀).p peq.p ≤
190 kl_divergence (R.evolve n q₀).p peq.p := by
191 induction hnm with
192 | refl => exact le_refl _
193 | step _ ih => exact le_trans (kl_step_le R q₀ _) ih