Imports
/-
Copyright (c) 2026 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Mathlib.Analysis.Calculus.ContDiff.FiniteDimension
public import Mathlib.Analysis.Calculus.ParametricIntervalIntegral
public import Mathlib.Tactic.CasesParametric Integration
In this module we give some lemmas around parametric integration in Lean. These extend some lemmas in Mathlib, and give them in a more physics-friendly way.
@[expose] public sectionM:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) x₀
apply intervalIntegral.hasFDerivAt_integral_of_dominated_of_fderiv_le (s := s x₀)
(F' := F') (bound := fun t => ‖F' a.1 a.2‖) hs M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ s x₀ ∈ nhds x₀hF_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᶠ (x : M) in nhds x₀, AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1))hF_int M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ IntervalIntegrable (F x₀) volume 0 1hF'_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ AEStronglyMeasurable (F' x₀) (volume.restrict (Set.uIoc 0 1))h_bound M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖bound_integrable M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ IntervalIntegrable (fun t => ‖F' a.1 a.2‖) volume 0 1h_diff M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x
· hs M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ s x₀ ∈ nhds x₀ exact Metric.closedBall_mem_nhds x₀ one_pos All goals completed! 🐙
· hF_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᶠ (x : M) in nhds x₀, AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1)) filter_upwards with x hF_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Fx:M⊢ AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1))
apply Continuous.aestronglyMeasurable hF_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Fx:M⊢ Continuous (F x)
fun_prop All goals completed! 🐙
· hF_int M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ IntervalIntegrable (F x₀) volume 0 1 apply Continuous.intervalIntegrable hF_int M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ Continuous (F x₀)
fun_prop All goals completed! 🐙
· hF'_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ AEStronglyMeasurable (F' x₀) (volume.restrict (Set.uIoc 0 1)) apply Continuous.aestronglyMeasurable hF'_meas M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ Continuous (F' x₀)
exact Continuous.uncurry_left x₀ (by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ Continuous (Function.uncurry F') fun_prop All goals completed! 🐙)
· h_bound M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖ filter_upwards with t h h_bound M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1⊢ ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖ x h_bound M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:M⊢ x ∈ s x₀ → ‖F' x t‖ ≤ ‖F' a.1 a.2‖ hx h_bound M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx✝:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:Mhx:x ∈ s x₀⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖
exact ha.2 (Set.mk_mem_prod hx (Set.Ioc_subset_Icc_self (by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx✝:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:Mhx:x ∈ s x₀⊢ t ∈ Set.Ioc 0 1 simpa using h All goals completed! 🐙)))
· bound_integrable M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ IntervalIntegrable (fun t => ‖F' a.1 a.2‖) volume 0 1 exact intervalIntegrable_const All goals completed! 🐙
· h_diff M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿F⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x filter_upwards with t h h_diff M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1⊢ ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x x h_diff M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:M⊢ x ∈ s x₀ → HasFDerivAt (fun x => F x t) (F' x t) x hx h_diff M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx✝:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:Mhx:x ∈ s x₀⊢ HasFDerivAt (fun x => F x t) (F' x t) x
exact DifferentiableAt.hasFDerivAt (by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:MF':M → ℝ → M →L[ℝ] N := fun x t => fderiv ℝ (fun x => F x t) xs:M → Set M := fun x₀ => Metric.closedBall x₀ 1hF':Continuous ↿F'a:M × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ahx✝:Differentiable ℝ ↿Ft:ℝh:t ∈ Set.uIoc 0 1x:Mhx:x ∈ s x₀⊢ DifferentiableAt ℝ (fun x => F x t) x fun_prop All goals completed! 🐙)
lemma fderiv_apply_parameteric_intervalIntegral
{F : M → ℝ → N} (hf : ContDiff ℝ 1 ↿F) (x₀ : M) (v : M) :
fderiv ℝ (fun (x : M) => ∫ (t : ℝ) in 0..1, F x t ∂(volume)) x₀ v =
∫ (t : ℝ) in 0..1, fderiv ℝ (F · t) x₀ v ∂(volume) := by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ (fderiv ℝ (fun x => ∫ (t : ℝ) in 0..1, F x t) x₀) v = ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun x => F x t) x₀) v
rw [(hasFDerivAt_parametric_intervalIntegral_of_contDiff hf x₀).fderiv M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) v = ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun x => F x t) x₀) v M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) v = ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun x => F x t) x₀) v] M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) v = ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun x => F x t) x₀) v
refine ContinuousLinearMap.intervalIntegral_apply ?_ v M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ IntervalIntegrable (fun t => fderiv ℝ (fun x => F x t) x₀) volume 0 1
apply Continuous.intervalIntegrable M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mv:M⊢ Continuous fun t => fderiv ℝ (fun x => F x t) x₀
fun_prop All goals completed! 🐙lemma fderiv_parameteric_intervalIntegral
{F : M → ℝ → N} (hf : ContDiff ℝ 1 ↿F) (x₀ : M) :
fderiv ℝ (fun (x : M) => ∫ (t : ℝ) in 0..1, F x t ∂(volume)) =
fun x => ∫ (t : ℝ) in 0..1, fderiv ℝ (F · t) x ∂(volume) := by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:M⊢ (fderiv ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) = fun x => ∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x
have h := hasFDerivAt_parametric_intervalIntegral_of_contDiff hf x₀ M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mh:HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) x₀⊢ (fderiv ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) = fun x => ∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x
ext1 x M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿Fx₀:Mh:HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x₀) x₀x:M⊢ fderiv ℝ (fun x => ∫ (t : ℝ) in 0..1, F x t) x = ∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x
exact (hasFDerivAt_parametric_intervalIntegral_of_contDiff hf x).fderiv All goals completed! 🐙
lemma contDiff_one_parametric_intervalIntegral_of_contDiff
{F : M → ℝ → N} (hf : ContDiff ℝ 1 ↿F) :
ContDiff ℝ 1 (fun (x : M) => ∫ (t : ℝ) in 0..1, F x t ∂(volume)) := by M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿F⊢ ContDiff ℝ 1 fun x => ∫ (t : ℝ) in 0..1, F x t
rw [contDiff_one_iff_hasFDerivAt M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿F⊢ ∃ f', Continuous f' ∧ ∀ (x : M), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (f' x) x M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿F⊢ ∃ f', Continuous f' ∧ ∀ (x : M), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (f' x) x] M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿F⊢ ∃ f', Continuous f' ∧ ∀ (x : M), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (f' x) x
refine ⟨_, ?_, hasFDerivAt_parametric_intervalIntegral_of_contDiff hf⟩ M:TypeN:Typeinst✝⁴:NormedAddCommGroup Minst✝³:NormedSpace ℝ Minst✝²:ProperSpace Minst✝¹:NormedAddCommGroup Ninst✝:NormedSpace ℝ NF:M → ℝ → Nhf:ContDiff ℝ 1 ↿F⊢ Continuous fun x => ∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => F x t) x
fun_prop All goals completed! 🐙
lemma contDiff_succ_parametric_intervalIntegral_of_contDiff {n : ℕ} [FiniteDimensional ℝ M]
{F : M → ℝ → N} (hf : ContDiff ℝ (n + 1) ↿F) :
ContDiff ℝ (n + 1) (fun (x : M) => ∫ (t : ℝ) in 0..1, F x t ∂(volume)) := by M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Nn:ℕinst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ (↑n + 1) ↿F⊢ ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x t
induction' n with n ih generalizing F zero M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ (↑0 + 1) ↿F⊢ ContDiff ℝ (↑0 + 1) fun x => ∫ (t : ℝ) in 0..1, F x tsucc M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ ContDiff ℝ (↑(n + 1) + 1) fun x => ∫ (t : ℝ) in 0..1, F x t
· zero M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ (↑0 + 1) ↿F⊢ ContDiff ℝ (↑0 + 1) fun x => ∫ (t : ℝ) in 0..1, F x t exact contDiff_one_parametric_intervalIntegral_of_contDiff hf All goals completed! 🐙
· succ M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ ContDiff ℝ (↑(n + 1) + 1) fun x => ∫ (t : ℝ) in 0..1, F x t rw [contDiff_succ_iff_fderiv succ M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ (Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) ∧
(↑(n + 1) = ⊤ → AnalyticOnNhd ℝ (fun x => ∫ (t : ℝ) in 0..1, F x t) Set.univ) ∧
ContDiff ℝ (↑(n + 1)) (fderiv ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) succ M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ (Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) ∧
(↑(n + 1) = ⊤ → AnalyticOnNhd ℝ (fun x => ∫ (t : ℝ) in 0..1, F x t) Set.univ) ∧
ContDiff ℝ (↑(n + 1)) (fderiv ℝ fun x => ∫ (t : ℝ) in 0..1, F x t)] succ M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ (Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, F x t) ∧
(↑(n + 1) = ⊤ → AnalyticOnNhd ℝ (fun x => ∫ (t : ℝ) in 0..1, F x t) Set.univ) ∧
ContDiff ℝ (↑(n + 1)) (fderiv ℝ fun x => ∫ (t : ℝ) in 0..1, F x t)
refine ⟨ContDiff.differentiable
(contDiff_one_parametric_intervalIntegral_of_contDiff (hf.of_le (by M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ 1 ≤ ↑(n + 1) + 1 simp All goals completed! 🐙))) (by M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ 1 ≠ 0 simp All goals completed! 🐙), ?_⟩
simp only [Nat.cast_add, Nat.cast_one, WithTop.add_eq_top, WithTop.natCast_ne_top,
WithTop.one_ne_top, or_self, IsEmpty.forall_iff, true_and, contDiff_clm_apply_iff,
fderiv_apply_parameteric_intervalIntegral (hf.of_le (by simp))] succ M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿F⊢ ∀ (y : M), ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun x => F x t) x) y
exact fun y => ih (by M:TypeN:Typeinst✝⁵:NormedAddCommGroup Minst✝⁴:NormedSpace ℝ Minst✝³:ProperSpace Minst✝²:NormedAddCommGroup Ninst✝¹:NormedSpace ℝ Ninst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ (↑n + 1) ↿F → ContDiff ℝ (↑n + 1) fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ (↑(n + 1) + 1) ↿Fy:M⊢ ContDiff ℝ (↑n + 1) ↿fun x t => (fderiv ℝ (fun x => F x t) x) y fun_prop All goals completed! 🐙)lemma contDiff_parametric_intervalIntegral_of_contDiff {n : ℕ} {M : Type}
[NormedAddCommGroup M] [NormedSpace ℝ M] [ProperSpace M] [FiniteDimensional ℝ M]
{F : M → ℝ → N} (hf : ContDiff ℝ n ↿F) :
ContDiff ℝ n (fun (x : M) => ∫ (t : ℝ) in 0..1, F x t ∂(volume)) := by N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ Nn:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ ↑n ↿F⊢ ContDiff ℝ ↑n fun x => ∫ (t : ℝ) in 0..1, F x t
induction' n with n ih generalizing F zero N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ ↑0 ↿F⊢ ContDiff ℝ ↑0 fun x => ∫ (t : ℝ) in 0..1, F x tsucc N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ ↑n ↿F → ContDiff ℝ ↑n fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ ↑(n + 1) ↿F⊢ ContDiff ℝ ↑(n + 1) fun x => ∫ (t : ℝ) in 0..1, F x t
· zero N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ ↑0 ↿F⊢ ContDiff ℝ ↑0 fun x => ∫ (t : ℝ) in 0..1, F x t exact contDiff_zero.mpr (by N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ MF:M → ℝ → Nhf:ContDiff ℝ ↑0 ↿F⊢ Continuous fun x => ∫ (t : ℝ) in 0..1, F x t fun_prop All goals completed! 🐙)
· succ N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ ↑n ↿F → ContDiff ℝ ↑n fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ ↑(n + 1) ↿F⊢ ContDiff ℝ ↑(n + 1) fun x => ∫ (t : ℝ) in 0..1, F x t exact contDiff_succ_parametric_intervalIntegral_of_contDiff (hf.of_le (by N:Typeinst✝⁵:NormedAddCommGroup Ninst✝⁴:NormedSpace ℝ NM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:ProperSpace Minst✝:FiniteDimensional ℝ Mn:ℕih:∀ {F : M → ℝ → N}, ContDiff ℝ ↑n ↿F → ContDiff ℝ ↑n fun x => ∫ (t : ℝ) in 0..1, F x tF:M → ℝ → Nhf:ContDiff ℝ ↑(n + 1) ↿F⊢ ↑n + 1 ≤ ↑(n + 1) simp All goals completed! 🐙))