Skip to content

Commit 1511821

Browse files
committed
WIP: improve construction of extend; typeclasses fail to be found
1 parent 6f70ec5 commit 1511821

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

Mathlib/Geometry/Manifold/VectorBundle/CovariantDerivative.lean

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -434,19 +434,24 @@ The details of the extension are mostly unspecified: for covariant derivatives,
434434
`s` at points other than `x` will not matter (except for shorter proofs).
435435
Thus, we choose `s` to be somewhat nice: our chosen construction is linear in `v`.
436436
-/
437-
noncomputable def extend [FiniteDimensional ℝ F] {x : M} (v : V x) : (x' : M) → V x' :=
437+
noncomputable def extend [FiniteDimensional ℝ F] [T2Space M] {x : M} (v : V x) :
438+
(x' : M) → V x' := by
438439
letI b := Basis.ofVectorSpace ℝ F
439440
letI t := trivializationAt F V x
440-
letI bV := b.localFrame_toBasis_at t (FiberBundle.mem_baseSet_trivializationAt F V x)
441-
fun x' ↦ ∑ i, bV.repr v i • b.localFrame t i x'
442-
443-
-- FIXME: these two lemmas only hold for *very particular* choices of extensions of v
444-
-- (but there exist such choices, and our definition makes these ?! TODO check!!)
441+
letI V₀ := localExtensionOn b t x v
442+
-- Choose a smooth bump function ψ near `x`, supported without t.baseSet
443+
-- and return ψ • V₀ instead
444+
letI ht := t.open_baseSet.mem_nhds (FiberBundle.mem_baseSet_trivializationAt' x)
445+
choose ψ _ hψ using (SmoothBumpFunction.nhds_basis_support (I := I) ht).mem_iff.1 ht
446+
exact ψ.toFun • localExtensionOn b t x v
447+
448+
-- NB. These two lemmas don't hold for *any* choice of extension of `v`, but they hold for
449+
-- *well-chosen* extensions (such as ours).
445450
-- so, one may argue this is mathematically wrong, but it encodes the "choice some extension
446451
-- with this and that property" nicely
447452
-- a different proof would be to argue only the value at a point matters for cov
448453
@[simp]
449-
lemma extend_add_apply [FiniteDimensional ℝ F] {x : M} (v v' : V x) :
454+
lemma extend_add_apply [FiniteDimensional ℝ F] [T2Space M] {x : M} (v v' : V x) :
450455
extend F (v + v') = extend F v + extend F v' := by
451456
ext x
452457
simp [extend]
@@ -464,28 +469,29 @@ lemma extend_add_apply [FiniteDimensional ℝ F] {x : M} (v v' : V x) :
464469
sorry
465470

466471
@[simp]
467-
lemma extend_smul_apply [FiniteDimensional ℝ F] {a : ℝ} (v : V x) :
472+
lemma extend_smul_apply [FiniteDimensional ℝ F] [T2Space M] {a : ℝ} (v : V x) :
468473
extend F (a • v) = a • extend F v := sorry
469474

470475
-- TODO: cleanup this proof by adding simp lemmas to the localFrame stuff
471476
omit [∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul ℝ (V x)] in
472-
@[simp] lemma extend_apply_self [FiniteDimensional ℝ F] {x : M} (v : V x) :
477+
@[simp] lemma extend_apply_self [FiniteDimensional ℝ F] [T2Space M] {x : M} (v : V x) :
473478
extend F v x = v := by
474479
letI b := Basis.ofVectorSpace ℝ F
475480
letI t := trivializationAt F V x
476481
have x_mem : x ∈ t.baseSet := FiberBundle.mem_baseSet_trivializationAt F V x
477482
letI bV := b.localFrame_toBasis_at t x_mem
478-
change ∑ i, bV.repr v i • b.localFrame t i x = v
479-
conv_rhs => rw [←bV.sum_repr v]
480-
simp [bV, Basis.localFrame_toBasis_at, Basis.localFrame, x_mem]
483+
sorry
484+
-- change ∑ i, bV.repr v i • b.localFrame t i x = v
485+
-- conv_rhs => rw [←bV.sum_repr v]
486+
-- simp [bV, Basis.localFrame_toBasis_at, Basis.localFrame, x_mem]
481487

482-
lemma contMDiff_extend [FiniteDimensional ℝ F] {x : M} (σ₀ : V x) :
488+
lemma contMDiff_extend [FiniteDimensional ℝ F] [T2Space M] {x : M} (σ₀ : V x) :
483489
ContMDiff I (I.prod 𝓘(ℝ, F)) 1 (fun x ↦ TotalSpace.mk' F x (extend F σ₀ x)) := by
484490
-- use contMDiffOn_localExtensionOn, plus an abstract result about capping with a bump function
485491
sorry
486492

487493
/-- The difference of two covariant derivatives, as a tensorial map -/
488-
noncomputable def difference [FiniteDimensional ℝ F] [FiniteDimensional ℝ E] [IsManifold I 1 M]
494+
noncomputable def difference [FiniteDimensional ℝ F] [T2Space M] [FiniteDimensional ℝ E] [IsManifold I 1 M]
489495
(cov cov' : CovariantDerivative I F V) :
490496
Π x : M, TangentSpace I x → V x → V x :=
491497
fun x X₀ σ₀ ↦ differenceAux cov cov' (extend E X₀) (extend F σ₀) x
@@ -503,7 +509,7 @@ noncomputable def difference [FiniteDimensional ℝ F] [FiniteDimensional ℝ E]
503509

504510
omit [∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul ℝ (V x)] in
505511
@[simp]
506-
lemma difference_apply [FiniteDimensional ℝ F] [IsManifold I 1 M]
512+
lemma difference_apply [FiniteDimensional ℝ F] [IsManifold I 1 M] [T2Space M]
507513
(cov cov' : CovariantDerivative I F V) (x : M) (X₀ : TangentSpace I x) (σ₀ : V x) :
508514
difference cov cov' x X₀ σ₀ =
509515
cov (extend E X₀) (extend F σ₀) x - cov' (extend E X₀) (extend F σ₀) x := rfl

0 commit comments

Comments
 (0)