Skip to content

Commit bf0e2e6

Browse files
committed
fix: definition of smooth connection
And perform some small code clean-ups: use the coeFun instance, make two arguments implicit which deserve to be.
1 parent 17e1fb8 commit bf0e2e6

1 file changed

Lines changed: 23 additions & 24 deletions

File tree

Mathlib/Geometry/Manifold/VectorBundle/CovariantDerivative.lean

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -128,21 +128,6 @@ structure CovariantDerivative where
128128
smul_const_σ : ∀ (X : Π x : M, TangentSpace I x) (σ : Π x : M, V x) (a : 𝕜),
129129
toFun X (a • σ) = a • toFun X σ
130130

131-
variable {I F V}
132-
/--
133-
A covariant derivative ∇ is called of class `C^k` iff,
134-
whenever `X` is a `C^k` section and `σ` a `C^{k+1}` section, the result `∇ X σ` is a `C^k` section.
135-
This is a class so typeclass inference can deduce this automatically.
136-
-/
137-
class IsCkConnection (cov : CovariantDerivative I F V) (k : ℕ∞) where
138-
regularity : ∀ (X : Π x : M, TangentSpace I x) (σ : Π x : M, V x),
139-
ContMDiff I (I.prod 𝓘(𝕜, F)) (k + 1) (T% σ) →
140-
-- TODO: this condition does not typecheck!
141-
-- ContMDiff I I.tangent k (fun x ↦ (X x : TangentBundle I M)) →
142-
ContMDiff I (I.prod 𝓘(𝕜, F)) k (T% (cov.toFun X σ))
143-
144-
-- future: if g is a C^k metric, the LC connection is of class C^k ?
145-
146131
namespace CovariantDerivative
147132

148133
attribute [coe] toFun
@@ -152,6 +137,20 @@ instance : CoeFun (CovariantDerivative I F V)
152137
fun _ ↦ (Π x : M, TangentSpace I x) → (Π x : M, V x) → (Π x : M, V x) :=
153138
fun e ↦ e.toFun⟩
154139

140+
variable {I F V}
141+
/--
142+
A covariant derivative ∇ is called of class `C^k` iff,
143+
whenever `X` is a `C^k` section and `σ` a `C^{k+1}` section, the result `∇ X σ` is a `C^k` section.
144+
This is a class so typeclass inference can deduce this automatically.
145+
-/
146+
class _root_.IsCkConnection (cov : CovariantDerivative I F V) (k : ℕ∞) [IsManifold I 1 M] where
147+
regularity : ∀ {X : Π x : M, TangentSpace I x} {σ : Π x : M, V x},
148+
ContMDiff I (I.prod 𝓘(𝕜, F)) (k + 1) (T% σ) → ContMDiff I (I.prod 𝓘(𝕜, E)) k (T% X) →
149+
ContMDiff I (I.prod 𝓘(𝕜, F)) k (T% (cov X σ))
150+
151+
-- future: if g is a C^k metric on a manifold M, the corresponding Levi-Civita connection
152+
-- is of class C^k (up to off-by-one errors)
153+
155154
omit [IsManifold I 0 M] [∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul 𝕜 (V x)]
156155
[VectorBundle 𝕜 F V] in
157156
@[simp]
@@ -250,30 +249,30 @@ def convexCombination' {ι : Type*} {s : Finset ι} [Nonempty s]
250249
omit [IsManifold I 0 M]
251250
[∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul 𝕜 (V x)] in
252251
/-- A convex combination of two `C^k` connections is a `C^k` connection. -/
253-
lemma convexCombination_isRegular (cov cov' : CovariantDerivative I F V) {f : M → 𝕜} {n : ℕ∞}
254-
(hf : ContMDiff I 𝓘(𝕜) n f)
252+
lemma convexCombination_isRegular [IsManifold I 1 M] (cov cov' : CovariantDerivative I F V)
253+
{f : M → 𝕜} {n : ℕ∞} (hf : ContMDiff I 𝓘(𝕜) n f)
255254
(hcov : IsCkConnection cov n) (hcov' : IsCkConnection cov' n) :
256255
IsCkConnection (convexCombination cov cov' f) n where
257-
regularity X σ hX /-hσ-/ := by
256+
regularity {X σ} hX := by
258257
apply contMDiff_add_section
259-
· exact contMDiff_smul_section hf <| hcov.regularity X σ hX
260-
· exact contMDiff_smul_section (contMDiff_const.sub hf) <| hcov'.regularity X σ hX
258+
· exact contMDiff_smul_section hf <| hcov.regularity hX hσ
259+
· exact contMDiff_smul_section (contMDiff_const.sub hf) <| hcov'.regularity hX hσ
261260

262261
omit [IsManifold I 0 M]
263262
[∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul 𝕜 (V x)] in
264263
/-- A convex combination of finitely many `C^k` connections is a `C^k` connection. -/
265-
lemma convexCombination'_isRegular {ι : Type*} {s : Finset ι} [Nonempty s]
264+
lemma convexCombination'_isRegular [IsManifold I 1 M] {ι : Type*} {s : Finset ι} [Nonempty s]
266265
(cov : ι → CovariantDerivative I F V) {f : ι → M → 𝕜} (hf : ∑ i ∈ s, f i = 1) {n : ℕ∞}
267266
(hf' : ∀ i ∈ s, ContMDiff I 𝓘(𝕜) n (f i))
268267
(hcov : ∀ i ∈ s, IsCkConnection (cov i) n) :
269268
IsCkConnection (convexCombination' cov hf) n where
270-
regularity X σ hX /-hσ-/ := by
269+
regularity {X σ} hX := by
271270
unfold convexCombination'
272271
dsimp
273272
have ms (i) (hi : i ∈ s) : ContMDiff I (I.prod 𝓘(𝕜, F)) n
274273
(T% (f i • (cov i) X σ)) := by
275274
apply contMDiff_smul_section (hf' i hi)
276-
exact IsCkConnection.regularity X σ hX (self := hcov i hi)
275+
exact IsCkConnection.regularity hX hσ (self := hcov i hi)
277276
simp only [Finset.sum_apply, Pi.smul_apply']
278277
exact contMDiff_finsum_section (t := fun i ↦ f i • (cov i) X σ) ms
279278

@@ -306,7 +305,7 @@ noncomputable def trivial : CovariantDerivative 𝓘(𝕜, E) E'
306305

307306
/-- The trivial connection on the trivial bundle is smooth -/
308307
lemma trivial_isSmooth : IsCkConnection (𝕜 := 𝕜) (trivial E E') (⊤ : ℕ∞) where
309-
regularity X σ hX /-hσ-/ := by
308+
regularity {X σ} hX := by
310309
-- except for local trivialisations, contDiff_infty_iff_fderiv covers this well
311310
simp only [trivial]
312311
-- use a local trivialisation

0 commit comments

Comments
 (0)