theorem
proved
dAlembert_contDiff_nat
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Cost.AczelProof on GitHub at line 147.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
-
comp -
H -
exists_integral_ne_zero -
Phi -
phi_contDiff_succ -
representation_formula -
dAlembert_contDiff_nat -
exists_integral_ne_zero -
Phi -
phi_contDiff_succ -
representation_formula -
H -
succ -
comp -
sub -
sub -
comp -
succ -
comp
used by
formal source
144 fun h_omega => absurd h_omega (by exact_mod_cast WithTop.coe_ne_top),
145 by rwa [deriv_phi_eq H h_cont]⟩
146
147private theorem dAlembert_contDiff_nat (H : ℝ → ℝ) (h_one : H 0 = 1) (h_cont : Continuous H)
148 (h_dAl : ∀ t u, H (t + u) + H (t - u) = 2 * H t * H u) :
149 ∀ n : ℕ, ContDiff ℝ (n : ℕ∞) H := by
150 obtain ⟨δ, _, hδ_ne⟩ := exists_integral_ne_zero H h_one h_cont
151 have h_rep := representation_formula H h_cont h_dAl hδ_ne
152 intro n; induction n with
153 | zero => exact contDiff_zero.mpr h_cont
154 | succ n ih =>
155 have h_phi := phi_contDiff_succ H h_cont ih
156 have h1 : ContDiff ℝ ((n + 1 : ℕ) : ℕ∞) (fun t => Phi H (t + δ)) :=
157 h_phi.comp (contDiff_id.add contDiff_const)
158 have h2 : ContDiff ℝ ((n + 1 : ℕ) : ℕ∞) (fun t => Phi H (t - δ)) :=
159 h_phi.comp (contDiff_id.sub contDiff_const)
160 have h4 : ContDiff ℝ ((n + 1 : ℕ) : ℕ∞)
161 (fun t => (Phi H (t + δ) - Phi H (t - δ)) / (2 * Phi H δ)) :=
162 (h1.sub h2).div_const _
163 exact (funext h_rep) ▸ h4
164
165private theorem dAlembert_contDiff_smooth (H : ℝ → ℝ) (h_one : H 0 = 1) (h_cont : Continuous H)
166 (h_dAl : ∀ t u, H (t + u) + H (t - u) = 2 * H t * H u) :
167 ContDiff ℝ smooth H :=
168 contDiff_infty.mpr (dAlembert_contDiff_nat H h_one h_cont h_dAl)
169
170/-! ## Phase 2: General ODE Derivation -/
171
172private theorem dAlembert_to_ODE_general (H : ℝ → ℝ)
173 (h_smooth : ContDiff ℝ smooth H)
174 (h_dAl : ∀ t u, H (t + u) + H (t - u) = 2 * H t * H u) :
175 ∀ t, deriv (deriv H) t = deriv (deriv H) 0 * H t := by
176 have h2 : ContDiff ℝ 2 H := by exact_mod_cast (contDiff_infty.mp h_smooth) 2
177 have hDiff : Differentiable ℝ H := h2.differentiable (by decide : (2 : WithTop ℕ∞) ≠ 0)