Imports
/-
Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Zhi Kai Pong, Joseph Tooby-Smith, Lode Vermeulen
-/
module
public import Physlib.SpaceAndTime.Space.Derivatives.Laplacian
public import Mathlib.MeasureTheory.Integral.CurveIntegral.Poincare
public import Physlib.SpaceAndTime.Space.CrossProduct
public import Mathlib.Analysis.Calculus.ParametricIntervalIntegralCurl on Space
i. Overview
In this module we define the curl of functions and distributions on 3-dimensional
space Space 3.
We also prove some basic vector-identities involving of the curl operator.
ii. Key results
curl : The curl operator on functions from Space 3 to EuclideanSpace ℝ (Fin 3).
distCurl : The curl operator on distributions from Space 3 to EuclideanSpace ℝ (Fin 3).
div_of_curl_eq_zero : The divergence of the curl of a function is zero.
distCurl_distGrad_eq_zero : The curl of the gradient of a distribution is zero.
iii. Table of contents
A. The curl on functions
A.1. The curl on the zero function
A.2. The curl on a constant function
A.3. Basic operations on curl
A.4. The curl of a linear map is a linear map
A.5. Preliminary lemmas about second derivatives
A.6. The div of a curl is zero
A.7. The curl of a grad is zero
A.8. The curl of a curl
A.9. A divergence-free field is a curl
A.10. A curl-free field is a gradient
B. The curl on distributions
B.1. The components of the curl
B.2. Basic equalities
B.3. The curl of a grad is zero
iv. References
@[expose] public sectionA. The curl on functions
@[inherit_doc curl]
macro (name := curlNotation) "∇" "⨯" f:term:100 : term => `(curl $f)A.1. The curl on the zero function
@[simp]
lemma curl_zero : ∇ ⨯ (0 : Space → EuclideanSpace ℝ (Fin 3)) = 0 := ⊢ curl 0 = 0
⊢ (fun x =>
have fi := fun i x => (0 x).ofLp i;
WithLp.toLp 2 fun i => (fderiv ℝ (fi (i + 2)) x) (basis (i + 1)) - (fderiv ℝ (fi (i + 1)) x) (basis (i + 2))) =
0
⊢ (fun x => WithLp.toLp 2 fun i => 0) = 0
All goals completed! 🐙A.2. The curl on a constant function
@[simp]
lemma curl_const : ∇ ⨯ (fun _ : Space => v₃) = 0 := v₃:EuclideanSpace ℝ (Fin 3)⊢ (curl fun x => v₃) = 0
v₃:EuclideanSpace ℝ (Fin 3)⊢ (fun x =>
have fi := fun i x => ((fun x => v₃) x).ofLp i;
WithLp.toLp 2 fun i => (fderiv ℝ (fi (i + 2)) x) (basis (i + 1)) - (fderiv ℝ (fi (i + 1)) x) (basis (i + 2))) =
0
v₃:EuclideanSpace ℝ (Fin 3)⊢ (fun x => WithLp.toLp 2 fun i => 0) = 0
All goals completed! 🐙A.3. Basic operations on curl
«2» f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ ((deriv (⟨2, ⋯⟩ + 1) fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 2)) + deriv (⟨2, ⋯⟩ + 1) fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 2)) x -
((deriv (⟨2, ⋯⟩ + 2) fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 1)) + deriv (⟨2, ⋯⟩ + 2) fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 1)) x =
deriv (⟨2, ⋯⟩ + 1) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 2)) x - deriv (⟨2, ⋯⟩ + 2) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 1)) x +
(deriv (⟨2, ⋯⟩ + 1) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 2)) x -
deriv (⟨2, ⋯⟩ + 2) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 1)) x)«2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2«2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2
simp only [Fin.isValue, Pi.add_apply] «2» f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ deriv (⟨2, ⋯⟩ + 1) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 2)) x + deriv (⟨2, ⋯⟩ + 1) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 2)) x -
(deriv (⟨2, ⋯⟩ + 2) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 1)) x +
deriv (⟨2, ⋯⟩ + 2) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 1)) x) =
deriv (⟨2, ⋯⟩ + 1) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 2)) x - deriv (⟨2, ⋯⟩ + 2) (fun x => (f1 x).ofLp (⟨2, ⋯⟩ + 1)) x +
(deriv (⟨2, ⋯⟩ + 1) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 2)) x -
deriv (⟨2, ⋯⟩ + 2) (fun x => (f2 x).ofLp (⟨2, ⋯⟩ + 1)) x)«2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2«2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2
ring «2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2«2».hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f1«2».hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2x:Space⊢ Differentiable ℝ f2
repeat assumption All goals completed! 🐙
@[to_fun]
lemma curl_smul (f : Space → EuclideanSpace ℝ (Fin 3)) (k : ℝ)
(hf : Differentiable ℝ f) :
∇ ⨯ (k • f) = k • ∇ ⨯ f := by f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ f⊢ curl (k • f) = k • curl f
unfold curl f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ f⊢ (fun x =>
have fi := fun i x => ((k • f) x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x) =
k • fun x =>
have fi := fun i x => (f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x
ext x i f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ (have fi := fun i x => ((k • f) x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x).ofLp
i =
((k • fun x =>
have fi := fun i x => (f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x)
x).ofLp
i
simp only [Fin.isValue, Pi.smul_apply, PiLp.smul_apply, smul_eq_mul] f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ deriv (i + 1) (fun x => k * (f x).ofLp (i + 2)) x - deriv (i + 2) (fun x => k * (f x).ofLp (i + 1)) x =
k * (deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - deriv (i + 2) (fun x => (f x).ofLp (i + 1)) x)
rw [deriv_coord_smul, f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ k * deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - deriv (i + 2) (fun x => k * (f x).ofLp (i + 1)) x =
k * (deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - deriv (i + 2) (fun x => (f x).ofLp (i + 1)) x)hf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f hf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f deriv_coord_smul, f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ k * deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - k * deriv (i + 2) (fun x => (f x).ofLp (i + 1)) x =
k * (deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - deriv (i + 2) (fun x => (f x).ofLp (i + 1)) x)hf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f hf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f mul_sub f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ k * deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - k * deriv (i + 2) (fun x => (f x).ofLp (i + 1)) x =
k * deriv (i + 1) (fun x => (f x).ofLp (i + 2)) x - k * deriv (i + 2) (fun x => (f x).ofLp (i + 1)) xhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f]hf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ fhf f:Space → EuclideanSpace ℝ (Fin 3)k:ℝhf:Differentiable ℝ fx:Spacei:Fin 3⊢ Differentiable ℝ f
repeat fun_prop All goals completed! 🐙
@[to_fun]
lemma curl_neg (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : Differentiable ℝ f) :
∇ ⨯ (-f) = -∇ ⨯ f := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ f⊢ curl (-f) = -curl f
rw [← neg_one_smul ℝ, f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ f⊢ curl (-1 • f) = -curl f All goals completed! 🐙 curl_smul _ _ hf, f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ f⊢ -1 • curl f = -curl f All goals completed! 🐙 neg_one_smul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ f⊢ -curl f = -curl f All goals completed! 🐙] All goals completed! 🐙
@[to_fun]
lemma curl_sub (f1 f2 : Space → EuclideanSpace ℝ (Fin 3))
(hf1 : Differentiable ℝ f1) (hf2 : Differentiable ℝ f2) :
∇ ⨯ (f1 - f2) = ∇ ⨯ f1 - ∇ ⨯ f2 := by f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ curl (f1 - f2) = curl f1 - curl f2
rw [sub_eq_add_neg, f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ curl (f1 + -f2) = curl f1 - curl f2 hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2) curl_add, f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ curl f1 + curl (-f2) = curl f1 - curl f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2) hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2) curl_neg, f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ curl f1 + -curl f2 = curl f1 - curl f2hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2)hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2) sub_eq_add_neg f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ curl f1 + -curl f2 = curl f1 + -curl f2hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2)hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2)]hf f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f2hf1 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ f1hf2 f1:Space → EuclideanSpace ℝ (Fin 3)f2:Space → EuclideanSpace ℝ (Fin 3)hf1:Differentiable ℝ f1hf2:Differentiable ℝ f2⊢ Differentiable ℝ (-f2)
repeat fun_prop All goals completed! 🐙A.4. The curl of a linear map is a linear map
lemma curl_linear_map (f : W → Space 3 → EuclideanSpace ℝ (Fin 3))
(hf : ∀ w, Differentiable ℝ (f w))
(hf' : IsLinearMap ℝ f) :
IsLinearMap ℝ (fun w => ∇ ⨯ (f w)) := by W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ f⊢ IsLinearMap ℝ fun w => curl (f w)
constructor map_add W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ f⊢ ∀ (x y : W), curl (f (x + y)) = curl (f x) + curl (f y)map_smul W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ f⊢ ∀ (c : ℝ) (x : W), curl (f (c • x)) = c • curl (f x)
· map_add W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ f⊢ ∀ (x y : W), curl (f (x + y)) = curl (f x) + curl (f y) intro w w' map_add W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ curl (f (w + w')) = curl (f w) + curl (f w')
rw [hf'.map_add, map_add W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ curl (f w + f w') = curl (f w) + curl (f w') map_add.hf1 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w)map_add.hf2 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w') curl_add map_add W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ curl (f w) + curl (f w') = curl (f w) + curl (f w')map_add.hf1 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w)map_add.hf2 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w') map_add.hf1 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w)map_add.hf2 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w')]map_add.hf1 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w)map_add.hf2 W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fw:Ww':W⊢ Differentiable ℝ (f w')
repeat fun_prop All goals completed! 🐙
· map_smul W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ f⊢ ∀ (c : ℝ) (x : W), curl (f (c • x)) = c • curl (f x) intros k w map_smul W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ curl (f (k • w)) = k • curl (f w)
rw [hf'.map_smul, map_smul W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ curl (k • f w) = k • curl (f w) map_smul.hf W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ Differentiable ℝ (f w) curl_smul map_smul W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ k • curl (f w) = k • curl (f w)map_smul.hf W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ Differentiable ℝ (f w)map_smul.hf W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ Differentiable ℝ (f w)]map_smul.hf W:Type u_1inst✝¹:NormedAddCommGroup Winst✝:NormedSpace ℝ Wf:W → Space → EuclideanSpace ℝ (Fin 3)hf:∀ (w : W), Differentiable ℝ (f w)hf':IsLinearMap ℝ fk:ℝw:W⊢ Differentiable ℝ (f w)
fun_prop All goals completed! 🐙A.5. Preliminary lemmas about second derivatives
Second derivatives distribute coordinate-wise over addition (all three components for div).
lemma deriv_coord_2nd_add (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 2 f) :
∂[i] (fun x => ∂[u] (fun x => f x u) x + (∂[v] (fun x => f x v) x + ∂[w] (fun x => f x w) x)) =
(∂[i] (∂[u] (fun x => f x u))) + (∂[i] (∂[v] (fun x => f x v))) +
(∂[i] (∂[w] (fun x => f x w))) := by i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (deriv i fun x =>
deriv u (fun x => (f x).ofLp u) x + (deriv v (fun x => (f x).ofLp v) x + deriv w (fun x => (f x).ofLp w) x)) =
deriv i (deriv u fun x => (f x).ofLp u) + deriv i (deriv v fun x => (f x).ofLp v) +
deriv i (deriv w fun x => (f x).ofLp w)
repeat rw [deriv_eq_fderiv_fun i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
deriv u (fun x => (f x).ofLp u) x + (deriv v (fun x => (f x).ofLp v) x + deriv w (fun x => (f x).ofLp w) x))
x)
(basis i)) =
deriv i (deriv u fun x => (f x).ofLp u) + deriv i (deriv v fun x => (f x).ofLp v) +
deriv i (deriv w fun x => (f x).ofLp w) i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
((fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
x)
(basis i)) =
((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i)] i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
((fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
x)
(basis i)) =
((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
deriv i fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w) i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
((fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
x)
(basis i)) =
((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i) i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
((fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
x)
(basis i)) =
((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i)
ext x i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
((fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
x)
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
x
rw [fderiv_fun_add, i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x)
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x fderiv_fun_add i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x] i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x))
(basis i) =
(((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i)) + fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i)) +
fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i))
xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x
simp only [_root_.add_apply, Pi.add_apply] i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i) +
((fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i) +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i)) =
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) x) (basis i) +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x) (basis i) +
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x) (basis i)hf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x
ring hf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) xhf i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp u) x) (basis u)) xhg i:Fin 3u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis v)) x +
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis w)) x)
x
repeat fun_prop All goals completed! 🐙Second derivatives distribute coordinate-wise over subtraction (two components for curl).
lemma deriv_coord_2nd_sub (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 2 f) :
∂[u] (fun x => ∂[v] (fun x => f x w) x - ∂[w] (fun x => f x v) x) =
(∂[u] (∂[v] (fun x => f x w))) - (∂[u] (∂[w] (fun x => f x v))) := by u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (deriv u fun x => deriv v (fun x => (f x).ofLp w) x - deriv w (fun x => (f x).ofLp v) x) =
deriv u (deriv v fun x => (f x).ofLp w) - deriv u (deriv w fun x => (f x).ofLp v)
repeat rw [deriv_eq_fderiv_fun u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x => (fderiv ℝ (fun x => deriv v (fun x => (f x).ofLp w) x - deriv w (fun x => (f x).ofLp v) x) x) (basis u)) =
deriv u (deriv v fun x => (f x).ofLp w) - deriv u (deriv w fun x => (f x).ofLp v) u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
x)
(basis u)) =
(fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u)) - fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)] u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
x)
(basis u)) =
(fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u)) -
deriv u fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w) u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
x)
(basis u)) =
(fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u)) - fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u) u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
x)
(basis u)) =
(fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u)) - fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)
ext x u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ
(fun x =>
(fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
(fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
x)
(basis u) =
((fun x => (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u)) - fun x =>
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u))
x
simp only [Pi.sub_apply] u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v) - (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
(basis u) =
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u) -
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)
rw [fderiv_fun_sub u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
(basis u) =
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u) -
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)hf u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) xhg u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
(basis u) =
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u) -
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)hf u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) xhg u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x] u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x -
fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x)
(basis u) =
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) x) (basis u) -
(fderiv ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x) (basis u)hf u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) xhg u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x
simp only [FunLike.coe_sub, Pi.sub_apply] hf u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp w) x) (basis v)) xhg u:Fin 3v:Fin 3w:Fin 3f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ DifferentiableAt ℝ (fun x => (fderiv ℝ (fun x => (f x).ofLp v) x) (basis w)) x
repeat fun_prop All goals completed! 🐙A.6. The div of a curl is zero
lemma div_of_curl_eq_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 2 f) :
∇ ⬝ (∇ ⨯ f) = 0 := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ div (curl f) = 0
unfold div curl Finset.sum f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
(Multiset.map
(fun i =>
deriv i
(fun x =>
(have fi := fun i x => (f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x).ofLp
i)
x)
Finset.univ.val).sum) =
0
ext x f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (Multiset.map
(fun i =>
deriv i
(fun x =>
(have fi := fun i x => (f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x).ofLp
i)
x)
Finset.univ.val).sum =
0 x
simp only [Fin.isValue, Fin.univ_val_map, List.ofFn_succ, zero_add, Fin.succ_zero_eq_one,
Fin.reduceAdd, Fin.succ_one_eq_two, List.ofFn_zero, Multiset.sum_coe, List.sum_cons,
List.sum_nil, add_zero, Pi.ofNat_apply] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (fun x => deriv 1 (fun x => (f x).ofLp 2) x - deriv 2 (fun x => (f x).ofLp 1) x) x +
(deriv 1 (fun x => deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x) x +
deriv 2 (fun x => deriv 0 (fun x => (f x).ofLp 1) x - deriv 1 (fun x => (f x).ofLp 0) x) x) =
0
rw [deriv_coord_2nd_sub, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
(deriv 1 (fun x => deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x) x +
deriv 2 (fun x => deriv 0 (fun x => (f x).ofLp 1) x - deriv 1 (fun x => (f x).ofLp 0) x) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) - deriv 2 (deriv 1 fun x => (f x).ofLp 0)) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f deriv_coord_2nd_sub, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
deriv 2 (fun x => deriv 0 (fun x => (f x).ofLp 1) x - deriv 1 (fun x => (f x).ofLp 0) x) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) - deriv 2 (deriv 1 fun x => (f x).ofLp 0)) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f deriv_coord_2nd_sub f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) - deriv 2 (deriv 1 fun x => (f x).ofLp 0)) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) - deriv 2 (deriv 1 fun x => (f x).ofLp 0)) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 1 fun x => (f x).ofLp 2) - deriv 0 (deriv 2 fun x => (f x).ofLp 1)) x +
((deriv 1 (deriv 2 fun x => (f x).ofLp 0) - deriv 1 (deriv 0 fun x => (f x).ofLp 2)) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) - deriv 2 (deriv 1 fun x => (f x).ofLp 0)) x) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
simp only [Fin.isValue, Pi.sub_apply] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 1 fun x => (f x).ofLp 2) x - deriv 0 (deriv 2 fun x => (f x).ofLp 1) x +
(deriv 1 (deriv 2 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
rw [deriv_commute fun x => f x 0, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 1 fun x => (f x).ofLp 2) x - deriv 0 (deriv 2 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f deriv_commute fun x => f x 1, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
deriv_commute fun x => f x 2 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 2) x - deriv 2 (deriv 0 fun x => (f x).ofLp 1) x +
(deriv 2 (deriv 1 fun x => (f x).ofLp 0) x - deriv 1 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 2 (deriv 0 fun x => (f x).ofLp 1) x - deriv 2 (deriv 1 fun x => (f x).ofLp 0) x)) =
0f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
simp only [Fin.isValue, sub_add_sub_cancel', sub_self] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
repeat
try apply contDiff_euclidean.mp hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
exact hf All goals completed! 🐙A.7. The curl of a grad is zero
lemma curl_of_grad_eq_zero (f : Space → ℝ) (hf : ContDiff ℝ 2 f) :
∇ ⨯ (∇ f) = 0 := by f:Space → ℝhf:ContDiff ℝ 2 f⊢ curl (∇ f) = 0
unfold curl grad f:Space → ℝhf:ContDiff ℝ 2 f⊢ (fun x =>
have fi := fun i x => (WithLp.toLp 2 fun i => deriv i f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x) =
0
ext x i f:Space → ℝhf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ (have fi := fun i x => (WithLp.toLp 2 fun i => deriv i f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x).ofLp
i =
(0 x).ofLp i
simp only [Fin.isValue, Pi.zero_apply, PiLp.zero_apply] f:Space → ℝhf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ deriv (i + 1) (fun x => deriv (i + 2) f x) x - deriv (i + 2) (fun x => deriv (i + 1) f x) x = 0
rw [deriv_commute _ hf f:Space → ℝhf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ deriv (i + 2) (deriv (i + 1) f) x - deriv (i + 2) (fun x => deriv (i + 1) f x) x = 0 f:Space → ℝhf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ deriv (i + 2) (deriv (i + 1) f) x - deriv (i + 2) (fun x => deriv (i + 1) f x) x = 0] f:Space → ℝhf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ deriv (i + 2) (deriv (i + 1) f) x - deriv (i + 2) (fun x => deriv (i + 1) f x) x = 0
simp only [Fin.isValue, sub_self] All goals completed! 🐙A.8. The curl of a curl
lemma curl_of_curl (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 2 f) :
∇ ⨯ (∇ ⨯ f) = ∇ (∇ ⬝ f) - Δᵥ f := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ curl (curl f) = ∇ (div f) - Δᵥ f
unfold laplacianVec laplacian div grad curl Finset.sum f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
have fi := fun i x =>
(have fi := fun i x => (f x).ofLp i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x).ofLp
i;
WithLp.toLp 2 fun i => deriv (i + 1) (fi (i + 2)) x - deriv (i + 2) (fi (i + 1)) x) =
(fun x =>
WithLp.toLp 2 fun i =>
deriv i (fun x => (Multiset.map (fun i => deriv i (fun x => (f x).ofLp i) x) Finset.univ.val).sum) x) -
fun x =>
WithLp.toLp 2 fun i =>
(Multiset.map
(fun i_1 => deriv i_1 (fun x => (WithLp.toLp 2 fun i_2 => deriv i_2 (fun x => (f x).ofLp i) x).ofLp i_1) x)
Finset.univ.val).sum
simp only [Fin.isValue, Fin.univ_val_map, List.ofFn_succ, Fin.succ_zero_eq_one,
Fin.succ_one_eq_two, List.ofFn_zero, Multiset.sum_coe, List.sum_cons, List.sum_nil, add_zero] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 f⊢ (fun x =>
WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x) =
(fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x)
ext x i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Spacei:Fin 3⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
i =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨0, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨1, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨2, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨2, ⋯⟩) <;> «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨0, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨1, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨2, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨2, ⋯⟩)
· «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (WithLp.toLp 2 fun i =>
deriv (i + 1)
(fun x =>
deriv (i + 2 + 1) (fun x => (f x).ofLp (i + 2 + 2)) x -
deriv (i + 2 + 2) (fun x => (f x).ofLp (i + 2 + 1)) x)
x -
deriv (i + 2)
(fun x =>
deriv (i + 1 + 1) (fun x => (f x).ofLp (i + 1 + 2)) x -
deriv (i + 1 + 2) (fun x => (f x).ofLp (i + 1 + 1)) x)
x).ofLp
((fun i => i) ⟨2, ⋯⟩) =
(((fun x =>
WithLp.toLp 2 fun i =>
deriv i
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x +
(deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x) -
fun x =>
WithLp.toLp 2 fun i =>
deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp i) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp i) x) x +
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp i) x) x))
x).ofLp
((fun i => i) ⟨2, ⋯⟩) simp only [Fin.reduceFinMk, Fin.isValue, Fin.reduceAdd, zero_add, Pi.sub_apply, PiLp.sub_apply] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (fun x => deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x) x -
deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x - deriv 2 (fun x => (f x).ofLp 1) x) x =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))
rw [deriv_coord_2nd_sub, «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 1 (deriv 0 fun x => (f x).ofLp 1) - deriv 1 (deriv 1 fun x => (f x).ofLp 0)) x -
deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x) x =
deriv 0
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 0) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 2 fun x => (f x).ofLp 0) - deriv 0 (deriv 0 fun x => (f x).ofLp 2)) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) - deriv 1 (deriv 2 fun x => (f x).ofLp 1)) x =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f deriv_coord_2nd_sub «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 1 (deriv 0 fun x => (f x).ofLp 1) - deriv 1 (deriv 1 fun x => (f x).ofLp 0)) x -
(deriv 2 (deriv 2 fun x => (f x).ofLp 0) - deriv 2 (deriv 0 fun x => (f x).ofLp 2)) x =
deriv 0
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 0) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 2 fun x => (f x).ofLp 0) - deriv 0 (deriv 0 fun x => (f x).ofLp 2)) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) - deriv 1 (deriv 2 fun x => (f x).ofLp 1)) x =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 2 (deriv 1 fun x => (f x).ofLp 2) - deriv 2 (deriv 2 fun x => (f x).ofLp 1)) x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 1) - deriv 0 (deriv 1 fun x => (f x).ofLp 0)) x =
deriv 1
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 1) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 1) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 1) x) x))«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 2 fun x => (f x).ofLp 0) - deriv 0 (deriv 0 fun x => (f x).ofLp 2)) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) - deriv 1 (deriv 2 fun x => (f x).ofLp 1)) x =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ (deriv 0 (deriv 2 fun x => (f x).ofLp 0) - deriv 0 (deriv 0 fun x => (f x).ofLp 2)) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) - deriv 1 (deriv 2 fun x => (f x).ofLp 1)) x =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
simp only [Fin.isValue, Pi.sub_apply] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 2 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 1 (deriv 2 fun x => (f x).ofLp 1) x) =
deriv 2
(fun x =>
deriv 0 (fun x => (f x).ofLp 0) x + (deriv 1 (fun x => (f x).ofLp 1) x + deriv 2 (fun x => (f x).ofLp 2) x))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
rw [deriv_coord_2nd_add «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 1) x - deriv 1 (deriv 1 fun x => (f x).ofLp 0) x -
(deriv 2 (deriv 2 fun x => (f x).ofLp 0) x - deriv 2 (deriv 0 fun x => (f x).ofLp 2) x) =
(deriv 0 (deriv 0 fun x => (f x).ofLp 0) + deriv 0 (deriv 1 fun x => (f x).ofLp 1) +
deriv 0 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 0) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 2 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 1 (deriv 2 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 2 fun x => (f x).ofLp 1) x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 1) x - deriv 0 (deriv 1 fun x => (f x).ofLp 0) x) =
(deriv 1 (deriv 0 fun x => (f x).ofLp 0) + deriv 1 (deriv 1 fun x => (f x).ofLp 1) +
deriv 1 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 1) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 1) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 1) x) x))«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 2 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 1 (deriv 2 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 2 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 1 (deriv 2 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 2) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
rw [deriv_commute fun x => f x 0, «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 0 fun x => (f x).ofLp 1) x - deriv 1 (deriv 1 fun x => (f x).ofLp 0) x -
(deriv 2 (deriv 2 fun x => (f x).ofLp 0) x - deriv 2 (deriv 0 fun x => (f x).ofLp 2) x) =
(deriv 0 (deriv 0 fun x => (f x).ofLp 0) + deriv 0 (deriv 1 fun x => (f x).ofLp 1) +
deriv 0 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (deriv 1 fun x => (f x).ofLp 0) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f deriv_commute fun x => f x 1, «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 1 fun x => (f x).ofLp 1) x - deriv 1 (deriv 1 fun x => (f x).ofLp 0) x -
(deriv 2 (deriv 2 fun x => (f x).ofLp 0) x - deriv 2 (deriv 0 fun x => (f x).ofLp 2) x) =
(deriv 0 (deriv 0 fun x => (f x).ofLp 0) + deriv 0 (deriv 1 fun x => (f x).ofLp 1) +
deriv 0 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (deriv 1 fun x => (f x).ofLp 0) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
deriv_commute fun x => f x 2 «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 0 (deriv 1 fun x => (f x).ofLp 1) x - deriv 1 (deriv 1 fun x => (f x).ofLp 0) x -
(deriv 2 (deriv 2 fun x => (f x).ofLp 0) x - deriv 0 (deriv 2 fun x => (f x).ofLp 2) x) =
(deriv 0 (deriv 0 fun x => (f x).ofLp 0) + deriv 0 (deriv 1 fun x => (f x).ofLp 1) +
deriv 0 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 0) x) x +
(deriv 1 (deriv 1 fun x => (f x).ofLp 0) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 0) x) x))«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 1 (deriv 2 fun x => (f x).ofLp 2) x - deriv 2 (deriv 2 fun x => (f x).ofLp 1) x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 1) x - deriv 1 (deriv 0 fun x => (f x).ofLp 0) x) =
(deriv 1 (deriv 0 fun x => (f x).ofLp 0) + deriv 1 (deriv 1 fun x => (f x).ofLp 1) +
deriv 1 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (fun x => deriv 0 (fun x => (f x).ofLp 1) x) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 1) x) x + deriv 2 (deriv 2 fun x => (f x).ofLp 1) x))«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
(deriv 2 (deriv 0 fun x => (f x).ofLp 0) + deriv 2 (deriv 1 fun x => (f x).ofLp 1) +
deriv 2 (deriv 2 fun x => (f x).ofLp 2))
x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
simp only [Fin.isValue, Pi.add_apply] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ deriv 2 (deriv 0 fun x => (f x).ofLp 0) x - deriv 0 (deriv 0 fun x => (f x).ofLp 2) x -
(deriv 1 (deriv 1 fun x => (f x).ofLp 2) x - deriv 2 (deriv 1 fun x => (f x).ofLp 1) x) =
deriv 2 (deriv 0 fun x => (f x).ofLp 0) x + deriv 2 (deriv 1 fun x => (f x).ofLp 1) x +
deriv 2 (deriv 2 fun x => (f x).ofLp 2) x -
(deriv 0 (deriv 0 fun x => (f x).ofLp 2) x +
(deriv 1 (fun x => deriv 1 (fun x => (f x).ofLp 2) x) x + deriv 2 (fun x => deriv 2 (fun x => (f x).ofLp 2) x) x))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
ring «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 fun x => (f x).ofLp 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 fx:Space⊢ ContDiff ℝ 2 f
repeat fun_prop All goals completed! 🐙### A.9. A divergence-free field is a curl
We now prove that if the divergence of a function is zero, then it is equal to the curl of some function.
This proof is involved, thus we have split it up into private definitions and lemmas.
The proof is by explicit construction. If f has divergence zero,
then we construct
∫ t in 0..1, (t • x) ⨯ f (t • x)
and show that the curl of this is equal to f.
We call the integrand of this function the homotopyOperatorIntegrand.
We build API around this to help in our proof.
The homotopy operator is defined as ∫ t in 0..1, (t • x) ⨯ f (t • x).
This is the integrand of that function.
private noncomputable def homotopyOperatorIntegrand (f : Space → EuclideanSpace ℝ (Fin 3)) :
Space → ℝ → EuclideanSpace ℝ (Fin 3) := fun x t => (t • basis.repr x) ⨯ₑ₃ f (t • x)private lemma homotopyOperatorIntegrand_eq (f : Space → EuclideanSpace ℝ (Fin 3)) :
homotopyOperatorIntegrand f = fun x t => (t • basis.repr x) ⨯ₑ₃ f (t • x) := by f:Space → EuclideanSpace ℝ (Fin 3)⊢ homotopyOperatorIntegrand f = fun x t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) rfl All goals completed! 🐙@[fun_prop]
private lemma differentiable_homotopyOperatorIntegrand_space {f : Space → EuclideanSpace ℝ (Fin 3)}
(hf : Differentiable ℝ f) (t : ℝ) :
Differentiable ℝ (homotopyOperatorIntegrand f · t) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x => homotopyOperatorIntegrand f x t
simp [homotopyOperatorIntegrand] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x => t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)
refine differentiable_euclidean.mpr ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ ∀ (i : Fin 3),
Differentiable ℝ fun x => (t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i
intro i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝi:Fin 3⊢ Differentiable ℝ fun x => (t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x =>
(t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x =>
(t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x =>
(t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩)
all_goals
· «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x =>
(t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩) simp [crossProduct] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ ft:ℝ⊢ Differentiable ℝ fun x => t * (x.val 3 0 * (f (t • x)).ofLp 1 - x.val 3 1 * (f (t • x)).ofLp 0)
fun_prop All goals completed! 🐙
@[fun_prop]
private lemma homotopyOperatorIntegrand_continuous_param {f : Space → EuclideanSpace ℝ (Fin 3)}
(hf : Differentiable ℝ f) (x : Space) : Continuous (homotopyOperatorIntegrand f x ·) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Space⊢ Continuous fun x_1 => homotopyOperatorIntegrand f x x_1
simp [homotopyOperatorIntegrand] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Space⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
have hf (i : Fin 3) : Continuous (fun t => f ((t : ℝ) • x) i) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Space⊢ Continuous fun x_1 => homotopyOperatorIntegrand f x x_1 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
change Continuous (EuclideanSpace.proj i ∘ f ∘ fun t => t • x) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous (⇑(EuclideanSpace.proj i) ∘ f ∘ fun t => t • x) f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
apply Continuous.comp (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous ⇑(EuclideanSpace.proj i) f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp))
apply Continuous.comp ?_ ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous ff:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous fun t => t • x f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
· f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous f f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp) exact hf.continuous All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
· f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacei:Fin 3⊢ Continuous fun t => t • x f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp) fun_prop f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp) f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun x_1 => x_1 • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (x_1 • x)).ofLp)
refine Continuous.comp' (by f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous (WithLp.toLp 2) fun_prop All goals completed! 🐙) ?_
refine continuous_pi ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ ∀ (i : Fin 3),
Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp))) i
intro i f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp ii:Fin 3⊢ Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp))) i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp)))
((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp)))
((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp)))
((fun i => i) ⟨2, ⋯⟩)
all_goals
· «2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a =>
(a • (WithLp.equiv 2 (Fin 3 → ℝ)).toFun (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (a • x)).ofLp)))
((fun i => i) ⟨2, ⋯⟩) simp [crossProduct] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => a * (x.val 3 0 * (f (a • x)).ofLp 1 - x.val 3 1 * (f (a • x)).ofLp 0)
refine Continuous.fun_mul (by f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => a fun_prop All goals completed! 🐙) ?_
refine Continuous.sub ?_ ?_ «2».refine_1 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => x.val 3 0 * (f (a • x)).ofLp 1«2».refine_2 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => x.val 3 1 * (f (a • x)).ofLp 0
all_goals
· «2».refine_2 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => x.val 3 1 * (f (a • x)).ofLp 0 apply Continuous.mul ?_ ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => x.val 3 1f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => (f (a • x)).ofLp 0
· f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => x.val 3 1 fun_prop All goals completed! 🐙
· f:Space → EuclideanSpace ℝ (Fin 3)hf✝:Differentiable ℝ fx:Spacehf:∀ (i : Fin 3), Continuous fun t => (f (t • x)).ofLp i⊢ Continuous fun a => (f (a • x)).ofLp 0 exact hf _ All goals completed! 🐙private lemma intervalIntegrable_homotopyOperatorIntegrand {f : Space → EuclideanSpace ℝ (Fin 3)}
(hf : Differentiable ℝ f) (x : Space) :
IntervalIntegrable (homotopyOperatorIntegrand f x ·) volume (0 : ℝ) 1 :=
Continuous.intervalIntegrable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Space⊢ Continuous fun x_1 => homotopyOperatorIntegrand f x x_1 fun_prop All goals completed! 🐙) 0 1
private lemma fderiv_homotopyOperatorIntegrand_eq_fderiv_crossProduct
{f : Space → EuclideanSpace ℝ (Fin 3)}
(hf : Differentiable ℝ f) (x : Space) (t : ℝ) (y : Space) (i : Fin 3) :
fderiv ℝ (homotopyOperatorIntegrand f · t) x y i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp)
(f (t • x)).ofLp)).ofLp i) x) y := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
have cross_diff (t : ℝ) : Differentiable ℝ (fun x => WithLp.toLp 2
((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) := by
refine differentiable_euclidean.mpr ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ ∀ (i : Fin 3), Differentiable ℝ fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
intro i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei✝:Fin 3t:ℝi:Fin 3⊢ Differentiable ℝ fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ Differentiable ℝ fun x =>
(WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ Differentiable ℝ fun x =>
(WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ Differentiable ℝ fun x =>
(WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
all_goals
· «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ Differentiable ℝ fun x =>
(WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y simp [crossProduct] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet✝:ℝy:Spacei:Fin 3t:ℝ⊢ Differentiable ℝ fun x => x.val 3 0 * (f (t • x)).ofLp 1 - x.val 3 1 * (f (t • x)).ofLp 0 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
fun_prop f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
conv_lhs =>
simp [homotopyOperatorIntegrand] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)| ((fderiv ℝ (fun x => t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i
rw [fderiv_fun_smul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => t) x fun_prop All goals completed! 🐙) (Differentiable.differentiableAt (cross_diff t))]
simp f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)| t * ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i
change t • (fderiv ℝ (fun x => WithLp.toLp 2
((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y _ = _ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
trans t • ((fderiv ℝ (fun x => WithLp.toLp 2
((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp) i) x) y) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) yf:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y
· f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t • (fderiv ℝ (fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp i) x) y change _ = t • (fderiv ℝ (EuclideanSpace.proj i ∘
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)))) x) y f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t •
(fderiv ℝ (⇑(EuclideanSpace.proj i) ∘ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))
x)
y
rw [fderiv_comp f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t •
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) ∘SL
fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x)
yhg f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t •
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) ∘SL
fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x)
yhg f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ t • ((fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x) y).ofLp i =
t •
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) ∘SL
fderiv ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x)
yhg f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x
simp only [ContinuousLinearMap.fderiv, ContinuousLinearMap.coe_comp, Function.comp_apply,
PiLp.proj_apply] hg f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x
· hg f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) fun_prop All goals completed! 🐙
· hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3cross_diff:∀ (t : ℝ), Differentiable ℝ fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)⊢ DifferentiableAt ℝ (fun x => WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)) x exact Differentiable.differentiableAt (cross_diff t) All goals completed! 🐙
rfl All goals completed! 🐙
private lemma fderiv_homotopyOperatorIntegrand_apply_eq {f : Space → EuclideanSpace ℝ (Fin 3)}
(hf : Differentiable ℝ f) (x : Space) (t : ℝ) (y : Space) (i : Fin 3) :
fderiv ℝ (homotopyOperatorIntegrand f · t) x y i =
t * (x (i+1) * t * fderiv ℝ f (t • x) y (i+2) + f (t • x) (i+2) * y (i+1) -
(x (i+2) * t * fderiv ℝ f (t • x) y (i+1) + f (t • x) (i+1) * y (i+2))) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))
have fderiv_f (x : Space) (t : ℝ) (y : Space)
(i : Fin 3) : (fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * fderiv ℝ f (t • x) y i := by
change (fderiv ℝ (EuclideanSpace.proj i ∘ f ∘ fun x => t • x) x) y = _ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i) ∘ f ∘ fun x => t • x) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))
rw [fderiv_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ (f ∘ fun x => t • x) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))),
fderiv_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ f (t • x) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ (fun x => t • x) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))), fderiv_fun_smul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ (fun x => t) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ DifferentiableAt ℝ (fun x => x) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))))] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx✝:Spacet✝:ℝy✝:Spacei✝:Fin 3x:Spacet:ℝy:Spacei:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun x => t • x) x) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun x => x) x + (fderiv ℝ (fun x => t) x).smulRight x))
y =
t * ((fderiv ℝ f (t • x)) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))
simp only [Function.comp_apply, ContinuousLinearMap.fderiv, fderiv_fun_id, fderiv_fun_const,
Pi.zero_apply, ContinuousLinearMap.zero_smulRight, add_zero, ContinuousLinearMap.coe_comp,
FunLike.coe_smul, ContinuousLinearMap.coe_id', Pi.smul_apply, id_eq, map_smul,
PiLp.proj_apply, smul_eq_mul] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2))) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacei:Fin 3fderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp i =
t *
(x.val 3 (i + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 2) + (f (t • x)).ofLp (i + 2) * y.val 3 (i + 1) -
(x.val 3 (i + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp (i + 1) + (f (t • x)).ofLp (i + 1) * y.val 3 (i + 2)))
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp ((fun i => i) ⟨0, ⋯⟩) =
t *
(x.val 3 ((fun i => i) ⟨0, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨0, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨0, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨0, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨0, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨0, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨0, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨0, ⋯⟩ + 2)))«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp ((fun i => i) ⟨1, ⋯⟩) =
t *
(x.val 3 ((fun i => i) ⟨1, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨1, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨1, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨1, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨1, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨1, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨1, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨1, ⋯⟩ + 2)))«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) y).ofLp ((fun i => i) ⟨2, ⋯⟩) =
t *
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2)))
all_goals
rw [fderiv_homotopyOperatorIntegrand_eq_fderiv_crossProduct «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ t •
(fderiv ℝ
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨0, ⋯⟩)) x)
y =
t *
(x.val 3 ((fun i => i) ⟨0, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨0, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨0, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨0, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨0, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨0, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨0, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨0, ⋯⟩ + 2)))«0».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ t •
(fderiv ℝ
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩)) x)
y =
t *
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2)))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ t •
(fderiv ℝ
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨1, ⋯⟩)) x)
y =
t *
(x.val 3 ((fun i => i) ⟨1, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨1, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨1, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨1, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨1, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨1, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨1, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨1, ⋯⟩ + 2)))«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ t •
(fderiv ℝ
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩)) x)
y =
t *
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2)))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ t •
(fderiv ℝ
(fun x => (WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp)).ofLp ((fun i => i) ⟨2, ⋯⟩)) x)
y =
t *
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 2) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 1) -
(x.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2) * t * ((fderiv ℝ f (t • x)) y).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) +
(f (t • x)).ofLp ((fun i => i) ⟨2, ⋯⟩ + 1) * y.val 3 ((fun i => i) ⟨2, ⋯⟩ + 2)))«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
simp [crossProduct] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (fderiv ℝ (fun x => x.val 3 0 * (f (t • x)).ofLp 1 - x.val 3 1 * (f (t • x)).ofLp 0) x) y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
rw [fderiv_fun_sub (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => x.val 3 0 * (f (t • x)).ofLp 1) x «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => x.val 3 1 * (f (t • x)).ofLp 0) x«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f), fderiv_fun_mul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => x.val 3 0) x«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => (f (t • x)).ofLp 1) x«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f),
fderiv_fun_mul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => x.val 3 1) x«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ DifferentiableAt ℝ (fun x => (f (t • x)).ofLp 0) x«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f fun_prop All goals completed! 🐙«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f)] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 2 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 2) x -
(x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 2) x + (f (t • x)).ofLp 2 • fderiv ℝ (fun x => x.val 3 0) x))
y =
x.val 3 2 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 2 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 2 + (f (t • x)).ofLp 2 * y.val 3 0) ∨
t = 0«1».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ (x.val 3 0 • fderiv ℝ (fun x => (f (t • x)).ofLp 1) x + (f (t • x)).ofLp 1 • fderiv ℝ (fun x => x.val 3 0) x -
(x.val 3 1 • fderiv ℝ (fun x => (f (t • x)).ofLp 0) x + (f (t • x)).ofLp 0 • fderiv ℝ (fun x => x.val 3 1) x))
y =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
simp [fderiv_f] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ x.val 3 0 * (t * ((fderiv ℝ f (t • x)) y).ofLp 1) + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * (t * ((fderiv ℝ f (t • x)) y).ofLp 0) + (f (t • x)).ofLp 0 * y.val 3 1) =
x.val 3 0 * t * ((fderiv ℝ f (t • x)) y).ofLp 1 + (f (t • x)).ofLp 1 * y.val 3 0 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) y).ofLp 0 + (f (t • x)).ofLp 0 * y.val 3 1) ∨
t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
ring_nf «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ True ∨ t = 0«2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
simp only [true_or] «2».hf f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fx:Spacet:ℝy:Spacefderiv_f:∀ (x : Space) (t : ℝ) (y : Space) (i : Fin 3),
(fderiv ℝ (fun x => (f (t • x)).ofLp i) x) y = t * ((fderiv ℝ f (t • x)) y).ofLp i⊢ Differentiable ℝ f
exact hf All goals completed! 🐙
private lemma continuous_uncurry_fderiv_homotopyOperatorIntegrand
{f : Space → EuclideanSpace ℝ (Fin 3)} (hf : ContDiff ℝ 1 f) :
Continuous (Function.uncurry (fun x t => fderiv ℝ (homotopyOperatorIntegrand f · t) x)) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 f⊢ Continuous (Function.uncurry fun x t => fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x)
refine continuous_clm_apply.mpr ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 f⊢ ∀ (y : Space),
Continuous fun x => (Function.uncurry (fun x t => fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) x) y
intro y f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ Continuous fun x => (Function.uncurry (fun x t => fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) x) y
suffices h1 : Continuous ((PiLp.continuousLinearEquiv 2 ℝ _).symm ∘
(PiLp.continuousLinearEquiv 2 ℝ _) ∘
(fun p : Space × ℝ => fderiv ℝ (homotopyOperatorIntegrand f · p.2) p.1 y)) by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Spaceh1:Continuous
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ).symm ∘
⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y)⊢ Continuous fun x => (Function.uncurry (fun x t => fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) x) y f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ Continuous
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ).symm ∘
⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y)
exact h1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ Continuous
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ).symm ∘
⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ Continuous
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ).symm ∘
⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y)
apply Continuous.comp (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ Continuous ⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ).symm fun_prop All goals completed! 🐙) ?_
apply continuous_pi f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Space⊢ ∀ (i : Fin 3),
Continuous fun a =>
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y)
a i
intro i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Spacei:Fin 3⊢ Continuous fun a =>
(⇑(PiLp.continuousLinearEquiv 2 ℝ fun x => ℝ) ∘ fun p =>
(fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y)
a i
change Continuous (fun p : Space × ℝ => fderiv ℝ (homotopyOperatorIntegrand f · p.2) p.1 y i) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Spacei:Fin 3⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp i
have hf := hf.differentiable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fy:Spacei:Fin 3⊢ 1 ≠ 0 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacei:Fin 3hf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp i simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacei:Fin 3hf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp i) f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacei:Fin 3hf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacehf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacehf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacehf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp ((fun i => i) ⟨2, ⋯⟩)
all_goals
· «2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacehf:Differentiable ℝ f⊢ Continuous fun p => ((fderiv ℝ (fun x => homotopyOperatorIntegrand f x p.2) p.1) y).ofLp ((fun i => i) ⟨2, ⋯⟩) simp [fderiv_homotopyOperatorIntegrand_apply_eq hf] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf✝:ContDiff ℝ 1 fy:Spacehf:Differentiable ℝ f⊢ Continuous fun p =>
p.2 *
(p.1.val 3 0 * p.2 * ((fderiv ℝ f (p.2 • p.1)) y).ofLp 1 + (f (p.2 • p.1)).ofLp 1 * y.val 3 0 -
(p.1.val 3 1 * p.2 * ((fderiv ℝ f (p.2 • p.1)) y).ofLp 0 + (f (p.2 • p.1)).ofLp 0 * y.val 3 1))
fun_prop All goals completed! 🐙
private lemma hasFDerivAt_intervalIntegral_homotopyOperatorIntegrand
{f : Space → EuclideanSpace ℝ (Fin 3)} (hf : ContDiff ℝ 1 f) (x₀ : Space) :
HasFDerivAt (fun (x : Space) => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t ∂(volume))
(∫ (t : ℝ) in 0..1, fderiv ℝ (homotopyOperatorIntegrand f · t) x₀ ∂(volume)) x₀ := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:Space⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
let F : Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand f⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
let F' : Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (F · t) x f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) x⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
let s (x₀) : Set (Space) := Metric.closedBall x₀ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
obtain ⟨a, ha⟩ := IsCompact.exists_isMaxOn (s := s x₀ ×ˢ Set.Icc (0 : ℝ) (1 : ℝ))
(by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ IsCompact (s x₀ ×ˢ Set.Icc 0 1) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀ exact (isCompact_closedBall x₀ 1).prod <|
ConditionallyCompleteLinearOrder.isCompact_Icc 0 1 All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀)
(f := fun (a : Space × ℝ) => ‖F' a.1 a.2‖)
(by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ (s x₀ ×ˢ Set.Icc 0 1).Nonempty f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀ simp [s] All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀)
(by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ ContinuousOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
apply (Continuous.comp ?_
(continuous_uncurry_fderiv_homotopyOperatorIntegrand hf)).continuousOn f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ Continuous norm f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
change Continuous (@norm _ ContinuousLinearMap.toSeminormedAddCommGroup.toNorm) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1⊢ Continuous norm f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t)
(∫ (t : ℝ) in 0..1, fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) x₀
change HasFDerivAt (fun (x : Space) => ∫ (t : ℝ) in 0..1, F x t ∂(volume))
(∫ (t : ℝ) in 0..1, F' x₀ t ∂(volume)) x₀ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀
apply intervalIntegral.hasFDerivAt_integral_of_dominated_of_fderiv_le (s := s x₀)
(bound := fun t => ‖F' a.1 a.2‖) hs f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ s x₀ ∈ nhds x₀hF_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᶠ (x : Space) in nhds x₀, AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1))hF_int f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (F x₀) volume 0 1hF'_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ AEStronglyMeasurable (F' x₀) (volume.restrict (Set.uIoc 0 1))h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖bound_integrable f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (fun t => ‖F' a.1 a.2‖) volume 0 1h_diff f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x
· hs f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ s x₀ ∈ nhds x₀ exact Metric.closedBall_mem_nhds x₀ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ 0 < 1 simp All goals completed! 🐙)
· hF_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᶠ (x : Space) in nhds x₀, AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1)) filter_upwards with x hF_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ax:Space⊢ AEStronglyMeasurable (F x) (volume.restrict (Set.uIoc 0 1))
simp [F, homotopyOperatorIntegrand_eq] hF_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) ax:Space⊢ AEStronglyMeasurable (fun t => t • WithLp.toLp 2 ((crossProduct (basis.repr x).ofLp) (f (t • x)).ofLp))
(volume.restrict (Set.Ioc 0 1))
fun_prop All goals completed! 🐙
· hF_int f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (F x₀) volume 0 1 exact intervalIntegrable_homotopyOperatorIntegrand (hf.differentiable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ 1 ≠ 0 simp All goals completed! 🐙)) x₀
· hF'_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ AEStronglyMeasurable (F' x₀) (volume.restrict (Set.uIoc 0 1)) refine IntervalIntegrable.aestronglyMeasurable' ?_ hF'_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (F' x₀) volume (max 0 1) (min 0 1)
simp only [zero_le_one, sup_of_le_right, inf_of_le_left] hF'_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (F' x₀) volume 1 0
apply Continuous.intervalIntegrable hF'_meas f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ Continuous (F' x₀)
exact Continuous.uncurry_left x₀ (continuous_uncurry_fderiv_homotopyOperatorIntegrand hf) All goals completed! 🐙
· h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖ filter_upwards with t h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝ⊢ t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, ‖F' x t‖ ≤ ‖F' a.1 a.2‖
intro h x hx h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖
have hx2 := ha.2 h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀hx2:IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖
rw [isMaxOn_iff h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀hx2:∀ x ∈ s x₀ ×ˢ Set.Icc 0 1, ‖F' x.1 x.2‖ ≤ ‖F' a.1 a.2‖⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖ h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀hx2:∀ x ∈ s x₀ ×ˢ Set.Icc 0 1, ‖F' x.1 x.2‖ ≤ ‖F' a.1 a.2‖⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖] at hx2h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀hx2:∀ x ∈ s x₀ ×ˢ Set.Icc 0 1, ‖F' x.1 x.2‖ ≤ ‖F' a.1 a.2‖⊢ ‖F' x t‖ ≤ ‖F' a.1 a.2‖
apply hx2 (x, t) h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀hx2:∀ x ∈ s x₀ ×ˢ Set.Icc 0 1, ‖F' x.1 x.2‖ ≤ ‖F' a.1 a.2‖⊢ (x, t) ∈ s x₀ ×ˢ Set.Icc 0 1
simp at h h_bound f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝx:Spacehx:x ∈ s x₀hx2:∀ x ∈ s x₀ ×ˢ Set.Icc 0 1, ‖F' x.1 x.2‖ ≤ ‖F' a.1 a.2‖h:0 < t ∧ t ≤ 1⊢ (x, t) ∈ s x₀ ×ˢ Set.Icc 0 1
grind All goals completed! 🐙
· bound_integrable f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ IntervalIntegrable (fun t => ‖F' a.1 a.2‖) volume 0 1 apply Continuous.intervalIntegrable bound_integrable f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ Continuous fun t => ‖F' a.1 a.2‖
fun_prop All goals completed! 🐙
· h_diff f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) a⊢ ∀ᵐ (t : ℝ), t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x filter_upwards with t h_diff f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝ⊢ t ∈ Set.uIoc 0 1 → ∀ x ∈ s x₀, HasFDerivAt (fun x => F x t) (F' x t) x
intro h x hx h_diff f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀⊢ HasFDerivAt (fun x => F x t) (F' x t) x
dsimp [F', F] h_diff f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀⊢ HasFDerivAt (fun x => homotopyOperatorIntegrand f x t) (fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) x
apply (differentiable_homotopyOperatorIntegrand_space _ _).differentiableAt.hasFDerivAt f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀⊢ Differentiable ℝ f
exact hf.differentiable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fx₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xs:Space → Set Space := fun x₀ => Metric.closedBall x₀ 1a:Space × ℝha:a ∈ s x₀ ×ˢ Set.Icc 0 1 ∧ IsMaxOn (fun a => ‖F' a.1 a.2‖) (s x₀ ×ˢ Set.Icc 0 1) at:ℝh:t ∈ Set.uIoc 0 1x:Spacehx:x ∈ s x₀⊢ 1 ≠ 0 simp All goals completed! 🐙)
private lemma deriv_intervalIntegral_homotopyOperatorIntegrand_sub
(f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 1 f) (i j k m : Fin 3) (x₀ : Space) :
∂[i] (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t ∂(volume)) k) x₀
- ∂[j] (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t ∂(volume)) m) x₀ =
∫ (t : ℝ) in 0..1, (fderiv ℝ (homotopyOperatorIntegrand f · t) x₀ (basis i) k -
fderiv ℝ (homotopyOperatorIntegrand f · t) x₀ (basis j) m) ∂(volume) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:Space⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
let F : Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand f⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
let F' : Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (F · t) x f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) x⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
have F'_continuous : Continuous (Function.uncurry F') := by
exact continuous_uncurry_fderiv_homotopyOperatorIntegrand (hf) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
have hfderiv (x₀ : Space) : HasFDerivAt (fun (x : Space) => ∫ (t : ℝ) in 0..1, F x t ∂(volume))
(∫ (t : ℝ) in 0..1, F' x₀ t ∂(volume)) x₀ := by
exact hasFDerivAt_intervalIntegral_homotopyOperatorIntegrand (hf) x₀ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
have F'_apply_apply (x₀ : Space) (y : Space) (i : Fin 3) :
((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i =
(∫ (t : ℝ) in 0..1, F' x₀ t y i) := by
trans ((∫ (t : ℝ) in 0..1, F' x₀ t y)).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = (∫ (t : ℝ) in 0..1, (F' x₀ t) y).ofLp if:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (t : ℝ) in 0..1, (F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
· f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = (∫ (t : ℝ) in 0..1, (F' x₀ t) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m rw [ContinuousLinearMap.intervalIntegral_apply f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in 0..1, (F' x₀ x) y).ofLp i = (∫ (t : ℝ) in 0..1, (F' x₀ t) y).ofLp ihφ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ IntervalIntegrable (F' x₀) volume 0 1 hφ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ IntervalIntegrable (F' x₀) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m]hφ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ IntervalIntegrable (F' x₀) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
apply Continuous.intervalIntegrable hφ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ Continuous (F' x₀) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
· f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (t : ℝ) in 0..1, (F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m rw [intervalIntegral.integral_of_le (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in Set.Ioc 0 1, (F' x₀ x) y ∂volume).ofLp i = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in Set.Ioc 0 1, (F' x₀ x) y ∂volume).ofLp i = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m), intervalIntegral.integral_of_le (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in Set.Ioc 0 1, (F' x₀ x) y ∂volume).ofLp i = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in Set.Ioc 0 1, (F' x₀ x) y ∂volume).ofLp i = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m)] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ (∫ (x : ℝ) in Set.Ioc 0 1, (F' x₀ x) y ∂volume).ofLp i = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
rw [MeasureTheory.eval_integral_piLp f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volume = ∫ (x : ℝ) in Set.Ioc 0 1, ((F' x₀ x) y).ofLp i ∂volumehf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ∀ (i : Fin 3), Integrable (fun x => ((F' x₀ x) y).ofLp i) (volume.restrict (Set.Ioc 0 1)) hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ∀ (i : Fin 3), Integrable (fun x => ((F' x₀ x) y).ofLp i) (volume.restrict (Set.Ioc 0 1)) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m]hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei:Fin 3⊢ ∀ (i : Fin 3), Integrable (fun x => ((F' x₀ x) y).ofLp i) (volume.restrict (Set.Ioc 0 1)) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
intro i hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ Integrable (fun x => ((F' x₀ x) y).ofLp i) (volume.restrict (Set.Ioc 0 1)) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
apply MeasureTheory.IntegrableOn.integrable hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ IntegrableOn (fun x => ((F' x₀ x) y).ofLp i) (Set.Ioc 0 1) volume f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
rw [← intervalIntegrable_iff_integrableOn_Ioc_of_le hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ IntervalIntegrable (fun x => ((F' x₀ x) y).ofLp i) volume 0 1hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ 0 ≤ 1 hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ IntervalIntegrable (fun x => ((F' x₀ x) y).ofLp i) volume 0 1hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m]hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ IntervalIntegrable (fun x => ((F' x₀ x) y).ofLp i) volume 0 1hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
apply Continuous.intervalIntegrable hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ Continuous fun x => ((F' x₀ x) y).ofLp ihf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
fun_prop hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi✝¹:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀✝:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀x₀:Spacey:Spacei✝:Fin 3i:Fin 3⊢ 0 ≤ 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
simp f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ deriv i (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp k) x₀ -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
repeat rw [Space.deriv_euclid, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ (deriv i (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x₀).ofLp k -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t Space.deriv, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((fderiv ℝ (fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t (hfderiv x₀).fderiv f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k -
deriv j (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp m) x₀ =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t
rotate_left hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x thf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x tf:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis i)).ofLp k - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m
· hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t exact fun x => (hfderiv x).differentiableAt All goals completed! 🐙
· hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t exact fun x => (hfderiv x).differentiableAt All goals completed! 🐙
rw [F'_apply_apply, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ (∫ (t : ℝ) in 0..1, ((F' x₀ t) (basis i)).ofLp k) - ((∫ (t : ℝ) in 0..1, F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp m hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1 F'_apply_apply, f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ (∫ (t : ℝ) in 0..1, ((F' x₀ t) (basis i)).ofLp k) - ∫ (t : ℝ) in 0..1, ((F' x₀ t) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1 ← intervalIntegral.integral_sub f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ ∫ (x : ℝ) in 0..1, ((F' x₀ x) (basis i)).ofLp k - ((F' x₀ x) (basis j)).ofLp m =
∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis i)).ofLp k -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x₀) (basis j)).ofLp mhf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1]hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1
· hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis i)).ofLp k) volume 0 1 apply Continuous.intervalIntegrable hf f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Continuous fun t => ((F' x₀ t) (basis i)).ofLp k
fun_prop All goals completed! 🐙
· hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ IntervalIntegrable (fun t => ((F' x₀ t) (basis j)).ofLp m) volume 0 1 apply Continuous.intervalIntegrable hg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fi:Fin 3j:Fin 3k:Fin 3m:Fin 3x₀:SpaceF:Space → ℝ → EuclideanSpace ℝ (Fin 3) := homotopyOperatorIntegrand fF':Space → ℝ → Space →L[ℝ] EuclideanSpace ℝ (Fin 3) := fun x t => fderiv ℝ (fun x => F x t) xF'_continuous:Continuous (Function.uncurry F')hfderiv:∀ (x₀ : Space), HasFDerivAt (fun x => ∫ (t : ℝ) in 0..1, F x t) (∫ (t : ℝ) in 0..1, F' x₀ t) x₀F'_apply_apply:∀ (x₀ y : Space) (i : Fin 3), ((∫ (t : ℝ) in 0..1, F' x₀ t) y).ofLp i = ∫ (t : ℝ) in 0..1, ((F' x₀ t) y).ofLp i⊢ Continuous fun t => ((F' x₀ t) (basis j)).ofLp m
fun_prop All goals completed! 🐙
lemma eq_neg_curl_of_div_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 1 f)
(hdiv : ∇ ⬝ f = 0) :
f = - curl (fun x => ∫ (t : ℝ) in 0..1, (t • basis.repr x) ⨯ₑ₃ f (t • x) ∂(volume)) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
have f_differentiable : Differentiable ℝ f := hf.differentiable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ 1 ≠ 0 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ f⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ f⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ f⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
have fderiv_f_t (x : Space) (t : ℝ)
(i : Fin 3) : (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = fderiv ℝ f (t • x) x i := by
change (fderiv ℝ (EuclideanSpace.proj i ∘ f ∘ fun (t : ℝ) => t • x) t) 1 = _ f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i) ∘ f ∘ fun t => t • x) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
rw [fderiv_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ (f ∘ fun t => t • x) t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))), fderiv_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ f (t • x) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ (fun t => t • x) t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))),
fderiv_fun_smul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ (fun t => t) t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ DifferentiableAt ℝ (fun t => x) t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)))] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ fx:Spacet:ℝi:Fin 3⊢ (fderiv ℝ (⇑(EuclideanSpace.proj i)) ((f ∘ fun t => t • x) t) ∘SL
fderiv ℝ f (t • x) ∘SL (t • fderiv ℝ (fun t => x) t + (fderiv ℝ (fun t => t) t).smulRight x))
1 =
((fderiv ℝ f (t • x)) x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
simp only [Function.comp_apply, ContinuousLinearMap.fderiv, fderiv_fun_const, Pi.zero_apply,
fderiv_fun_id, ContinuousLinearMap.coe_comp, _root_.add_apply,
FunLike.coe_smul, Pi.smul_apply, _root_.zero_apply, smul_zero,
ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.coe_id', id_eq, one_smul, zero_add,
PiLp.proj_apply] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
have hi (x : Space) (i : Fin 3) : ∫ (t : ℝ) in 0..1, (t * f (t • x) i * 2) -
t * (- fderiv ℝ f (t • x) (t • x)) i ∂(volume) = f x i := by
trans ∫ (t : ℝ) in 0..1, fderiv ℝ (fun t => t ^ 2 * f (t • x) i) t 1 ∂(volume) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ ∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
∫ (t : ℝ) in 0..1, (fderiv ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) t) 1f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ ∫ (t : ℝ) in 0..1, (fderiv ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) t) 1 = (f x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
· f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ ∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
∫ (t : ℝ) in 0..1, (fderiv ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) congr e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ (fun t => t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i) = fun t =>
(fderiv ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
funext t e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(fderiv ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
rw [fderiv_fun_mul (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ DifferentiableAt ℝ (fun t => t ^ 2) t e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(t ^ 2 • fderiv ℝ (fun t => (f (t • x)).ofLp i) t + (f (t • x)).ofLp i • fderiv ℝ (fun t => t ^ 2) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(t ^ 2 • fderiv ℝ (fun t => (f (t • x)).ofLp i) t + (f (t • x)).ofLp i • fderiv ℝ (fun t => t ^ 2) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ DifferentiableAt ℝ (fun t => (f (t • x)).ofLp i) te_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(t ^ 2 • fderiv ℝ (fun t => (f (t • x)).ofLp i) t + (f (t • x)).ofLp i • fderiv ℝ (fun t => t ^ 2) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(t ^ 2 • fderiv ℝ (fun t => (f (t • x)).ofLp i) t + (f (t • x)).ofLp i • fderiv ℝ (fun t => t ^ 2) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)))]e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i =
(t ^ 2 • fderiv ℝ (fun t => (f (t • x)).ofLp i) t + (f (t • x)).ofLp i • fderiv ℝ (fun t => t ^ 2) t) 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
simp [fderiv_f_t] e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3t:ℝ⊢ t * (f (t • x)).ofLp i * 2 + t * (t * ((fderiv ℝ f (t • x)) x).ofLp i) =
t ^ 2 * ((fderiv ℝ f (t • x)) x).ofLp i + (f (t • x)).ofLp i * (2 * t) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
ring All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
simp only [fderiv_eq_smul_deriv, smul_eq_mul, one_mul] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ ∫ (t : ℝ) in 0..1, _root_.deriv (fun t => t ^ 2 * (f (t • x)).ofLp i) t = (f x).ofLp i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
rw [intervalIntegral.integral_deriv_eq_sub (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ ∀ x_1 ∈ Set.uIcc 0 1, DifferentiableAt ℝ (fun t => t ^ 2 * (f (t • x)).ofLp i) x_1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ 1 ^ 2 * (f (1 • x)).ofLp i - 0 ^ 2 * (f (0 • x)).ofLp i = (f x).ofLp if:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ IntervalIntegrable (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) fun_prop All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ 1 ^ 2 * (f (1 • x)).ofLp i - 0 ^ 2 * (f (0 • x)).ofLp i = (f x).ofLp if:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ IntervalIntegrable (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)))] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ 1 ^ 2 * (f (1 • x)).ofLp i - 0 ^ 2 * (f (0 • x)).ofLp i = (f x).ofLp if:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ IntervalIntegrable (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
simp only [one_pow, one_smul, one_mul, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, zero_pow,
zero_smul, zero_mul, sub_zero] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ IntervalIntegrable (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
· f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ IntervalIntegrable (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) volume 0 1 f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) apply Continuous.intervalIntegrable f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ix:Spacei:Fin 3⊢ Continuous (_root_.deriv fun t => t ^ 2 * (f (t • x)).ofLp i) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
fun_prop f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x))
change f = -curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp i⊢ f = -curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t
ext x i f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacei:Fin 3⊢ (f x).ofLp i = ((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨0, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨1, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨2, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨2, ⋯⟩) <;> «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨0, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨1, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (f x).ofLp ((fun i => i) ⟨2, ⋯⟩) =
((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨2, ⋯⟩) symm «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ((-curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) x).ofLp ((fun i => i) ⟨2, ⋯⟩) =
(f x).ofLp ((fun i => i) ⟨2, ⋯⟩)
all_goals
simp [curl] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ deriv 1 (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp 0) x -
deriv 0 (fun x => (∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t).ofLp 1) x =
(f x).ofLp 2
rw [deriv_intervalIntegral_homotopyOperatorIntegrand_sub _ hf «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 2)).ofLp 1 -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 1)).ofLp 2 =
(f x).ofLp 0 «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 1)).ofLp 0 -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 0)).ofLp 1 =
(f x).ofLp 2] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 0)).ofLp 2 -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 2)).ofLp 0 =
(f x).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 1)).ofLp 0 -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 0)).ofLp 1 =
(f x).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 1)).ofLp 0 -
((fderiv ℝ (fun x => homotopyOperatorIntegrand f x t) x) (basis 0)).ofLp 1 =
(f x).ofLp 2
simp [fderiv_homotopyOperatorIntegrand_apply_eq (hf.differentiable (by simp)), basis_apply] «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
(f x).ofLp 2
rw [← hi «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 0 + (f (t • x)).ofLp 0 -
x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2) -
t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 0 + (f (t • x)).ofLp 0)) =
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp 0 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 0 «2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2] «1» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1 + (f (t • x)).ofLp 1 -
x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0) -
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 -
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1 + (f (t • x)).ofLp 1)) =
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp 1 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 1«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ ∫ (t : ℝ) in 0..1,
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
congr «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Space⊢ (fun t =>
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2))) =
fun t => t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
funext t «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝ⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
have hdiv : div f (t • x) = 0 := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ f =
-curl fun x =>
∫ (t : ℝ) in 0..1,
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(t • basis.repr x) (f (t • x)) «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:div f (t • x) = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2 simp [hdiv]«2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:div f (t • x) = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2«2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:div f (t • x) = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
rw [div_eq_sum_fderiv _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:div f (t • x) = 0⊢ Differentiable ℝ f «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:∑ i, ((fderiv ℝ f (t • x)) (basis i)).ofLp i = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2 fun_prop All goals completed! 🐙«2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:∑ i, ((fderiv ℝ f (t • x)) (basis i)).ofLp i = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2)] «1».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:∑ i, ((fderiv ℝ f (t • x)) (basis i)).ofLp i = 0⊢ t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1 + (f (t • x)).ofLp 1 -
x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0) -
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 -
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1 + (f (t • x)).ofLp 1)) =
t * (f (t • x)).ofLp 1 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 1«2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:∑ i, ((fderiv ℝ f (t • x)) (basis i)).ofLp i = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2 at hdiv«2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:∑ i, ((fderiv ℝ f (t • x)) (basis i)).ofLp i = 0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
simp [Fin.sum_univ_three] at hdiv «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
have hx : x = ∑ i, basis.repr x i • basis i :=
Eq.symm (OrthonormalBasis.sum_repr basis x) «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp 2
conv_rhs =>
enter [2, 2,1, 1, 2] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i| t • x
rw [hx] f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i| t • ∑ i, (basis.repr x).ofLp i • basis i
· «0».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 0 + (f (t • x)).ofLp 0 -
x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2) -
t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 0 + (f (t • x)).ofLp 0)) =
t * (f (t • x)).ofLp 0 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 0 linear_combination (norm := { a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 0 + (f (t • x)).ofLp 0 -
x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2) -
t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 0 + (f (t • x)).ofLp 0)) +
-t ^ 2 * x.val 3 0 * 0 -
(t * (f (t • x)).ofLp 0 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 0 +
-t ^ 2 * x.val 3 0 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2)) =
0simp [Fin.sum_univ_three] a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 0 + (f (t • x)).ofLp 0 -
x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2) -
t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 -
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 0 + (f (t • x)).ofLp 0)) -
(t * (f (t • x)).ofLp 0 * 2 -
t *
(-(t * (x.val 3 2 * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 0)) +
(-(t * (x.val 3 1 * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 0)) +
-(t * (x.val 3 0 * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0)))) +
-(t ^ 2 * x.val 3 0 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2))) =
0; ring All goals completed! 🐙}) - t ^ 2 * x 0 * hdiv
· «1».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1 + (f (t • x)).ofLp 1 -
x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0) -
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 -
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1 + (f (t • x)).ofLp 1)) =
t * (f (t • x)).ofLp 1 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 1 linear_combination (norm := { a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1 + (f (t • x)).ofLp 1 -
x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0) -
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 -
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1 + (f (t • x)).ofLp 1)) +
-t ^ 2 * x.val 3 1 * 0 -
(t * (f (t • x)).ofLp 1 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 1 +
-t ^ 2 * x.val 3 1 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2)) =
0simp [Fin.sum_univ_three] a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1 + (f (t • x)).ofLp 1 -
x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0) -
t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 -
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1 + (f (t • x)).ofLp 1)) -
(t * (f (t • x)).ofLp 1 * 2 -
t *
(-(t * (x.val 3 2 * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 1)) +
(-(t * (x.val 3 1 * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1)) +
-(t * (x.val 3 0 * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 1)))) +
-(t ^ 2 * x.val 3 1 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2))) =
0; ring All goals completed! 🐙}) - t ^ 2 * x 1 * hdiv
· «2».e_f f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) =
t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 2 linear_combination (norm := { a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) +
-t ^ 2 * x.val 3 2 * 0 -
(t * (f (t • x)).ofLp 2 * 2 - t * (-(fderiv ℝ f (t • x)) (t • ∑ i, (basis.repr x).ofLp i • basis i)).ofLp 2 +
-t ^ 2 * x.val 3 2 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2)) =
0simp [Fin.sum_univ_three] a f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv✝:div f = 0f_differentiable:Differentiable ℝ ffderiv_f_t:∀ (x : Space) (t : ℝ) (i : Fin 3), (fderiv ℝ (fun t => (f (t • x)).ofLp i) t) 1 = ((fderiv ℝ f (t • x)) x).ofLp ihi:∀ (x : Space) (i : Fin 3),
∫ (t : ℝ) in 0..1, t * (f (t • x)).ofLp i * 2 - t * (-(fderiv ℝ f (t • x)) (t • x)).ofLp i = (f x).ofLp ix:Spacet:ℝhdiv:((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2 =
0hx:x = ∑ i, (basis.repr x).ofLp i • basis i⊢ t *
(x.val 3 1 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2 + (f (t • x)).ofLp 2 -
x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1) -
t *
(x.val 3 2 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 -
(x.val 3 0 * t * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2 + (f (t • x)).ofLp 2)) -
(t * (f (t • x)).ofLp 2 * 2 -
t *
(-(t * (x.val 3 2 * ((fderiv ℝ f (t • x)) (basis 2)).ofLp 2)) +
(-(t * (x.val 3 1 * ((fderiv ℝ f (t • x)) (basis 1)).ofLp 2)) +
-(t * (x.val 3 0 * ((fderiv ℝ f (t • x)) (basis 0)).ofLp 2)))) +
-(t ^ 2 * x.val 3 2 *
(((fderiv ℝ f (t • x)) (basis 0)).ofLp 0 + ((fderiv ℝ f (t • x)) (basis 1)).ofLp 1 +
((fderiv ℝ f (t • x)) (basis 2)).ofLp 2))) =
0; ring All goals completed! 🐙}) - t ^ 2 * x 2 * hdiv
lemma exists_curl_of_div_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 1 f)
(hdiv : ∇ ⬝ f = 0) :
∃ g : Space → EuclideanSpace ℝ (Fin 3), f = curl g ∧ Differentiable ℝ g := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = curl g ∧ Differentiable ℝ g
suffices hneg : ∃ g: Space → EuclideanSpace ℝ (Fin 3), f = - curl g ∧ Differentiable ℝ g by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0hneg:∃ g, f = -curl g ∧ Differentiable ℝ g⊢ ∃ g, f = curl g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
obtain ⟨g, hcurl, hdifferentiable⟩ := hneg f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0g:Space → EuclideanSpace ℝ (Fin 3)hcurl:f = -curl ghdifferentiable:Differentiable ℝ g⊢ ∃ g, f = curl g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
use -g h f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0g:Space → EuclideanSpace ℝ (Fin 3)hcurl:f = -curl ghdifferentiable:Differentiable ℝ g⊢ f = curl (-g) ∧ Differentiable ℝ (-g) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
subst f h g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ -curl g = curl (-g) ∧ Differentiable ℝ (-g) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
simp_all h g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ -curl g = curl (-g) f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
rw [curl_neg h g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ -curl g = -curl gh.hf g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ Differentiable ℝ g h.hf g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g]h.hf g:Space → EuclideanSpace ℝ (Fin 3)hdifferentiable:Differentiable ℝ ghf:ContDiff ℝ 1 (-curl g)hdiv:div (-curl g) = 0⊢ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
fun_prop f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ ∃ g, f = -curl g ∧ Differentiable ℝ g
use fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t ∂(volume) h f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhdiv:div f = 0⊢ (f = -curl fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t) ∧
Differentiable ℝ fun x => ∫ (t : ℝ) in 0..1, homotopyOperatorIntegrand f x t
exact ⟨eq_neg_curl_of_div_zero f hf hdiv,
fun x => (hasFDerivAt_intervalIntegral_homotopyOperatorIntegrand hf x).differentiableAt⟩ All goals completed! 🐙TODO "Generalize the statement that a div-free field is a curl
to time-dependent fields."### A.10. A curl-free field is a gradient
We show that if the curl of a function is zero, then it is equal to the gradient of some function.
The key lemma here is
Convex.exists_forall_hasFDerivAt_of_fderiv_symmetric, which is
a more general version of this result in Mathlib. We turn this here into something
more familiar, to the physicists via deriv_comm_of_curl_zero.
lemma deriv_comm_of_curl_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : Differentiable ℝ f)
(hcurl : curl f = 0) (x : Space) (i j : Fin 3) :
∂[i] f x j = ∂[j] f x i := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacei:Fin 3j:Fin 3⊢ (deriv i f x).ofLp j = (deriv j f x).ofLp i
fin_cases i «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨0, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨1, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨2, ⋯⟩) <;> «0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨0, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨1, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacej:Fin 3⊢ (deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp j = (deriv j f x).ofLp ((fun i => i) ⟨2, ⋯⟩) fin_cases j «2».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ (deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp ((fun i => i) ⟨0, ⋯⟩) =
(deriv ((fun i => i) ⟨0, ⋯⟩) f x).ofLp ((fun i => i) ⟨2, ⋯⟩)«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ (deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp ((fun i => i) ⟨1, ⋯⟩) =
(deriv ((fun i => i) ⟨1, ⋯⟩) f x).ofLp ((fun i => i) ⟨2, ⋯⟩)«2».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ (deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp ((fun i => i) ⟨2, ⋯⟩) =
(deriv ((fun i => i) ⟨2, ⋯⟩) f x).ofLp ((fun i => i) ⟨2, ⋯⟩)
any_goals rfl All goals completed! 🐙
all_goals
simp only [Fin.reduceFinMk, Fin.isValue, Fin.zero_eta] «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ (deriv 2 f x).ofLp 1 = (deriv 1 f x).ofLp 2
rw [← deriv_euclid (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ Differentiable ℝ f «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x fun_prop All goals completed! 🐙 «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x), ← deriv_euclid (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ Differentiable ℝ f«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x fun_prop All goals completed! 🐙«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x)] «2».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 2) x«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Space⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x
have hcurl' (i : Fin 3) : curl f x i = 0 := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacei:Fin 3j:Fin 3⊢ (deriv i f x).ofLp j = (deriv j f x).ofLp i «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x simp [hcurl]«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x«2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x
· «0».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 0 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 0) x specialize hcurl' 2 «0».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 2 = 0⊢ deriv 0 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 0) x
simp [curl] at hcurl' «0».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 0 (fun x => (f x).ofLp 1) x - deriv 1 (fun x => (f x).ofLp 0) x = 0⊢ deriv 0 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 0) x
linear_combination (norm := ring_nf All goals completed! 🐙) hcurl'
· «0».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 0 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 0) x specialize hcurl' 1 «0».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 1 = 0⊢ deriv 0 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 0) x
simp [curl] at hcurl' «0».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x = 0⊢ deriv 0 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 0) x
linear_combination (norm := ring_nf All goals completed! 🐙) -hcurl'
· «1».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 1 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 1) x specialize hcurl' 2 «1».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 2 = 0⊢ deriv 1 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 1) x
simp [curl] at hcurl' «1».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 0 (fun x => (f x).ofLp 1) x - deriv 1 (fun x => (f x).ofLp 0) x = 0⊢ deriv 1 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 1) x
linear_combination (norm := ring_nf All goals completed! 🐙) -hcurl'
· «1».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 1 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 1) x specialize hcurl' 0 «1».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 0 = 0⊢ deriv 1 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 1) x
simp [curl] at hcurl' «1».«2» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 1 (fun x => (f x).ofLp 2) x - deriv 2 (fun x => (f x).ofLp 1) x = 0⊢ deriv 1 (fun x => (f x).ofLp 2) x = deriv 2 (fun x => (f x).ofLp 1) x
linear_combination (norm := ring_nf All goals completed! 🐙) hcurl'
· «2».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 2 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 2) x specialize hcurl' 1 «2».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 1 = 0⊢ deriv 2 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 2) x
simp [curl] at hcurl' «2».«0» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 2 (fun x => (f x).ofLp 0) x - deriv 0 (fun x => (f x).ofLp 2) x = 0⊢ deriv 2 (fun x => (f x).ofLp 0) x = deriv 0 (fun x => (f x).ofLp 2) x
linear_combination (norm := ring_nf All goals completed! 🐙) hcurl'
· «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':∀ (i : Fin 3), (curl f x).ofLp i = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x specialize hcurl' 0 «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':(curl f x).ofLp 0 = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x
simp [curl] at hcurl' «2».«1» f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0x:Spacehcurl':deriv 1 (fun x => (f x).ofLp 2) x - deriv 2 (fun x => (f x).ofLp 1) x = 0⊢ deriv 2 (fun x => (f x).ofLp 1) x = deriv 1 (fun x => (f x).ofLp 2) x
linear_combination (norm := ring_nf All goals completed! 🐙) -hcurl'
lemma exists_grad_of_curl_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : Differentiable ℝ f)
(hcurl : curl f = 0) : ∃ g : Space → ℝ, f = grad g ∧ Differentiable ℝ g := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
let s : Set (Space) := Set.univ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
have hs : Convex ℝ s := convex_univ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
have hso : IsOpen s := isOpen_univ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
let ω : Space → Space →L[ℝ] ℝ:= fun a => InnerProductSpace.toDual ℝ _ (basis.repr.symm (f a)) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
have hω : DifferentiableOn ℝ ω s := by
simp [ω] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))⊢ DifferentiableOn ℝ (fun a => (toDual ℝ Space) (basis.repr.symm (f a))) s f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
refine differentiableOn_univ.mpr ?_ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))⊢ Differentiable ℝ fun a => (toDual ℝ Space) (basis.repr.symm (f a)) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
apply (InnerProductSpace.toDual ℝ (Space)).differentiable.fun_comp f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))⊢ Differentiable ℝ fun x => basis.repr.symm (f x) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
fun_prop f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω s⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
have hω_fderiv (a x y : Space) : fderiv ℝ ω a x y =
⟪(basis.repr.symm (fderiv ℝ f a x)), y⟫_ℝ:= by
calc _
_ = (fderiv ℝ (InnerProductSpace.toDual ℝ _ ∘
fun a => (basis.repr.symm (f a))) a x) y := by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ ω a) x) y = ((fderiv ℝ (⇑(toDual ℝ Space) ∘ fun a => basis.repr.symm (f a)) a) x) y f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g rfl All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rw [fderiv_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ DifferentiableAt ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y =
⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g exact
(InnerProductSpace.toDual ℝ (Space)).differentiable.differentiableAt All goals completed! 🐙calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y =
⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ DifferentiableAt ℝ (fun a => basis.repr.symm (f a)) acalc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y =
⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g fun_prop All goals completed! 🐙calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y =
⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g)]calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((fderiv ℝ (⇑(toDual ℝ Space)) (basis.repr.symm (f a)) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y =
⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
erw [(InnerProductSpace.toDual ℝ (Space)).fderiv calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((↑↑(toDual ℝ Space) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g] calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((↑↑(toDual ℝ Space) ∘SL fderiv ℝ (fun a => basis.repr.symm (f a)) a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
simp only [ContinuousLinearMap.coe_comp, ContinuousLinearEquiv.coe_coe,
LinearIsometryEquiv.coe_toContinuousLinearEquiv, Function.comp_apply] calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ((toDual ℝ Space) ((fderiv ℝ (fun a => basis.repr.symm (f a)) a) x)) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
erw [InnerProductSpace.toDual_apply_apply calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (fun a => basis.repr.symm (f a)) a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g] calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (fun a => basis.repr.symm (f a)) a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rw [fderiv_fun_comp _ (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ DifferentiableAt ℝ (⇑basis.repr.symm) (f a) calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (⇑basis.repr.symm) (f a) ∘SL fderiv ℝ f a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g fun_prop All goals completed! 🐙calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (⇑basis.repr.symm) (f a) ∘SL fderiv ℝ f a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ DifferentiableAt ℝ f acalc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (⇑basis.repr.symm) (f a) ∘SL fderiv ℝ f a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g fun_prop All goals completed! 🐙calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (⇑basis.repr.symm) (f a) ∘SL fderiv ℝ f a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g)]calc.step f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω sa:Spacex:Spacey:Space⊢ ⟪(fderiv ℝ (⇑basis.repr.symm) (f a) ∘SL fderiv ℝ f a) x, y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
simp f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
have hdω: ∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x := by
intro a ha x y f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rw [hω_fderiv, f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ = ((fderiv ℝ ω a) y) x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) y), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g hω_fderiv f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) y), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) y), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g] f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacey:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) y), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
induction' y using basis_induction_on with i p1 p2 h1 h2 c p1 h1 hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacei:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), x⟫_ℝhzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), 0⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) 0), x⟫_ℝhadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacep1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) x), p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p2), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), p1 + p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), x⟫_ℝhsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacec:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), c • p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rotate_left hzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), 0⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) 0), x⟫_ℝhadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacep1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) x), p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p2), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), p1 + p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), x⟫_ℝhsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacec:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), c • p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), x⟫_ℝhb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacei:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Space⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), 0⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) 0), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacep1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) x), p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p2), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), p1 + p2⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp [inner_add_left, inner_add_right, h1, h2] All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ sx:Spacec:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) x), p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) p1), x⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) x), c • p1⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), x⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp [inner_smul_left, inner_smul_right, h1] All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
induction' x using basis_induction_on with j p1 p2 h1 h2 c p1 h1 hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (basis j)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), basis j⟫_ℝhb.hzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) 0), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), 0⟫_ℝhb.hadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3p1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) p2), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p2⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1 + p2⟫_ℝhb.hsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3c:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), c • p1⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rotate_left hb.hzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) 0), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), 0⟫_ℝhb.hadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3p1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) p2), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p2⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1 + p2⟫_ℝhb.hsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3c:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), c • p1⟫_ℝhb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (basis j)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), basis j⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hb.hzero f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3⊢ ⟪basis.repr.symm ((fderiv ℝ f a) 0), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), 0⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hb.hadd f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3p1:Spacep2:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝh2:⟪basis.repr.symm ((fderiv ℝ f a) p2), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p2⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (p1 + p2)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1 + p2⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp [inner_add_right, ← h1,← h2] All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
· hb.hsmul f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3c:ℝp1:Spaceh1:⟪basis.repr.symm ((fderiv ℝ f a) p1), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), p1⟫_ℝ⊢ ⟪basis.repr.symm ((fderiv ℝ f a) (c • p1)), basis i⟫_ℝ = ⟪basis.repr.symm ((fderiv ℝ f a) (basis i)), c • p1⟫_ℝ f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g simp [inner_smul_right, ← h1] All goals completed! 🐙 f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
simp only [inner_basis, basis_repr_symm_apply] hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ ((fderiv ℝ f a) (basis j)).ofLp i = ((fderiv ℝ f a) (basis i)).ofLp j f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
rw [← deriv_eq, hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ (deriv j f a).ofLp i = ((fderiv ℝ f a) (basis i)).ofLp j hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ (deriv j f a).ofLp i = (deriv i f a).ofLp j f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g ← deriv_eq hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ (deriv j f a).ofLp i = (deriv i f a).ofLp jhb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ (deriv j f a).ofLp i = (deriv i f a).ofLp j f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g]hb.hb f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝa:Spaceha:a ∈ si:Fin 3j:Fin 3⊢ (deriv j f a).ofLp i = (deriv i f a).ofLp j f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
exact deriv_comm_of_curl_zero f hf hcurl a j i f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) x⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
obtain ⟨g, hg⟩ := Convex.exists_forall_hasFDerivAt_of_fderiv_symmetric hs hso (ω := ω) hω hdω f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝhg:∀ a ∈ s, HasFDerivAt g (ω a) a⊢ ∃ g, f = ∇ g ∧ Differentiable ℝ g
use g h f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝhg:∀ a ∈ s, HasFDerivAt g (ω a) a⊢ f = ∇ g ∧ Differentiable ℝ g
simp [ω, ← hasGradientAt_iff_hasFDerivAt, s] at hg h f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝhg:∀ (a : Space), HasGradientAt g (basis.repr.symm (f a)) a⊢ f = ∇ g ∧ Differentiable ℝ g
apply And.intro _ (fun x => (hg x).differentiableAt) f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝhg:∀ (a : Space), HasGradientAt g (basis.repr.symm (f a)) a⊢ f = ∇ g
ext1 x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝhg:∀ (a : Space), HasGradientAt g (basis.repr.symm (f a)) ax:Space⊢ f x = ∇ g x
specialize hg x f:Space → EuclideanSpace ℝ (Fin 3)hf:Differentiable ℝ fhcurl:curl f = 0s:Set Space := Set.univhs:Convex ℝ shso:IsOpen sω:Space → Space →L[ℝ] ℝ := fun a => (toDual ℝ Space) (basis.repr.symm (f a))hω:DifferentiableOn ℝ ω shω_fderiv:∀ (a x y : Space), ((fderiv ℝ ω a) x) y = ⟪basis.repr.symm ((fderiv ℝ f a) x), y⟫_ℝhdω:∀ a ∈ s, ∀ (x y : Space), ((fderiv ℝ ω a) x) y = ((fderiv ℝ ω a) y) xg:Space → ℝx:Spacehg:HasGradientAt g (basis.repr.symm (f x)) x⊢ f x = ∇ g x
simpa using (HasGradientAt.unique (hg.differentiableAt.hasGradientAt_grad x) hg).symm All goals completed! 🐙A constructive form of the statement that if the curl of a function is zero, then it is equal to the grad of another function.
In the context of e.g. electromagnetism the potential given by this lemma corresponds
to that defined by the work done to move a unit charge from the origin to the
point x along a straight line.
lemma eq_grad_integral_of_curl_zero (f : Space → EuclideanSpace ℝ (Fin 3)) (hf : ContDiff ℝ 1 f)
(hcurl : curl f = 0) :
f = grad (fun x => ∫ t in (0 : ℝ)..1, ⟪f (t • x), basis.repr x⟫_ℝ ∂(volume)) := by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhcurl:curl f = 0⊢ f = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪f (t • x), basis.repr x⟫_ℝ
obtain ⟨g, ⟨rfl, hg⟩⟩ := exists_grad_of_curl_zero f
(hf.differentiable (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhcurl:curl f = 0⊢ 1 ≠ 0 g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ simp All goals completed! 🐙 g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ)) (by f:Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 1 fhcurl:curl f = 0⊢ curl f = 0 g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ simp [hcurl] All goals completed! 🐙 g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ) g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ
suffices h1 : ContDiff ℝ 1 g by g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0h1:ContDiff ℝ 1 g⊢ ∇ g = ∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ContDiff ℝ 1 g
nth_rewrite 1 [eq_integral_grad h1] g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0h1:ContDiff ℝ 1 g⊢ (∇ fun x => (∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ) + g 0) =
∇ fun x => ∫ (t : ℝ) in 0..1, ⟪∇ g (t • x), basis.repr x⟫_ℝ g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ContDiff ℝ 1 g
simp g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ContDiff ℝ 1 g g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ContDiff ℝ 1 g
rw [contDiff_one_iff_hasFDerivAt g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∃ f', Continuous f' ∧ ∀ (x : Space), HasFDerivAt g (f' x) x g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∃ f', Continuous f' ∧ ∀ (x : Space), HasFDerivAt g (f' x) x] g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ ∃ f', Continuous f' ∧ ∀ (x : Space), HasFDerivAt g (f' x) x
refine ⟨fun x => ((toDual ℝ Space) (basis.repr.symm (∇ g x))), by g:Space → ℝhg:Differentiable ℝ ghf:ContDiff ℝ 1 (∇ g)hcurl:curl (∇ g) = 0⊢ Continuous fun x => (toDual ℝ Space) (basis.repr.symm (∇ g x)) fun_prop All goals completed! 🐙, fun x => ?_⟩
exact hasGradientAt_iff_hasFDerivAt.mpr (DifferentiableAt.hasGradientAt_grad x (hg x)) All goals completed! 🐙TODO "Generalize the statement that a curl-free field is a gradient
to time-dependent fields."B. The curl on distributions
@[inherit_doc distCurl]
macro (name := distCurlNotation) "∇ᵈ" "⨯" f:term:100 : term => `(distCurl $f)B.1. The components of the curl
lemma distCurl_coord_apply {i : Fin 3}
(f : Space →d[ℝ] (EuclideanSpace ℝ (Fin 3))) (η : 𝓢(Space, ℝ)) :
(∇ᵈ ⨯ f) η i = - f (SchwartzMap.evalCLM ℝ Space ℝ (basis (i+2)) (fderivCLM ℝ Space ℝ η)) (i+1)
+ f (SchwartzMap.evalCLM ℝ Space ℝ (basis (i+1)) (fderivCLM ℝ Space ℝ η)) (i+2) := by i:Fin 3f:Space→d[ℝ] EuclideanSpace ℝ (Fin 3)η:𝓢(Space, ℝ)⊢ ((distCurl f) η).ofLp i =
-(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 1) +
(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 2)
simp [distCurl, fderivD_apply] All goals completed! 🐙lemma distCurl_apply_one (f : Space →d[ℝ] (EuclideanSpace ℝ (Fin 3))) (η : 𝓢(Space, ℝ)) :
(∇ᵈ ⨯ f) η 1 = - f (SchwartzMap.evalCLM ℝ Space ℝ (basis 0) (fderivCLM ℝ Space ℝ η)) 2
+ f (SchwartzMap.evalCLM ℝ Space ℝ (basis 2) (fderivCLM ℝ Space ℝ η)) 0 := by f:Space→d[ℝ] EuclideanSpace ℝ (Fin 3)η:𝓢(Space, ℝ)⊢ ((distCurl f) η).ofLp 1 =
-(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis 0)) ((fderivCLM ℝ Space ℝ) η))).ofLp 2 +
(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis 2)) ((fderivCLM ℝ Space ℝ) η))).ofLp 0
simpa using distCurl_coord_apply (i := 1) f η All goals completed! 🐙lemma distCurl_apply_two (f : Space →d[ℝ] (EuclideanSpace ℝ (Fin 3))) (η : 𝓢(Space, ℝ)) :
(∇ᵈ ⨯ f) η 2 = - f (SchwartzMap.evalCLM ℝ Space ℝ (basis 1) (fderivCLM ℝ Space ℝ η)) 0
+ f (SchwartzMap.evalCLM ℝ Space ℝ (basis 0) (fderivCLM ℝ Space ℝ η)) 1 := by f:Space→d[ℝ] EuclideanSpace ℝ (Fin 3)η:𝓢(Space, ℝ)⊢ ((distCurl f) η).ofLp 2 =
-(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis 1)) ((fderivCLM ℝ Space ℝ) η))).ofLp 0 +
(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis 0)) ((fderivCLM ℝ Space ℝ) η))).ofLp 1
simpa using distCurl_coord_apply (i := 2) f η All goals completed! 🐙B.2. Basic equalities
lemma distCurl_apply (f : Space →d[ℝ] (EuclideanSpace ℝ (Fin 3))) (η : 𝓢(Space, ℝ)) :
(∇ᵈ ⨯ f) η = WithLp.toLp 2 fun i =>
- f (SchwartzMap.evalCLM ℝ Space ℝ (basis (i+2)) (fderivCLM ℝ Space ℝ η)) (i+1)
+ f (SchwartzMap.evalCLM ℝ Space ℝ (basis (i+1)) (fderivCLM ℝ Space ℝ η)) (i+2) := by f:Space→d[ℝ] EuclideanSpace ℝ (Fin 3)η:𝓢(Space, ℝ)⊢ (distCurl f) η =
WithLp.toLp 2 fun i =>
-(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 1) +
(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 2)
ext i f:Space→d[ℝ] EuclideanSpace ℝ (Fin 3)η:𝓢(Space, ℝ)i:Fin 3⊢ ((distCurl f) η).ofLp i =
(WithLp.toLp 2 fun i =>
-(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 1) +
(f ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 2)).ofLp
i
simp [distCurl_coord_apply] All goals completed! 🐙B.3. The curl of a grad is zero
The curl of a grad is equal to zero.
@[simp]
lemma distCurl_distGrad_eq_zero (f : (Space) →d[ℝ] ℝ) :
∇ᵈ ⨯ (∇ᵈ f) = 0 := by f:Space→d[ℝ] ℝ⊢ distCurl (∇ᵈ f) = 0
ext η i f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ ((distCurl (∇ᵈ f)) η).ofLp i = (0 η).ofLp i
simp only [distCurl_coord_apply, Fin.isValue, _root_.zero_apply, PiLp.zero_apply] f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -((∇ᵈ f) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 1) +
((∇ᵈ f) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 2) =
0
rw [distGrad_eq_sum_basis, f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ)
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 1) +
((∇ᵈ f) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))).ofLp (i + 2) =
0 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ)
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 1) +
(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 2) =
0 distGrad_eq_sum_basis f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ)
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 1) +
(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 2) =
0 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ)
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 1) +
(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 2) =
0] f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ -(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ)
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 1) +
(∑ i_1,
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis i_1))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) •
EuclideanSpace.single i_1 1).ofLp
(i + 2) =
0
simp only [Fin.isValue, neg_smul, Finset.sum_neg_distrib, PiLp.neg_apply, WithLp.ofLp_sum,
WithLp.ofLp_smul, PiLp.ofLp_single, Finset.sum_apply, Pi.smul_apply, Pi.single_apply,
smul_eq_mul, mul_ite, mul_one, mul_zero, Finset.sum_ite_eq, Finset.mem_univ, ↓reduceIte,
neg_neg] f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) +
-f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
0
rw [← map_neg, f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η)))) +
f
(-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
0 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
f 0 ← map_add, f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
0 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
f 0 ← ContinuousLinearMap.map_zero f f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
f 0 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
f 0] f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ f
((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η)))) =
f 0
congr e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3⊢ (SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))) =
0
ext x e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3x:Space⊢ ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))) +
-(SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x =
0 x
simp only [Fin.isValue, _root_.add_apply, _root_.neg_apply, _root_.zero_apply] e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3x:Space⊢ ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2))) ((fderivCLM ℝ Space ℝ) η))))
x +
-((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x =
0
rw [schwartMap_fderiv_comm e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3x:Space⊢ ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x +
-((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x =
0 e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3x:Space⊢ ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x +
-((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x =
0]e_6 f:Space→d[ℝ] ℝη:𝓢(Space, ℝ)i:Fin 3x:Space⊢ ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x +
-((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 2)))
((fderivCLM ℝ Space ℝ) ((SchwartzMap.evalCLM ℝ Space ℝ (basis (i + 1))) ((fderivCLM ℝ Space ℝ) η))))
x =
0
simp All goals completed! 🐙