Zulip Chat Archive
Stream: new members
Topic: Prove ContDiffOn by continuous derivative
Victor Liu (Jul 28 2024 at 22:37):
So I needed to prove the fact h'_cont_a_b
, and when I added the assumption that h
is continuously differentiable on Ω
, the exact?
tactic worked to prove it. However, now I am stuck with the problem of proving h_contDiffOn
based on h'_clm
being the derivative of h
and being continuous. I can't seem to be able to find anything that works, and when I try apply?
or exact?
it says that it reached the maximum number of heartbeats.
Perhaps there is a better approach for this, or a proof for h'_contDiffOn
would also work. Thanks in advance.
import Mathlib.Analysis.Calculus.ContDiff.Defs
open Set Topology Metric ContinuousLinearMap
section NewtonKantorovich1Constant
-- Define the variables for Banach spaces X and Y
variable {X Y : Type*}
[NormedAddCommGroup X] [NormedSpace ℝ X] [CompleteSpace X]
[NormedAddCommGroup Y] [NormedSpace ℝ Y] [CompleteSpace Y]
variable [Nontrivial X] [Nontrivial Y]
-- Define the open subset Ω of X
variable (Ω : Set X) (hΩ : IsOpen Ω)
-- Define the C¹ mapping f: Ω → Y
variable (f : X → Y) (hf : ContDiffOn ℝ 1 f Ω)
-- Define f' as a mapping
variable (f' : X → X ≃L[ℝ] Y)
(hf' : ∀ x ∈ Ω, HasFDerivAt f (f' x : X →L[ℝ] Y) x)
variable (a b : X) (hab : ∀ t, t ∈ Icc (0 : ℝ) 1 → (a + t • (b - a)) ∈ Ω)
noncomputable def f'_clm : X → X →L[ℝ] Y := fun x ↦ (f' x).toContinuousLinearMap
lemma f'_clm_continuous {Ω : Set X} {f : X → Y}
{f' : X → X ≃L[ℝ] Y}
(hΩ : IsOpen Ω) (hf : ContDiffOn ℝ 1 f Ω)
(hf' : ∀ x ∈ Ω, HasFDerivAt f (f' x : X →L[ℝ] Y) x) :
ContinuousOn (f'_clm f') Ω := by
have h_fderiv_cont : ContinuousOn (fun x ↦ fderiv ℝ f x) Ω := by
apply ContDiffOn.continuousOn_fderiv_of_isOpen hf hΩ
norm_num
apply ContinuousOn.congr h_fderiv_cont
intro x hx
simp [f'_clm]
exact Eq.symm (HasFDerivAt.fderiv (hf' x hx))
lemma f'_cont_a_b :
ContinuousOn (fun t : ℝ ↦
(f' (a + t • (b - a)) : X →L[ℝ] Y)) (Icc 0 1) := by
have h_comp : ContinuousOn (f'_clm f' ∘ γ a b) (Icc 0 1):= by
apply ContinuousOn.comp
· exact f'_clm_continuous hΩ hf hf'
· intro t _
exact γ_continuous a b t
· exact hab
exact h_comp
-- Auxiliary function h
noncomputable def h (x : X) : X := (f' x₀).symm (f x)
noncomputable def h' (x : X) : X ≃L[ℝ] X := (f' x).trans (f' x₀).symm
noncomputable def h'_clm : X → X →L[ℝ] X := fun x ↦ (h' x₀ f' x).toContinuousLinearMap
lemma h'_deriv : ∀ x ∈ Ω, HasFDerivAt (h x₀ f f') (h'_clm x₀ f' x) x := by
intro x hx
-- Step 1: Express h as a composition
have h_comp : h x₀ f f' = (f' x₀).symm ∘ f := rfl
have h'_comp : h'_clm x₀ f' x = ((f' x₀).symm : Y →L[ℝ] X).comp (f' x : X →L[ℝ] Y) := rfl
rw [h_comp, h'_comp]
exact (ContinuousLinearEquiv.comp_hasFDerivAt_iff (f' x₀).symm).mpr (hf' x hx)
lemma h'_eq_deriv : ∀ x ∈ Ω, h' x₀ f' x = fderiv ℝ (h x₀ f f') x := by
exact fun x a ↦ Eq.symm (HasFDerivAt.fderiv ((h'_deriv Ω x₀ f f' hf') x a))
lemma h'_cont : ∀ x ∈ Ω, ContinuousOn (h'_clm x₀ f' x) Ω := by fun_prop
lemma h_contDiffOn : ContDiffOn ℝ 1 (h x₀ f f') Ω := by
have h'_deriv := h'_deriv Ω x₀ f f' hf'
apply?
lemma h'_cont_a_b {Ω : Set X} {x₀ a b : X} {f : X → Y} {f' : X → X ≃L[ℝ] Y}
(hab : ∀ t, t ∈ Icc (0 : ℝ) 1 → (a + t • (b - a)) ∈ Ω)
(hΩ : IsOpen Ω)
(hh : ContDiffOn ℝ 1 (h x₀ f f') Ω)
(hh' : ∀ x ∈ Ω, HasFDerivAt (h x₀ f f') (h' x₀ f' x : X →L[ℝ] X) x) :
ContinuousOn (fun t : ℝ ↦
((h' x₀ f') (a + t • (b - a)) : X →L[ℝ] X)) (Icc 0 1) := by
exact f'_cont_a_b Ω hΩ (h x₀ f f') hh (h' x₀ f') hh' a b hab
-- This could be useful for a different approach:
-- Define the parameteric path γ from a to b
def γ (a b : X) : ℝ → X := fun t ↦ a + t • (b - a)
lemma γ_continuous (a b : X) (t : ℝ) : ContinuousWithinAt (γ a b) (Icc 0 1) t := by
apply ContinuousWithinAt.add
· exact continuousWithinAt_const
· apply ContinuousWithinAt.smul
· exact continuousWithinAt_id
· exact continuousWithinAt_const
Last updated: May 02 2025 at 03:31 UTC