def
definition
J_log
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Foundation.DiscretenessForcing on GitHub at line 47.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
-
cosh_quadratic_bound -
discreteness_forcing_principle -
J_log_eq_J_exp -
J_log_eq_zero_iff -
J_log_nonneg -
J_log_pos -
J_log_quadratic_approx -
J_log_second_deriv_at_zero -
J_log_symmetric -
J_log_zero -
J_log -
rh_equivalent_to_zero_cost -
defectIterate_zero_eq_J_log -
defectIterate_zero_param -
doubledZeroDefect -
doubledZeroDefect_eq_cosh_sub_one -
zeroDefect -
zeroDefect_eq_cosh_sub_one -
zeroDefect_eq_J_log -
zeroDefect_invariant_under_conjugation -
zeroDefect_invariant_under_functional_reflection -
zeroDefect_invariant_under_reflection -
zeroDefect_pos_iff_off_critical_line -
cosh_gt_one_plus_half_sq -
coupling_identity -
coupling_law_cert -
exactCost
formal source
44
45/-- J in log coordinates: J(eᵗ) = cosh(t) - 1.
46 This is a convex bowl centered at t = 0. -/
47noncomputable def J_log (t : ℝ) : ℝ := Real.cosh t - 1
48
49/-- J_log(0) = 0 (the minimum). -/
50@[simp] theorem J_log_zero : J_log 0 = 0 := by simp [J_log]
51
52/-- J_log is non-negative. -/
53theorem J_log_nonneg (t : ℝ) : J_log t ≥ 0 := by
54 simp only [J_log]
55 have h : Real.cosh t ≥ 1 := Real.one_le_cosh t
56 linarith
57
58/-- J_log is zero iff t = 0.
59 Proof: cosh t = 1 iff t = 0 (by AM-GM on e^t + e^{-t}). -/
60theorem J_log_eq_zero_iff {t : ℝ} : J_log t = 0 ↔ t = 0 := by
61 constructor
62 · intro h
63 simp only [J_log] at h
64 have h1 : Real.cosh t = 1 := by linarith
65 -- cosh t = (e^t + e^{-t})/2 = 1 iff e^t + e^{-t} = 2
66 -- By AM-GM, equality holds iff e^t = e^{-t}, i.e., t = 0
67 rw [Real.cosh_eq] at h1
68 have h2 : Real.exp t + Real.exp (-t) = 2 := by linarith
69 -- The only solution is t = 0 (from e^t = e^{-t})
70 have hprod : Real.exp t * Real.exp (-t) = 1 := by rw [← Real.exp_add]; simp
71 -- From e^t + e^{-t} = 2 and e^t · e^{-t} = 1, we get e^t = 1, hence t = 0
72 have h3 : Real.exp t > 0 := Real.exp_pos t
73 have h4 : Real.exp (-t) > 0 := Real.exp_pos (-t)
74 have hsq : (Real.exp t - 1)^2 = 0 := by nlinarith
75 have heq : Real.exp t = 1 := by nlinarith [sq_nonneg (Real.exp t - 1)]
76 have ht_zero : t = 0 := by
77 have := Real.exp_injective (heq.trans Real.exp_zero.symm)