Skip to content

Commit a689568

Browse files
committed
chore: rename extDerivFun to mvfderiv (#39485)
and generalise to functions taking value in any normed space. (This could be generalised to functions into additive torsors over abelian Lie groups: as we don't have this definition yet and don't need it in our applications, we leave this for the future.) The new name better reflects that this object is vector-valued. Future PRs will add further API lemmas (such as, about subtraction and negation), custom elaborators and delaborators and a version within a set. Part of #36036, i.e. from the path towards the Levi-Civita connection and Riemanian curvature. Related to fixing defeq abuses related to tangent space and scalar multiplication in mathlib. Co-authored-by: Heather Macbeth [25316162+hrmacbeth@users.noreply.github.com](mailto:25316162+hrmacbeth@users.noreply.github.com) Co-authored-by: Patrick Massot [patrickmassot@free.fr](mailto:patrickmassot@free.fr)
1 parent f51d724 commit a689568

2 files changed

Lines changed: 33 additions & 22 deletions

File tree

Mathlib/Geometry/Manifold/MFDeriv/NormedSpace.lean

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ differentiability.
1818
1919
In addition to the above, this file provides
2020
* results about the differentiability of scalar multiplication (`mfderiv_smul` and friends), and
21-
* `extDerivFun`: the exterior derivative of a scalar function, as a section of the cotangent bundle
21+
* `mvfderiv`: the exterior derivative of a scalar function, as a section of the cotangent bundle
2222
2323
-/
2424

@@ -84,7 +84,7 @@ theorem Differentiable.comp_mdifferentiable {g : F → F'} {f : M → F}
8484

8585
end Module
8686

87-
section ExtChartAt
87+
section extChartAt
8888

8989
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : M → F}
9090

@@ -102,7 +102,7 @@ theorem DifferentiableWithinAt.mdifferentiableWithinAt_of_comp_extChartAt_symm [
102102
refine (mdifferentiableWithinAt_iff_source_of_mem_source (mem_chart_source H x)).2 ?_
103103
simpa [extChartAt_self_eq] using hf.mdifferentiableWithinAt
104104

105-
end ExtChartAt
105+
end extChartAt
106106

107107
/-! ### Linear maps between normed spaces are differentiable -/
108108

@@ -396,23 +396,34 @@ lemma fromTangentSpace_mfderiv_smul_apply' (hf : MDiffAt f x) (hg : MDiffAt g x)
396396

397397
end smul
398398

399-
/-! ### Exterior derivative of a scalar function -/
399+
/-! ### Exterior derivative of a vector-valued function -/
400400

401-
/-- The exterior derivative of a scalar function on `M`, as a section of the cotangent bundle. -/
402-
noncomputable abbrev extDerivFun (g : M → 𝕜) :
403-
Π x : M, TangentSpace I x →L[𝕜] 𝕜 :=
401+
variable (I) in
402+
/-- The exterior derivative of a vector-valued function on `M`,
403+
as a section of the cotangent bundle.
404+
405+
Future: this could be generalised to functions into additive torsors over abelian Lie groups.
406+
-/
407+
noncomputable abbrev mvfderiv (g : M → F) :
408+
Π x : M, TangentSpace I x →L[𝕜] F :=
404409
fun x ↦ (NormedSpace.fromTangentSpace <| g x).toContinuousLinearMap ∘L (mfderiv% g x)
405410

411+
@[deprecated (since := "2026-05-17")] alias extDerivFun := mvfderiv
412+
406413
@[simp]
407-
lemma extDerivFun_add {g g' : M → 𝕜} {x : M} (hg : MDiffAt g x) (hg' : MDiffAt g' x) :
408-
extDerivFun (g + g') x = extDerivFun (I := I) g x + extDerivFun g' x := by
409-
simp [extDerivFun, mfderiv_add hg hg']
414+
lemma mvfderiv_add {g g' : M → F} {x : M} (hg : MDiffAt g x) (hg' : MDiffAt g' x) :
415+
mvfderiv I (g + g') x = mvfderiv I g x + mvfderiv I g' x := by
416+
simp [mvfderiv, mfderiv_add hg hg']
410417
congr
411418

419+
@[deprecated (since := "2026-05-17")] alias extDerivFun_add := mvfderiv_add
420+
412421
@[simp]
413-
lemma extDerivFun_zero {x : M} : extDerivFun (I := I) (0 : M → 𝕜) x = 0 := by
414-
have : extDerivFun (0 : M → 𝕜) x + extDerivFun (0 : M → 𝕜) x =
415-
extDerivFun (I := I) (0 : M → 𝕜) x := by
416-
rw [← extDerivFun_add (by exact mdifferentiable_const ..) (by exact mdifferentiable_const ..)]
422+
lemma mvfderiv_zero {x : M} : mvfderiv (I := I) (0 : M → F) x = 0 := by
423+
have : mvfderiv I (0 : M → F) x + mvfderiv I (0 : M → F) x =
424+
mvfderiv I (0 : M → F) x := by
425+
rw [← mvfderiv_add (by exact mdifferentiable_const ..) (by exact mdifferentiable_const ..)]
417426
simp
418427
simpa using this
428+
429+
@[deprecated (since := "2026-05-17")] alias extDerivFun_zero := mvfderiv_zero

Mathlib/Geometry/Manifold/VectorBundle/CovariantDerivative/Basic.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ structure IsCovariantDerivativeOn
9696
cov (σ + σ') x = cov σ x + cov σ' x
9797
leibniz {σ : Π x : M, V x} {g : M → 𝕜} {x}
9898
(hσ : MDiffAt (T% σ) x) (hg : MDiffAt g x) (hx : x ∈ s := by trivial) :
99-
cov (g • σ) x = g x • cov σ x + (extDerivFun g x).smulRight (σ x)
99+
cov (g • σ) x = g x • cov σ x + (mvfderiv I g x).smulRight (σ x)
100100

101101
/--
102102
A covariant derivative ∇ is called of class `C^k` iff, whenever `X` is a `C^k` section and `σ` a
@@ -176,10 +176,10 @@ lemma congr_of_eqOn
176176
-- Then, it's a chain of (dependent) equalities.
177177
calc cov σ x
178178
_ = cov ((ψ : M → 𝕜) • σ) x := by
179-
simp [hcov.leibniz hσ hψ'.mdifferentiableAt, hψx, extDerivFun, hψ'.mfderiv]
179+
simp [hcov.leibniz hσ hψ'.mdifferentiableAt, hψx, mvfderiv, hψ'.mfderiv]
180180
_ = cov ((ψ : M → 𝕜) • σ') x := by rw [funext H]
181181
_ = cov σ' x := by
182-
simp [hcov.leibniz hσ' hψ'.mdifferentiableAt, hψx, extDerivFun, hψ'.mfderiv]
182+
simp [hcov.leibniz hσ' hψ'.mdifferentiableAt, hψx, mvfderiv, hψ'.mfderiv]
183183

184184
open Filter Set in
185185
/-- Given a covariant derivative `cov` on a neighborhood `s` of a point `x`, if sections `σ` and
@@ -211,7 +211,7 @@ theorem smul_const (hcov : IsCovariantDerivativeOn F cov s)
211211
{σ : Π x : M, V x} {x} (a : 𝕜)
212212
(hσ : MDiffAt (T% σ) x) (hx : x ∈ s := by trivial) :
213213
cov (a • σ) x = a • cov σ x := by
214-
simpa [extDerivFun] using hcov.leibniz (g := fun _ ↦ a) hσ mdifferentiableAt_const
214+
simpa [mvfderiv] using hcov.leibniz (g := fun _ ↦ a) hσ mdifferentiableAt_const
215215

216216
end computational_properties
217217

@@ -270,15 +270,15 @@ lemma finite_affine_combination {ι : Type*} {s : Finset ι}
270270
rw [← smul_add, (h i).add hσ hσ' hx]
271271
leibniz {σ g x} hσ hg hx := by
272272
calc ∑ i ∈ s, f i x • cov i (g • σ) x
273-
_ = ∑ i ∈ s, (g x • f i x • cov i σ x + f i x • (extDerivFun g x).smulRight (σ x)) := by
273+
_ = ∑ i ∈ s, (g x • f i x • cov i σ x + f i x • (mvfderiv I g x).smulRight (σ x)) := by
274274
congr! 1 with i hi
275275
rw [(h i).leibniz hσ hg]
276-
simp [extDerivFun]
276+
simp [mvfderiv]
277277
module
278278
_ = g x • ∑ i ∈ s, f i x • cov i σ x +
279-
(∑ i ∈ s, f i) x • (extDerivFun g x).smulRight (σ x) := by
279+
(∑ i ∈ s, f i) x • (mvfderiv I g x).smulRight (σ x) := by
280280
rw [Finset.sum_add_distrib, Finset.smul_sum, Finset.sum_apply, Finset.sum_smul]
281-
_ = g x • ∑ i ∈ s, f i x • cov i σ x + (extDerivFun g x).smulRight (σ x) := by rw [hf]; simp
281+
_ = g x • ∑ i ∈ s, f i x • cov i σ x + (mvfderiv I g x).smulRight (σ x) := by rw [hf]; simp
282282

283283
/-- An affine combination of finitely many `C^k` connections on `u` is a `C^k` connection on `u`. -/
284284
lemma _root_.ContMDiffCovariantDerivativeOn.finite_affine_combination [IsManifold I 1 M]

0 commit comments

Comments
 (0)