/-Copyright (c) 2026 Carles Marín. All rights reserved.Released under Apache 2.0 license as described in the file LICENSE.Authors: Carles Marín, Claude (AI assistant)-/module public import Mathlib.Analysis.SpecialFunctions.Pow.Derivpublic import Mathlib.Analysis.SpecialFunctions.Trigonometric.Derivpublic import Mathlib.Analysis.Calculus.Deriv.MeanValuepublic import Mathlib.Analysis.Calculus.Deriv.Powpublic import Mathlib.Topology.Algebra.InfiniteSum.Realpublic import Mathlib.Analysis.SpecificLimits.Basicpublic import Mathlib.Analysis.Real.Pi.Boundspublic import Mathlib.Analysis.SpecialFunctions.Trigonometric.Boundspublic import Mathlib.Analysis.Convex.SpecificFunctions.Basicpublic import Mathlib.Analysis.Normed.Group.Tannerypublic import Mathlib.Analysis.SpecialFunctions.Exppublic import Mathlib.Analysis.SpecialFunctions.Log.Basicpublic import Mathlib.Analysis.SpecialFunctions.Pow.Continuitypublic import Mathlib.Topology.Algebra.Order.Field /-!# The Zieliński–Zych speed limits and their limit α → 0 For a discrete spectral measure with populations p n ≥ 0, ∑ p n = 1, energies E n ≥ E₀ andfractional moment M_α = ∑ p n (E n − E₀)^α, if the autocorrelation ∑ p n e^{−i E n τ} vanishes at τ≥ 0, then π^α ≤ 2 M_α τ^α, that is τ ≥ π / (2 M_α)^{1/α} (ħ = 1; Zieliński–Zych, Phys. Rev. A 74,034301 (2006), Eq. (10)). The inequality x^α − π^α/2 + (π^α/2) cos x + α π^{α−1} sin x ≥ 0 behindit, stated without proof by Zieliński and Zych (who assert it for all α > 0), is proved here forevery α > 0 (the case α = 1 is Margolus–Levitin): for 0 < α ≤ 1 by a harmonic-mean bound on t^α,for α ≥ 1 by Bernoulli plus the split tan(u) versus 2α/π. E₀ only needs to bound from below the energiesthat carry population. When the lowest populated level E 0 = E₀ carries p 0 and the others liestrictly above it, M_α → 1 − p 0 as α → 0⁺, so the bound tends to +∞ when 1/2 < p 0 < 1 and to 0when p 0 < 1/2: in that limit the family reduces to the dominant-population criterion. ## Main results * `QSL.zz_inequality`: x^α − π^α/2 + (π^α/2) cos x + α π^{α−1} sin x ≥ 0 for 0 < α ≤ 1, x ≥ 0* `QSL.zielinski_zych`: orthogonality at τ forces π^α ≤ 2 M_α τ^α (0 < α ≤ 1)* `QSL.zielinski_zych_time`: the same as τ ≥ π / (2 M_α)^{1/α}* `QSL.zz_inequality_of_one_le`: the same inequality for α ≥ 1, x ≥ 0* `QSL.zz_inequality_all`: the same inequality for every α > 0, x ≥ 0* `QSL.zielinski_zych_all`: π^α ≤ 2 M_α τ^α for every α > 0* `QSL.zielinski_zych_time_all`: τ ≥ π / (2 M_α)^{1/α} for every α > 0* `QSL.tendsto_fractionalMoment`: M_α → 1 − p 0 as α → 0⁺* `QSL.zz_bound_tendsto_atTop`: the bound tends to +∞ as α → 0⁺ when 1/2 < p 0 < 1* `QSL.zz_bound_tendsto_zero`: the bound tends to 0 as α → 0⁺ when p 0 < 1/2 ## References * C. Marín, *The Clock That Never Ticks: a machine-checked path from the dilogarithm to quantum speed limits in Lean 4*, Zenodo (2026), doi:10.5281/zenodo.20675271, `thm:clock`.-/ @[expose] public section noncomputable sectionopen scoped Real Topologyopen Set Filter namespace QSL /-! ### Elementary trigonometric bounds -/ private lemma sin_ge_sub_cube {x : ℝ} (hx : 0 ≤ x) : x - x ^ 3 / 6 ≤ Real.sin x := by have hd : ∀ y : ℝ, HasDerivAt (fun y : ℝ => Real.sin y - y + y ^ 3 / 6) (Real.cos y - 1 + y ^ 2 / 2) y := by intro y have h1 := (Real.hasDerivAt_sin y).sub (hasDerivAt_id y) have h2 := (hasDerivAt_pow 3 y).div_const 6 refine (h1.add h2).congr_deriv ?_ norm_num ring have hmono : Monotone fun y : ℝ => Real.sin y - y + y ^ 3 / 6 := by apply monotone_of_deriv_nonneg · exact fun y => (hd y).differentiableAt · intro y rw [(hd y).deriv] linarith [Real.one_sub_sq_div_two_le_cos (x := y)] have h := hmono hx norm_num at h linarith /-- Auxiliary inequality on `[0, π/2]`. -/private lemma P_small {v : ℝ} (h0 : 0 ≤ v) (hv : v ≤ π / 2) : 0 ≤ π ^ 2 * Real.sin (v / 2) ^ 2 - π * v + (π - v) * Real.sin v := by have hp1 := Real.pi_gt_d2 have hp2 := Real.pi_lt_d2 have hv' : v ≤ 1.575 := by linarith have ha : v / 2 - (v / 2) ^ 3 / 6 ≤ Real.sin (v / 2) := sin_ge_sub_cube (by linarith) have hb : v - v ^ 3 / 6 ≤ Real.sin v := sin_ge_sub_cube h0 have hv2 : v ^ 2 ≤ 3 := by nlinarith have hl : 0 ≤ v / 2 - (v / 2) ^ 3 / 6 := by nlinarith [mul_nonneg h0 (sub_nonneg.2 hv2)] have ha2 : (v / 2 - (v / 2) ^ 3 / 6) ^ 2 ≤ Real.sin (v / 2) ^ 2 := pow_le_pow_left₀ hl ha 2 have hpv : 0 ≤ π - v := by linarith [Real.pi_pos] have e1 : π * v ≤ 3.15 * 1.575 := by nlinarith have e2 : (π * v) ^ 2 ≤ (3.15 * 1.575) ^ 2 := pow_le_pow_left₀ (by positivity [Real.pi_pos]) e1 2 have hpp : (3.14 : ℝ) ^ 2 ≤ π ^ 2 := pow_le_pow_left₀ (by norm_num) hp1.le 2 have hR : 0 ≤ π ^ 2 / 4 - 1 - π * v / 6 - π ^ 2 * v ^ 2 / 48 := by nlinarith have key : π ^ 2 * (v / 2 - (v / 2) ^ 3 / 6) ^ 2 - π * v + (π - v) * (v - v ^ 3 / 6) = v ^ 2 * (π ^ 2 / 4 - 1 - π * v / 6 - π ^ 2 * v ^ 2 / 48) + (v ^ 4 / 6 + π ^ 2 * v ^ 6 / 2304) := by ring have h3 : 0 ≤ v ^ 2 * (π ^ 2 / 4 - 1 - π * v / 6 - π ^ 2 * v ^ 2 / 48) + (v ^ 4 / 6 + π ^ 2 * v ^ 6 / 2304) := add_nonneg (mul_nonneg (sq_nonneg v) hR) (by positivity) nlinarith [mul_le_mul_of_nonneg_left ha2 (sq_nonneg π), mul_le_mul_of_nonneg_left hb hpv] /-- Auxiliary inequality on `[π/2, π]`. -/private lemma P_large {v : ℝ} (h0 : π / 2 ≤ v) (hv : v ≤ π) : 0 ≤ π ^ 2 * Real.sin (v / 2) ^ 2 - π * v + (π - v) * Real.sin v := by obtain ⟨w, rfl⟩ : ∃ w, v = π - w := ⟨π - v, by ring⟩ have hπ := Real.pi_pos have hp1 := Real.pi_gt_d2 have hp2 := Real.pi_lt_d2 have hw0 : 0 ≤ w := by linarith have hw1 : w ≤ π / 2 := by linarith have e1 : Real.sin ((π - w) / 2) = Real.cos (w / 2) := by rw [show (π - w) / 2 = π / 2 - w / 2 by ring, Real.sin_pi_div_two_sub] rw [e1, show π - (π - w) = w by ring, Real.sin_pi_sub] have hc : Real.cos (w / 2) ^ 2 = 1 - Real.sin (w / 2) ^ 2 := by linarith [Real.sin_sq_add_cos_sq (w / 2)] have hs0 : 0 ≤ Real.sin (w / 2) := Real.sin_nonneg_of_nonneg_of_le_pi (by linarith) (by linarith) have hs1 : Real.sin (w / 2) ≤ w / 2 := Real.sin_le (by linarith) have hs2 : Real.sin (w / 2) ^ 2 ≤ (w / 2) ^ 2 := pow_le_pow_left₀ hs0 hs1 2 have hsw0 : 2 / π * w ≤ Real.sin w := Real.mul_le_sin hw0 hw1 have hsw : 2 * w ≤ π * Real.sin w := by have h := mul_le_mul_of_nonneg_left hsw0 hπ.le have e : π * (2 / π * w) = 2 * w := by field_simp linarith have h1 : π ^ 3 * Real.sin (w / 2) ^ 2 ≤ π ^ 3 * (w / 2) ^ 2 := mul_le_mul_of_nonneg_left hs2 (by positivity) have h2 : w * (2 * w) ≤ w * (π * Real.sin w) := mul_le_mul_of_nonneg_left hsw hw0 have hp3 : (3.14 : ℝ) ^ 3 ≤ π ^ 3 := pow_le_pow_left₀ (by norm_num) hp1.le 3 have hp2' : (3.14 : ℝ) ^ 2 ≤ π ^ 2 := pow_le_pow_left₀ (by norm_num) hp1.le 2 have hp4 : π ^ 4 ≤ (3.15 : ℝ) ^ 4 := pow_le_pow_left₀ hπ.le hp2.le 4 have hK : 0 ≤ (π / 2 - w) * (π ^ 3 / 4 - 2) := mul_nonneg (by linarith) (by nlinarith) have h3 : 0 ≤ π ^ 2 - π ^ 3 * w / 4 + 2 * w := by nlinarith have h4 : 0 ≤ w * (π ^ 2 - π ^ 3 * w / 4 + 2 * w) := mul_nonneg hw0 h3 by_contra hneg push Not at hneg have hm := mul_neg_of_pos_of_neg hπ hneg nlinarith [h1, h2, h4, hm, hc] private lemma P_nonneg {v : ℝ} (h0 : 0 ≤ v) (hv : v ≤ π) : 0 ≤ π ^ 2 * Real.sin (v / 2) ^ 2 - π * v + (π - v) * Real.sin v := (le_total v (π / 2)).elim (P_small h0) (fun h => P_large h hv) /-! ### Power bounds -/ /-- Harmonic-mean lower bound `t ≤ t^α (t + α (1 - t))` for `0 < t` and `0 ≤ α ≤ 1`. -/private lemma rpow_hm {t α : ℝ} (ht : 0 < t) (hα : 0 ≤ α) (hα1 : α ≤ 1) : t ≤ t ^ α * (t + α * (1 - t)) := by have hq : 0 < t ^ α := Real.rpow_pos_of_pos ht α have hb := rpow_one_add_le_one_add_mul_self (s := t⁻¹ - 1) (by have := inv_pos.2 ht; linarith) hα hα1 rw [show 1 + (t⁻¹ - 1) = t⁻¹ by ring, Real.inv_rpow ht.le] at hb have h2 := mul_le_mul_of_nonneg_right hb (mul_pos ht hq).le have e1 : (t ^ α)⁻¹ * (t * t ^ α) = t := by field_simp have e2 : (1 + α * (t⁻¹ - 1)) * (t * t ^ α) = t ^ α * (t + α * (1 - t)) := by field_simp rw [e1, e2] at h2 exact h2 /-! ### The normalized inequality -/ /-- The normalized inequality on `[0, 1]`. -/private lemma zz_aux_le {α t : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (ht0 : 0 ≤ t) (ht1 : t ≤ 1) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := by have hπ := Real.pi_pos obtain ⟨v, hv⟩ : ∃ v, v = π * (1 - t) := ⟨_, rfl⟩ have hv0 : 0 ≤ v := by rw [hv]; exact mul_nonneg hπ.le (by linarith) have hvπ : v ≤ π := by rw [hv]; nlinarith have hπt : π * t = π - v := by rw [hv]; ring have hcos : Real.cos (π * t) = - Real.cos v := by rw [hπt, Real.cos_pi_sub] have hsin : Real.sin (π * t) = Real.sin v := by rw [hπt, Real.sin_pi_sub] have hS : 0 ≤ Real.sin v := Real.sin_nonneg_of_nonneg_of_le_pi hv0 hvπ have hP := P_nonneg hv0 hvπ have hsq : Real.sin (v / 2) ^ 2 = (1 - Real.cos v) / 2 := by have h := Real.cos_two_mul (v / 2) rw [show 2 * (v / 2) = v by ring] at h nlinarith [Real.sin_sq_add_cos_sq (v / 2)] rw [hcos, hsin] -- the quantities of the proof obtain ⟨C, hC⟩ : ∃ C, C = (1 + Real.cos v) / 2 := ⟨_, rfl⟩ have hC1 : 0 ≤ 1 - C := by rw [hC]; linarith [Real.cos_le_one v] have hY : 0 ≤ t - C + t * (Real.sin v / π) := by have e : π ^ 2 * (t - C + t * (Real.sin v / π)) = π ^ 2 * Real.sin (v / 2) ^ 2 - π * v + (π - v) * Real.sin v := by rw [hsq, hC] have : v = π * (1 - t) := hv subst this field_simp ring have h2 : 0 ≤ π ^ 2 * (t - C + t * (Real.sin v / π)) := by rw [e]; exact hP exact (mul_nonneg_iff_of_pos_left (by positivity)).1 h2 have hD : 0 < t + α * (1 - t) := by nlinarith [mul_nonneg ht0 (sub_nonneg.2 hα1), mul_nonneg hα.le (sub_nonneg.2 ht1)] have hHM : t ≤ t ^ α * (t + α * (1 - t)) := by rcases ht0.eq_or_lt with h | h · have := mul_nonneg (Real.rpow_nonneg ht0 α) hD.le linarith · exact rpow_hm h hα.le hα1 have hSπ : 0 ≤ Real.sin v / π := by positivity have hF : 0 ≤ t - (t + α * (1 - t)) * (C - α * (Real.sin v / π)) := by have e : t - (t + α * (1 - t)) * (C - α * (Real.sin v / π)) = (1 - α) * (t * (1 - C)) + α * (t - C + t * (Real.sin v / π)) + α ^ 2 * ((1 - t) * (Real.sin v / π)) := by ring rw [e] have h1 : 0 ≤ (1 - α) * (t * (1 - C)) := mul_nonneg (sub_nonneg.2 hα1) (mul_nonneg ht0 hC1) have h2 : 0 ≤ α * (t - C + t * (Real.sin v / π)) := mul_nonneg hα.le hY have h3 : 0 ≤ α ^ 2 * ((1 - t) * (Real.sin v / π)) := mul_nonneg (sq_nonneg α) (mul_nonneg (sub_nonneg.2 ht1) hSπ) linarith have hG : 0 ≤ (t ^ α - (C - α * (Real.sin v / π))) * (t + α * (1 - t)) := by nlinarith have hGnn : 0 ≤ t ^ α - (C - α * (Real.sin v / π)) := by by_contra hneg push Not at hneg nlinarith [mul_neg_of_neg_of_pos hneg hD] have e : t ^ α - (1 - -Real.cos v) / 2 + α / π * Real.sin v = t ^ α - (C - α * (Real.sin v / π)) := by rw [hC]; ring rw [e] exact hGnn /-- The normalized inequality on `[1, ∞)`. -/private lemma zz_aux_ge {α t : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (ht : 1 ≤ t) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := by have hπ := Real.pi_pos have hp3 := Real.pi_gt_three have ht0 : 0 < t := by linarith have hq : 1 + α * (1 - t⁻¹) ≤ t ^ α := by rw [Real.rpow_def_of_pos ht0] have h1 := Real.add_one_le_exp (Real.log t * α) have h2 := Real.one_sub_inv_le_log_of_pos ht0 nlinarith [mul_le_mul_of_nonneg_left h2 hα.le] obtain ⟨u, hu⟩ : ∃ u, u = π * (t - 1) := ⟨_, rfl⟩ have hu0 : 0 ≤ u := by rw [hu]; exact mul_nonneg hπ.le (by linarith) have hπt : π * t = u + π := by rw [hu]; ring have hcos : Real.cos (π * t) = - Real.cos u := by rw [hπt, Real.cos_add_pi] have hsin : Real.sin (π * t) = - Real.sin u := by rw [hπt, Real.sin_add_pi] rw [hcos, hsin] have hinv : 0 < t⁻¹ := inv_pos.2 ht0 rcases le_total u π with huπ | huπ · -- t ≤ 2 have hz : 0 ≤ t - 1 := by linarith have hs1 : t - 1 ≤ Real.sin (u / 2) := by have h := Real.mul_le_sin (x := u / 2) (by linarith) (by linarith) have e : 2 / π * (u / 2) = t - 1 := by rw [hu]; field_simp linarith have hs2 : (t - 1) ^ 2 ≤ Real.sin (u / 2) ^ 2 := pow_le_pow_left₀ hz hs1 2 have hsq : Real.sin (u / 2) ^ 2 = (1 - Real.cos u) / 2 := by have h := Real.cos_two_mul (u / 2) rw [show 2 * (u / 2) = u by ring] at h nlinarith [Real.sin_sq_add_cos_sq (u / 2)] have hsl : Real.sin u / π ≤ t - 1 := by rw [div_le_iff₀ hπ] nlinarith [Real.sin_le hu0] have hinv2 : t⁻¹ ≤ t ^ 2 - 3 * t + 3 := by rw [← sub_nonneg] have e : t ^ 2 - 3 * t + 3 - t⁻¹ = (t - 1) ^ 3 / t := by field_simp ring rw [e] positivity have hB : -(t - 1) ^ 2 ≤ 1 - t⁻¹ - Real.sin u / π := by nlinarith have h1 := mul_le_mul_of_nonneg_left hB hα.le have h2 : α * (t - 1) ^ 2 ≤ 1 * (t - 1) ^ 2 := mul_le_mul_of_nonneg_right hα1 (sq_nonneg _) have e : α / π * -Real.sin u = -(α * (Real.sin u / π)) := by ring rw [e] nlinarith · -- t ≥ 2 have ht2 : 2 ≤ t := by by_contra h push Not at h nlinarith have hinv2 : t⁻¹ ≤ 1 / 2 := by rw [inv_eq_one_div] exact one_div_le_one_div_of_le (by norm_num) ht2 have hsl : Real.sin u / π ≤ 1 / 3 := by rw [div_le_iff₀ hπ] nlinarith [Real.sin_le_one u] have hB : 0 ≤ 1 - t⁻¹ - Real.sin u / π := by linarith have h1 : 0 ≤ α * (1 - t⁻¹ - Real.sin u / π) := mul_nonneg hα.le hB have e : α / π * -Real.sin u = -(α * (Real.sin u / π)) := by ring rw [e] nlinarith [Real.cos_le_one u] private lemma zz_aux {α t : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (ht : 0 ≤ t) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := (le_total t 1).elim (zz_aux_le hα hα1 ht) (zz_aux_ge hα hα1) /-- **The Zieliński–Zych inequality** (their Eq. (9)): for `0 < α ≤ 1` and `x ≥ 0`,`x^α - π^α/2 + (π^α/2) cos x + α π^{α-1} sin x ≥ 0`, with equality at `x = 0` and `x = π`. -/theorem zz_inequality {α x : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (hx : 0 ≤ x) : 0 ≤ x ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos x + α * π ^ (α - 1) * Real.sin x := by have hπ := Real.pi_pos obtain ⟨t, ht, rfl⟩ : ∃ t, 0 ≤ t ∧ x = π * t := ⟨x / π, div_nonneg hx hπ.le, by field_simp⟩ have hG := zz_aux hα hα1 ht have e1 : (π * t) ^ α = π ^ α * t ^ α := Real.mul_rpow hπ.le ht have e2 : π ^ (α - 1) = π ^ α / π := Real.rpow_sub_one hπ.ne' α rw [e1, e2] have h := mul_nonneg (Real.rpow_nonneg hπ.le α) hG have e3 : π ^ α * (t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t)) = π ^ α * t ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos (π * t) + α * (π ^ α / π) * Real.sin (π * t) := by ring linarith /-! ### The case `α ≥ 1` Normalising `t = x / π`, the inequality reads `F(t) = t^α - sin²(π t / 2) + (α/π) sin (π t) ≥ 0`.For `t ≥ 1` Bernoulli gives `t^α ≥ 1 + α (t - 1)` and `u - sin u ≥ 0`. For `0 ≤ t ≤ 1` put`u = π (1 - t) / 2 ∈ [0, π/2]`. If `π cos u ≤ 2 α sin u`, dropping `t^α` leaves`cos u (2 α sin u - π cos u) / π ≥ 0`. Otherwise Bernoulli leaves`(π sin² u - 2 α (u - sin u cos u)) / π`, which is `≥ 0` because `2 α sin u ≤ π cos u` and`u cos u ≤ sin u` (`u ≤ tan u`). -/ /-- `u cos u ≤ sin u` on `[0, π/2]`. -/private lemma mul_cos_le_sin {u : ℝ} (h0 : 0 ≤ u) (h1 : u ≤ π / 2) : u * Real.cos u ≤ Real.sin u := by rcases h1.lt_or_eq with h | h · have hc : 0 < Real.cos u := Real.cos_pos_of_mem_Ioo ⟨by linarith [Real.pi_pos], h⟩ have ht := Real.le_tan h0 h rw [Real.tan_eq_sin_div_cos, le_div_iff₀ hc] at ht exact ht · subst h simp /-- The normalized inequality on `[1, ∞)` for `α ≥ 1`. -/private lemma zz_aux_ge_one {α t : ℝ} (hα : 1 ≤ α) (ht : 1 ≤ t) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := by have hπ := Real.pi_pos have hb := one_add_mul_self_le_rpow_one_add (s := t - 1) (by linarith) hα rw [show 1 + (t - 1) = t by ring] at hb obtain ⟨u, hu⟩ : ∃ u, u = π * (t - 1) := ⟨_, rfl⟩ have hu0 : 0 ≤ u := by rw [hu]; exact mul_nonneg hπ.le (by linarith) have hπt : π * t = u + π := by rw [hu]; ring rw [hπt, Real.cos_add_pi, Real.sin_add_pi] have h1 : α / π * Real.sin u ≤ α / π * u := mul_le_mul_of_nonneg_left (Real.sin_le hu0) (by positivity) have e : α / π * u = α * (t - 1) := by rw [hu]; field_simp nlinarith [Real.cos_le_one u] /-- The normalized inequality on `[0, 1]` for `α ≥ 1`. -/private lemma zz_aux_le_one {α t : ℝ} (hα : 1 ≤ α) (ht0 : 0 ≤ t) (ht1 : t ≤ 1) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := by have hπ := Real.pi_pos have hb := one_add_mul_self_le_rpow_one_add (s := t - 1) (by linarith) hα rw [show 1 + (t - 1) = t by ring] at hb obtain ⟨u, hu⟩ : ∃ u, u = π * (1 - t) / 2 := ⟨_, rfl⟩ have hu0 : 0 ≤ u := by rw [hu] have : 0 ≤ π * (1 - t) := mul_nonneg hπ.le (by linarith) linarith have hu1 : u ≤ π / 2 := by rw [hu]; nlinarith have htu : t = 1 - 2 * u / π := by rw [hu]; field_simp; ring have hπt : π * t = π - 2 * u := by rw [hu]; ring have hsu : 0 ≤ Real.sin u := Real.sin_nonneg_of_nonneg_of_le_pi hu0 (by linarith) have hcu : 0 ≤ Real.cos u := Real.cos_nonneg_of_neg_pi_div_two_le_of_le (by linarith) hu1 have hpy : Real.sin u ^ 2 + Real.cos u ^ 2 = 1 := Real.sin_sq_add_cos_sq u have hc : Real.cos (π * t) = 1 - 2 * Real.cos u ^ 2 := by rw [hπt, Real.cos_pi_sub, Real.cos_two_mul] ring have hs : Real.sin (π * t) = 2 * Real.sin u * Real.cos u := by rw [hπt, Real.sin_pi_sub, Real.sin_two_mul] rw [hc, hs] have hD : 0 ≤ u - Real.sin u * Real.cos u := by have h := Real.sin_le (x := 2 * u) (by linarith) rw [Real.sin_two_mul] at h linarith rcases le_total (π * Real.cos u) (2 * α * Real.sin u) with h | h · -- (a): drop `t ^ α` have hr := Real.rpow_nonneg ht0 α have h1 : 0 ≤ Real.cos u * (2 * α * Real.sin u - π * Real.cos u) := mul_nonneg hcu (by linarith) have h2 : 0 ≤ Real.cos u * (2 * α * Real.sin u - π * Real.cos u) / π := div_nonneg h1 hπ.le have e : Real.cos u * (2 * α * Real.sin u - π * Real.cos u) / π = α / π * (2 * Real.sin u * Real.cos u) - Real.cos u ^ 2 := by field_simp linarith · -- (b): Bernoulli have hK : 0 ≤ π * Real.sin u ^ 2 - 2 * α * (u - Real.sin u * Real.cos u) := by rcases hu0.eq_or_lt with h0 | h0 · rw [← h0] simp · have hsp : 0 < Real.sin u := Real.sin_pos_of_pos_of_lt_pi h0 (by linarith) have h1 : 2 * α * Real.sin u * (u - Real.sin u * Real.cos u) ≤ π * Real.cos u * (u - Real.sin u * Real.cos u) := mul_le_mul_of_nonneg_right h hD have h2 := mul_cos_le_sin hu0 hu1 have e : Real.sin u * (π * Real.sin u ^ 2 - 2 * α * (u - Real.sin u * Real.cos u)) = π * (Real.sin u - u * Real.cos u) + (π * Real.cos u * (u - Real.sin u * Real.cos u) - 2 * α * Real.sin u * (u - Real.sin u * Real.cos u)) := by linear_combination (π * Real.sin u) * hpy have h3 : 0 ≤ π * (Real.sin u - u * Real.cos u) := mul_nonneg hπ.le (sub_nonneg.2 h2) have hm : 0 ≤ Real.sin u * (π * Real.sin u ^ 2 - 2 * α * (u - Real.sin u * Real.cos u)) := by rw [e] linarith exact (mul_nonneg_iff_of_pos_left hsp).1 hm have hK' := div_nonneg hK hπ.le have e2 : (π * Real.sin u ^ 2 - 2 * α * (u - Real.sin u * Real.cos u)) / π = Real.sin u ^ 2 - 2 * α * u / π + α / π * (2 * Real.sin u * Real.cos u) := by field_simp ring have hb' : α * (t - 1) = -(2 * α * u / π) := by rw [htu] ring rw [hb'] at hb rw [e2] at hK' linarith private lemma zz_aux_one {α t : ℝ} (hα : 1 ≤ α) (ht : 0 ≤ t) : 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t) := (le_total t 1).elim (zz_aux_le_one hα ht) (zz_aux_ge_one hα) /-- Unnormalizing: the normalized inequality for all `t ≥ 0` gives the one in `x`. -/private lemma zz_of_aux {α x : ℝ} (hx : 0 ≤ x) (h : ∀ t : ℝ, 0 ≤ t → 0 ≤ t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t)) : 0 ≤ x ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos x + α * π ^ (α - 1) * Real.sin x := by have hπ := Real.pi_pos obtain ⟨t, ht, rfl⟩ : ∃ t, 0 ≤ t ∧ x = π * t := ⟨x / π, div_nonneg hx hπ.le, by field_simp⟩ have hG := h t ht have e1 : (π * t) ^ α = π ^ α * t ^ α := Real.mul_rpow hπ.le ht have e2 : π ^ (α - 1) = π ^ α / π := Real.rpow_sub_one hπ.ne' α rw [e1, e2] have h := mul_nonneg (Real.rpow_nonneg hπ.le α) hG have e3 : π ^ α * (t ^ α - (1 - Real.cos (π * t)) / 2 + α / π * Real.sin (π * t)) = π ^ α * t ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos (π * t) + α * (π ^ α / π) * Real.sin (π * t) := by ring linarith /-- **The Zieliński–Zych inequality for `α ≥ 1`** (asserted without proof in their paper). -/theorem zz_inequality_of_one_le {α x : ℝ} (hα : 1 ≤ α) (hx : 0 ≤ x) : 0 ≤ x ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos x + α * π ^ (α - 1) * Real.sin x := zz_of_aux hx (fun _ ht => zz_aux_one hα ht) /-- **The Zieliński–Zych inequality for every `α > 0`.** -/theorem zz_inequality_all {α x : ℝ} (hα : 0 < α) (hx : 0 ≤ x) : 0 ≤ x ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos x + α * π ^ (α - 1) * Real.sin x := (le_total α 1).elim (fun h => zz_inequality hα h hx) (fun h => zz_inequality_of_one_le h hx) /-- The speed limit from the inequality, for any fixed `α`. -/private lemma zz_core {p E : ℕ → ℝ} {E₀ α M τ : ℝ} (hineq : ∀ x : ℝ, 0 ≤ x → 0 ≤ x ^ α - π ^ α / 2 + π ^ α / 2 * Real.cos x + α * π ^ (α - 1) * Real.sin x) (hp : ∀ n, 0 ≤ p n) (hE : ∀ n, E₀ ≤ E n) (hτ : 0 ≤ τ) (hsum : HasSum p 1) (hM : HasSum (fun n => p n * (E n - E₀) ^ α) M) (hRe : HasSum (fun n => p n * Real.cos (E n * τ)) 0) (hIm : HasSum (fun n => p n * Real.sin (E n * τ)) 0) : π ^ α ≤ 2 * M * τ ^ α := by have hc : HasSum (fun n => p n * Real.cos (E n * τ - E₀ * τ)) 0 := by have h := (hRe.mul_left (Real.cos (E₀ * τ))).add (hIm.mul_left (Real.sin (E₀ * τ))) rw [mul_zero, mul_zero, add_zero] at h convert h using 1 funext n rw [Real.cos_sub] ring have hs : HasSum (fun n => p n * Real.sin (E n * τ - E₀ * τ)) 0 := by have h := (hIm.mul_left (Real.cos (E₀ * τ))).sub (hRe.mul_left (Real.sin (E₀ * τ))) rw [mul_zero, mul_zero, sub_zero] at h convert h using 1 funext n rw [Real.sin_sub] ring have hT := (((hM.mul_left (τ ^ α)).sub (hsum.mul_left (π ^ α / 2))).add (hc.mul_left (π ^ α / 2))).add (hs.mul_left (α * π ^ (α - 1))) have hterm : ∀ n, 0 ≤ τ ^ α * (p n * (E n - E₀) ^ α) - π ^ α / 2 * p n + π ^ α / 2 * (p n * Real.cos (E n * τ - E₀ * τ)) + α * π ^ (α - 1) * (p n * Real.sin (E n * τ - E₀ * τ)) := by intro n have h := hineq (τ * (E n - E₀)) (mul_nonneg hτ (sub_nonneg.2 (hE n))) rw [Real.mul_rpow hτ (sub_nonneg.2 (hE n)), show τ * (E n - E₀) = E n * τ - E₀ * τ by ring] at h have := mul_nonneg (hp n) h nlinarith [this] have hnn := hasSum_le hterm hasSum_zero hT nlinarith [hnn] /-- **The Zieliński–Zych speed limit for every `α > 0`** (their Eq. (10), `ℏ = 1`). -/theorem zielinski_zych_all {p E : ℕ → ℝ} {E₀ α M τ : ℝ} (hα : 0 < α) (hp : ∀ n, 0 ≤ p n) (hE : ∀ n, E₀ ≤ E n) (hτ : 0 ≤ τ) (hsum : HasSum p 1) (hM : HasSum (fun n => p n * (E n - E₀) ^ α) M) (hRe : HasSum (fun n => p n * Real.cos (E n * τ)) 0) (hIm : HasSum (fun n => p n * Real.sin (E n * τ)) 0) : π ^ α ≤ 2 * M * τ ^ α := zz_core (fun _ hx => zz_inequality_all hα hx) hp hE hτ hsum hM hRe hIm /-- The same bound as a lower bound on the time, for every `α > 0`. -/theorem zielinski_zych_time_all {p E : ℕ → ℝ} {E₀ α M τ : ℝ} (hα : 0 < α) (hp : ∀ n, 0 ≤ p n) (hE : ∀ n, E₀ ≤ E n) (hτ : 0 ≤ τ) (hsum : HasSum p 1) (hM : HasSum (fun n => p n * (E n - E₀) ^ α) M) (hRe : HasSum (fun n => p n * Real.cos (E n * τ)) 0) (hIm : HasSum (fun n => p n * Real.sin (E n * τ)) 0) : π / (2 * M) ^ (1 / α) ≤ τ := by have hZ := zielinski_zych_all hα hp hE hτ hsum hM hRe hIm have hM0 : 0 ≤ M := hasSum_le (fun n => mul_nonneg (hp n) (Real.rpow_nonneg (sub_nonneg.2 (hE n)) α)) hasSum_zero hM have hπα : 0 < π ^ α := Real.rpow_pos_of_pos Real.pi_pos α have hMpos : 0 < M := by rcases hM0.eq_or_lt with h | h · exfalso rw [← h] at hZ have : 2 * (0 : ℝ) * τ ^ α = 0 := by ring linarith · exact h have h2M : 0 < 2 * M := by positivity have hcpos : 0 < (2 * M) ^ (1 / α) := Real.rpow_pos_of_pos h2M _ have hca : ((2 * M) ^ (1 / α)) ^ α = 2 * M := by rw [← Real.rpow_mul h2M.le, one_div_mul_cancel hα.ne', Real.rpow_one] have h1 : π ^ α ≤ ((2 * M) ^ (1 / α) * τ) ^ α := by rw [Real.mul_rpow hcpos.le hτ, hca] exact hZ have h2 : π ≤ (2 * M) ^ (1 / α) * τ := (Real.rpow_le_rpow_iff Real.pi_pos.le (mul_nonneg hcpos.le hτ) hα).1 h1 rw [div_le_iff₀ hcpos] linarith /-- **The Zieliński–Zych speed limit** (their Eq. (10), `ℏ = 1`): if the autocorrelation of anormalized population distribution with energies `E n ≥ E₀` vanishes at `τ ≥ 0`, then`π^α ≤ 2 M_α τ^α` with `M_α = ∑ p n (E n - E₀)^α`. -/theorem zielinski_zych {p E : ℕ → ℝ} {E₀ α M τ : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (hp : ∀ n, 0 ≤ p n) (hE : ∀ n, E₀ ≤ E n) (hτ : 0 ≤ τ) (hsum : HasSum p 1) (hM : HasSum (fun n => p n * (E n - E₀) ^ α) M) (hRe : HasSum (fun n => p n * Real.cos (E n * τ)) 0) (hIm : HasSum (fun n => p n * Real.sin (E n * τ)) 0) : π ^ α ≤ 2 * M * τ ^ α := by have hc : HasSum (fun n => p n * Real.cos (E n * τ - E₀ * τ)) 0 := by have h := (hRe.mul_left (Real.cos (E₀ * τ))).add (hIm.mul_left (Real.sin (E₀ * τ))) rw [mul_zero, mul_zero, add_zero] at h convert h using 1 funext n rw [Real.cos_sub] ring have hs : HasSum (fun n => p n * Real.sin (E n * τ - E₀ * τ)) 0 := by have h := (hIm.mul_left (Real.cos (E₀ * τ))).sub (hRe.mul_left (Real.sin (E₀ * τ))) rw [mul_zero, mul_zero, sub_zero] at h convert h using 1 funext n rw [Real.sin_sub] ring have hT := (((hM.mul_left (τ ^ α)).sub (hsum.mul_left (π ^ α / 2))).add (hc.mul_left (π ^ α / 2))).add (hs.mul_left (α * π ^ (α - 1))) have hterm : ∀ n, 0 ≤ τ ^ α * (p n * (E n - E₀) ^ α) - π ^ α / 2 * p n + π ^ α / 2 * (p n * Real.cos (E n * τ - E₀ * τ)) + α * π ^ (α - 1) * (p n * Real.sin (E n * τ - E₀ * τ)) := by intro n have h := zz_inequality hα hα1 (x := τ * (E n - E₀)) (mul_nonneg hτ (sub_nonneg.2 (hE n))) rw [Real.mul_rpow hτ (sub_nonneg.2 (hE n)), show τ * (E n - E₀) = E n * τ - E₀ * τ by ring] at h have := mul_nonneg (hp n) h nlinarith [this] have hnn := hasSum_le hterm hasSum_zero hT nlinarith [hnn] /-- The same bound as a lower bound on the time: `π / (2 M_α)^{1/α} ≤ τ`. -/theorem zielinski_zych_time {p E : ℕ → ℝ} {E₀ α M τ : ℝ} (hα : 0 < α) (hα1 : α ≤ 1) (hp : ∀ n, 0 ≤ p n) (hE : ∀ n, E₀ ≤ E n) (hτ : 0 ≤ τ) (hsum : HasSum p 1) (hM : HasSum (fun n => p n * (E n - E₀) ^ α) M) (hRe : HasSum (fun n => p n * Real.cos (E n * τ)) 0) (hIm : HasSum (fun n => p n * Real.sin (E n * τ)) 0) : π / (2 * M) ^ (1 / α) ≤ τ := by have hZ := zielinski_zych hα hα1 hp hE hτ hsum hM hRe hIm have hM0 : 0 ≤ M := hasSum_le (fun n => mul_nonneg (hp n) (Real.rpow_nonneg (sub_nonneg.2 (hE n)) α)) hasSum_zero hM have hπα : 0 < π ^ α := Real.rpow_pos_of_pos Real.pi_pos α have hMpos : 0 < M := by rcases hM0.eq_or_lt with h | h · exfalso rw [← h] at hZ have : 2 * (0 : ℝ) * τ ^ α = 0 := by ring linarith · exact h have h2M : 0 < 2 * M := by positivity have hcpos : 0 < (2 * M) ^ (1 / α) := Real.rpow_pos_of_pos h2M _ have hca : ((2 * M) ^ (1 / α)) ^ α = 2 * M := by rw [← Real.rpow_mul h2M.le, one_div_mul_cancel hα.ne', Real.rpow_one] have h1 : π ^ α ≤ ((2 * M) ^ (1 / α) * τ) ^ α := by rw [Real.mul_rpow hcpos.le hτ, hca] exact hZ have h2 : π ≤ (2 * M) ^ (1 / α) * τ := (Real.rpow_le_rpow_iff Real.pi_pos.le (mul_nonneg hcpos.le hτ) hα).1 h1 rw [div_le_iff₀ hcpos] linarith /-- **The fractional moments tend to `1 - p 0`.** If the level `0` is the lowest populated one(`E 0 = E₀` and `E n > E₀` for `n ≠ 0`) and some moment of order `α₀ > 0` is finite, then`∑ p n (E n - E₀)^α → 1 - p 0` as `α → 0⁺`. -/theorem tendsto_fractionalMoment {p E : ℕ → ℝ} {E₀ α₀ : ℝ} (hp : ∀ n, 0 ≤ p n) (hsum : HasSum p 1) (h0 : E 0 = E₀) (hE : ∀ n, n ≠ 0 → E₀ < E n) (hα₀ : 0 < α₀) (hmom : Summable fun n => p n * (E n - E₀) ^ α₀) : Tendsto (fun α : ℝ => ∑' n, p n * (E n - E₀) ^ α) (𝓝[>] 0) (𝓝 (1 - p 0)) := by have hE' : ∀ n, 0 ≤ E n - E₀ := fun n => by by_cases h : n = 0 · subst h rw [h0] simp · exact sub_nonneg.2 (hE n h).le have hbound : Summable fun n => p n * (1 + (E n - E₀) ^ α₀) := by have := hsum.summable.add hmom refine this.congr (fun n => ?_) ring have hg : HasSum (fun n => if n = 0 then (0 : ℝ) else p n) (1 - p 0) := by have := hsum.sub (hasSum_ite_eq 0 (p 0)) convert this using 1 funext n by_cases h : n = 0 <;> simp [h] have hlim := tendsto_tsum_of_dominated_convergence (𝓕 := 𝓝[>] (0 : ℝ)) (f := fun α n => p n * (E n - E₀) ^ α) (g := fun n => if n = 0 then (0 : ℝ) else p n) (bound := fun n => p n * (1 + (E n - E₀) ^ α₀)) hbound ?_ ?_ · rw [hg.tsum_eq] at hlim exact hlim · intro k by_cases hk : k = 0 · subst hk simp only [ite_true] refine tendsto_const_nhds.congr' ?_ filter_upwards [self_mem_nhdsWithin] with a ha have ha' : 0 < a := ha rw [h0, sub_self, Real.zero_rpow ha'.ne', mul_zero] · simp only [hk, ite_false] have hpos : 0 < E k - E₀ := sub_pos.2 (hE k hk) have hc : ContinuousAt (fun a : ℝ => (E k - E₀) ^ a) 0 := Real.continuousAt_const_rpow hpos.ne' have h := hc.tendsto.const_mul (p k) simpa using h.mono_left nhdsWithin_le_nhds · filter_upwards [Ioo_mem_nhdsGT hα₀] with a ha k rw [Real.norm_eq_abs, abs_of_nonneg (mul_nonneg (hp k) (Real.rpow_nonneg (hE' k) a))] apply mul_le_mul_of_nonneg_left _ (hp k) by_cases h1 : 1 ≤ E k - E₀ · have := Real.rpow_le_rpow_of_exponent_le h1 ha.2.le have := Real.rpow_nonneg (hE' k) α₀ linarith · push Not at h1 have := Real.rpow_le_one (hE' k) h1.le ha.1.le have := Real.rpow_nonneg (hE' k) α₀ linarith /-- Core of the two limits: if `M → c` with `0 < c` and `2c < 1`, the bound diverges. -/private lemma bound_atTop {M : ℝ → ℝ} {c : ℝ} (hM : Tendsto M (𝓝[>] 0) (𝓝 c)) (hc0 : 0 < c) (hc1 : 2 * c < 1) : Tendsto (fun α => π / (2 * M α) ^ (1 / α)) (𝓝[>] 0) atTop := by have h2M : Tendsto (fun α => 2 * M α) (𝓝[>] 0) (𝓝 (2 * c)) := hM.const_mul 2 have hlog : Tendsto (fun α => Real.log (2 * M α)) (𝓝[>] 0) (𝓝 (Real.log (2 * c))) := h2M.log (by positivity) have hneg : Real.log (2 * c) < 0 := Real.log_neg (by positivity) hc1 have hprod : Tendsto (fun α => α⁻¹ * Real.log (2 * M α)) (𝓝[>] 0) atBot := tendsto_inv_nhdsGT_zero.atTop_mul_neg hneg hlog have hneg' : Tendsto (fun α => -(α⁻¹ * Real.log (2 * M α))) (𝓝[>] 0) atTop := tendsto_neg_atBot_atTop.comp hprod have hexp := Real.tendsto_exp_atTop.comp hneg' have hfin := hexp.const_mul_atTop Real.pi_pos have hMpos : ∀ᶠ α in 𝓝[>] (0 : ℝ), 0 < M α := hM.eventually (lt_mem_nhds hc0) refine hfin.congr' ?_ filter_upwards [hMpos] with a ha have h2 : 0 < 2 * M a := by positivity simp only [Function.comp] rw [Real.rpow_def_of_pos h2, div_eq_mul_inv, ← Real.exp_neg] congr 2 ring /-- Core of the two limits: if `M → c` with `1 < 2c`, the bound collapses. -/private lemma bound_zero {M : ℝ → ℝ} {c : ℝ} (hM : Tendsto M (𝓝[>] 0) (𝓝 c)) (hc1 : 1 < 2 * c) : Tendsto (fun α => π / (2 * M α) ^ (1 / α)) (𝓝[>] 0) (𝓝 0) := by have hc0 : 0 < c := by linarith have h2M : Tendsto (fun α => 2 * M α) (𝓝[>] 0) (𝓝 (2 * c)) := hM.const_mul 2 have hlog : Tendsto (fun α => Real.log (2 * M α)) (𝓝[>] 0) (𝓝 (Real.log (2 * c))) := h2M.log (by positivity) have hpos : 0 < Real.log (2 * c) := Real.log_pos hc1 have hprod : Tendsto (fun α => α⁻¹ * Real.log (2 * M α)) (𝓝[>] 0) atTop := tendsto_inv_nhdsGT_zero.atTop_mul_pos hpos hlog have hneg' : Tendsto (fun α => -(α⁻¹ * Real.log (2 * M α))) (𝓝[>] 0) atBot := tendsto_neg_atTop_atBot.comp hprod have hexp := Real.tendsto_exp_atBot.comp hneg' have hfin := hexp.const_mul π rw [mul_zero] at hfin have hMpos : ∀ᶠ α in 𝓝[>] (0 : ℝ), 0 < M α := hM.eventually (lt_mem_nhds hc0) refine hfin.congr' ?_ filter_upwards [hMpos] with a ha have h2 : 0 < 2 * M a := by positivity simp only [Function.comp] rw [Real.rpow_def_of_pos h2, div_eq_mul_inv, ← Real.exp_neg] congr 2 ring /-- **A dominant lowest level makes the Zieliński–Zych bound diverge**: if `1/2 < p 0 < 1`, then`π / (2 M_α)^{1/α} → +∞` as `α → 0⁺`, so the family certifies that the state never becomesorthogonal. -/theorem zz_bound_tendsto_atTop {p E : ℕ → ℝ} {E₀ α₀ : ℝ} (hp : ∀ n, 0 ≤ p n) (hsum : HasSum p 1) (h0 : E 0 = E₀) (hE : ∀ n, n ≠ 0 → E₀ < E n) (hα₀ : 0 < α₀) (hmom : Summable fun n => p n * (E n - E₀) ^ α₀) (hhalf : 1 / 2 < p 0) (hone : p 0 < 1) : Tendsto (fun α : ℝ => π / (2 * ∑' n, p n * (E n - E₀) ^ α) ^ (1 / α)) (𝓝[>] 0) atTop := bound_atTop (tendsto_fractionalMoment hp hsum h0 hE hα₀ hmom) (by linarith) (by linarith) /-- **Without a dominant lowest level the bound collapses**: if `p 0 < 1/2`, then`π / (2 M_α)^{1/α} → 0` as `α → 0⁺`. -/theorem zz_bound_tendsto_zero {p E : ℕ → ℝ} {E₀ α₀ : ℝ} (hp : ∀ n, 0 ≤ p n) (hsum : HasSum p 1) (h0 : E 0 = E₀) (hE : ∀ n, n ≠ 0 → E₀ < E n) (hα₀ : 0 < α₀) (hmom : Summable fun n => p n * (E n - E₀) ^ α₀) (hhalf : p 0 < 1 / 2) : Tendsto (fun α : ℝ => π / (2 * ∑' n, p n * (E n - E₀) ^ α) ^ (1 / α)) (𝓝[>] 0) (𝓝 0) := bound_zero (tendsto_fractionalMoment hp hsum h0 hE hα₀ hmom) (by linarith) end QSL