Skip to content

Commit 2a63917

Browse files
committed
feat(Topology): generalise Trivialization.symm (leanprover-community#40903)
Change `Bundle.Trivialisation.symm` to get its junk values via `Classical.arbitrary` from a `Nonempty` instance, instead of requiring using `0` as the junk value and requiring `Zero` instances for that. This in particular allows us to generalise `FiberBundle.pullback` to bundles with nonempty fibres, which previously also required the bundle fibres to have zeroes. This is motivated by future work on principal bundles, whose fibres are always nonempty but have no preferred elements and hence no instances like `Zero` or `Inhabited`. `Bundle.Trivialisation.symmₗ` and `Bundle.Trivialisation.symmL` use `0` as the junk value as before; so while their definition got slightly more complicated and their underlying function no longer definitionally equal to `.symm`, all statements that were true about them previously continue to be true now. In particular, I've tested this PR against the sphere eversion project and ran into minimal breakage there.
1 parent 1087487 commit 2a63917

7 files changed

Lines changed: 97 additions & 54 deletions

File tree

Mathlib/Topology/FiberBundle/Constructions.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ theorem Pullback.continuous_totalSpaceMk [∀ x, TopologicalSpace (E x)] [FiberB
301301
exact (FiberBundle.totalSpaceMk_isInducing F E (f x)).eq_induced.le
302302

303303
variable {E F}
304-
variable [∀ _b, Zero (E _b)] {K : Type U} [FunLike K B' B] [ContinuousMapClass K B' B]
304+
variable [∀ _b, Nonempty (E _b)] {K : Type U} [FunLike K B' B] [ContinuousMapClass K B' B]
305305

306306
/-- A fiber bundle trivialization can be pulled back to a trivialization on the pullback bundle. -/
307307
@[simps]

Mathlib/Topology/FiberBundle/Trivialization.lean

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -223,29 +223,38 @@ theorem symm_coe_proj {x : B} {y : F} (e' : Pretrivialization F (π F E)) (h : x
223223
(e'.toPartialEquiv.symm (x, y)).1 = x :=
224224
e'.proj_symm_apply' h
225225

226-
section Zero
226+
section Nonempty
227227

228-
variable [∀ x, Zero (E x)]
228+
variable [∀ x, Nonempty (E x)]
229229

230230
open Classical in
231231
/-- A fiberwise inverse to `e`. This is the function `F → E b` that induces a local inverse
232-
`B × F → TotalSpace F E` of `e` on `e.baseSet`. It is defined to be `0` outside `e.baseSet`. -/
232+
`B × F → TotalSpace F E` of `e` on `e.baseSet`. Outside of `e.baseSet` it takes on arbitrarily
233+
chosen junk values. -/
233234
protected noncomputable def symm (e : Pretrivialization F (π F E)) (b : B) (y : F) : E b :=
234235
if hb : b ∈ e.baseSet then
235236
cast (congr_arg E (e.proj_symm_apply' hb)) (e.toPartialEquiv.symm (b, y)).2
236-
else 0
237+
else Classical.arbitrary _
237238

238239
theorem symm_apply (e : Pretrivialization F (π F E)) {b : B} (hb : b ∈ e.baseSet) (y : F) :
239240
e.symm b y = cast (congr_arg E (e.symm_coe_proj hb)) (e.toPartialEquiv.symm (b, y)).2 :=
240241
dif_pos hb
241242

243+
@[deprecated "The junk values of `Pretrivialization.symm` were changed from `0` to
244+
`Classical.arbitrary` and should not be relied on; this lemma will be removed soon. Note that this
245+
change does not affect the linear versions `symmₗ` and `symmL`, which still retain `0` as the junk
246+
values." (since := "2026-06-23")]
242247
theorem symm_apply_of_notMem (e : Pretrivialization F (π F E)) {b : B} (hb : b ∉ e.baseSet)
243-
(y : F) : e.symm b y = 0 :=
244-
dif_neg hb
248+
(y : F) : e.symm b y = Classical.arbitrary _ := by
249+
simp [Pretrivialization.symm, hb]
245250

251+
@[deprecated "The junk values of `Pretrivialization.symm` were changed from `0` to
252+
`Classical.arbitrary` and should not be relied on; this lemma will be removed soon. Note that this
253+
change does not affect the linear versions `symmₗ` and `symmL`, which still retain `0` as the junk
254+
values." (since := "2026-06-23")]
246255
theorem coe_symm_of_notMem (e : Pretrivialization F (π F E)) {b : B} (hb : b ∉ e.baseSet) :
247-
(e.symm b : F → E b) = 0 :=
248-
funext fun _ => dif_neg hb
256+
e.symm b = fun _ ↦ Classical.arbitrary _ := by
257+
ext; exact symm_apply_of_notMem e hb _
249258

250259
theorem mk_symm (e : Pretrivialization F (π F E)) {b : B} (hb : b ∈ e.baseSet) (y : F) :
251260
TotalSpace.mk b (e.symm b y) = e.toPartialEquiv.symm (b, y) := by
@@ -266,7 +275,7 @@ theorem apply_mk_symm (e : Pretrivialization F (π F E)) {b : B} (hb : b ∈ e.b
266275
e ⟨b, e.symm b y⟩ = (b, y) := by
267276
rw [e.mk_symm hb, e.apply_symm_apply (e.mk_mem_target.mpr hb)]
268277

269-
end Zero
278+
end Nonempty
270279

271280
/-- The restriction of a pretrivialization to a subset of the base. -/
272281
@[simps toFun source target baseSet]
@@ -668,12 +677,13 @@ theorem symm_coe_proj {x : B} {y : F} (e : Trivialization F (π F E)) (h : x ∈
668677
(e.toOpenPartialHomeomorph.symm (x, y)).1 = x :=
669678
e.proj_symm_apply' h
670679

671-
section Zero
680+
section Nonempty
672681

673-
variable [∀ x, Zero (E x)]
682+
variable [∀ x, Nonempty (E x)]
674683

675684
/-- A fiberwise inverse to `e'`. The function `F → E x` that induces a local inverse
676-
`B × F → TotalSpace F E` of `e'` on `e'.baseSet`. It is defined to be `0` outside `e'.baseSet`. -/
685+
`B × F → TotalSpace F E` of `e'` on `e'.baseSet`. It takes on junk values chosen using
686+
`Classical.arbitrary` outside `e'.baseSet`. -/
677687
protected noncomputable def symm (e : Trivialization F (π F E)) (b : B) (y : F) : E b :=
678688
e.toPretrivialization.symm b y
679689

@@ -682,9 +692,13 @@ theorem symm_apply (e : Trivialization F (π F E)) {b : B} (hb : b ∈ e.baseSet
682692
cast (congr_arg E (e.symm_coe_proj hb)) (e.toOpenPartialHomeomorph.symm (b, y)).2 :=
683693
dif_pos hb
684694

695+
@[deprecated "The junk values of `Trivialization.symm` were changed from `0` to
696+
`Classical.arbitrary` and should not be relied on; this lemma will be removed soon. Note that this
697+
change does not affect the linear versions `symmₗ` and `symmL`, which still retain `0` as the junk
698+
values." (since := "2026-06-23")]
685699
theorem symm_apply_of_notMem (e : Trivialization F (π F E)) {b : B} (hb : b ∉ e.baseSet) (y : F) :
686-
e.symm b y = 0 :=
687-
dif_neg hb
700+
e.symm b y = Classical.arbitrary _ :=
701+
e.toPretrivialization.symm_apply_of_notMem hb y
688702

689703
theorem mk_symm (e : Trivialization F (π F E)) {b : B} (hb : b ∈ e.baseSet) (y : F) :
690704
TotalSpace.mk b (e.symm b y) = e.toOpenPartialHomeomorph.symm (b, y) :=
@@ -715,7 +729,7 @@ theorem continuousOn_symm (e : Trivialization F (π F E)) :
715729
rw [← e.target_eq]
716730
exact e.toOpenPartialHomeomorph.continuousOn_symm
717731

718-
end Zero
732+
end Nonempty
719733

720734
/-- If `e` is a `Trivialization` of `proj : Z → B` with fiber `F` and `h` is a homeomorphism
721735
`F ≃ₜ F'`, then `e.trans_fiber_homeomorph h` is the trivialization of `proj` with the fiber `F'`

Mathlib/Topology/VectorBundle/Basic.lean

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,22 @@ theorem linear [AddCommMonoid F] [Module R F] [∀ x, AddCommMonoid (E x)] [∀
8686

8787
variable [AddCommMonoid F] [Module R F] [∀ x, AddCommMonoid (E x)] [∀ x, Module R (E x)]
8888

89+
open Classical in
8990
/-- A fiberwise linear inverse to `e`. -/
90-
@[simps!]
9191
protected def symmₗ (e : Pretrivialization F (π F E)) [e.IsLinear R] (b : B) : F →ₗ[R] E b := by
92-
refine IsLinearMap.mk' (e.symm b) ?_
93-
by_cases hb : b ∈ e.baseSet
94-
· exact (((e.linear R hb).mk' _).inverse (e.symm b) (e.symm_apply_apply_mk hb) fun v ↦
95-
congr_arg Prod.snd <| e.apply_mk_symm hb v).isLinear
96-
· rw [e.coe_symm_of_notMem hb]
97-
exact (0 : F →ₗ[R] E b).isLinear
92+
refine if hb : b ∈ e.baseSet then IsLinearMap.mk' (e.symm b) ?_ else 0
93+
exact (((e.linear R hb).mk' _).inverse (e.symm b) (e.symm_apply_apply_mk hb) fun v ↦
94+
congr_arg Prod.snd <| e.apply_mk_symm hb v).isLinear
95+
96+
@[simp]
97+
lemma symmₗ_apply (e : Pretrivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
98+
(y : F) : e.symmₗ R b y = e.symm b y := by
99+
simp [Pretrivialization.symmₗ, hb]
100+
101+
@[simp]
102+
lemma symmₗ_apply_of_notMem (e : Pretrivialization F (π F E)) [e.IsLinear R] {b : B}
103+
(hb : b ∉ e.baseSet) (y : F) : e.symmₗ R b y = 0 := by
104+
simp [Pretrivialization.symmₗ, hb]
98105

99106
/-- A pretrivialization for a vector bundle defines linear equivalences between the
100107
fibers and the model space. -/
@@ -197,9 +204,19 @@ variable (R) in
197204
protected def symmₗ (e : Trivialization F (π F E)) [e.IsLinear R] (b : B) : F →ₗ[R] E b :=
198205
e.toPretrivialization.symmₗ R b
199206

200-
theorem coe_symmₗ (e : Trivialization F (π F E)) [e.IsLinear R] (b : B) :
201-
⇑(e.symmₗ R b) = e.symm b :=
202-
rfl
207+
theorem coe_symmₗ (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet) :
208+
⇑(e.symmₗ R b) = e.symm b := by
209+
ext y; exact e.toPretrivialization.symmₗ_apply R hb y
210+
211+
@[simp]
212+
theorem symmₗ_apply (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
213+
(y : F) : e.symmₗ R b y = e.symm b y :=
214+
e.toPretrivialization.symmₗ_apply R hb y
215+
216+
@[simp]
217+
theorem symmₗ_apply_of_notMem (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
218+
(hb : b ∉ e.baseSet) (y : F) : e.symmₗ R b y = 0 :=
219+
e.toPretrivialization.symmₗ_apply_of_notMem R hb y
203220

204221
variable (R) in
205222
/-- A fiberwise linear map equal to `e` on `e.baseSet`. -/
@@ -230,17 +247,17 @@ theorem linearMapAt_def_of_notMem (e : Trivialization F (π F E)) [e.IsLinear R]
230247
dif_neg hb
231248

232249
theorem symm_linearMapAt (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
233-
(y : E b) : e.symm b (e.linearMapAt R b y) = y :=
234-
e.toPretrivialization.symmₗ_linearMapAt hb y
250+
(y : E b) : e.symm b (e.linearMapAt R b y) = y := by
251+
simp [hb]
235252

236253
theorem symmₗ_linearMapAt (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
237254
(y : E b) : e.symmₗ R b (e.linearMapAt R b y) = y :=
238255
e.toPretrivialization.symmₗ_linearMapAt hb y
239256

240257
@[simp]
241258
theorem linearMapAt_symm (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
242-
(y : F) : e.linearMapAt R b (e.symm b y) = y :=
243-
e.toPretrivialization.linearMapAt_symmₗ hb y
259+
(y : F) : e.linearMapAt R b (e.symm b y) = y := by
260+
simp [hb]
244261

245262
theorem linearMapAt_symmₗ (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
246263
(y : F) : e.linearMapAt R b (e.symmₗ R b y) = y :=
@@ -395,19 +412,28 @@ lemma continuousLinearMapAt_apply_of_mem (e : Trivialization F TotalSpace.proj)
395412
simp [coe_linearMapAt_of_mem e hb]
396413

397414
/-- Backwards map of `Bundle.Trivialization.continuousLinearEquivAt`, defined everywhere. -/
398-
@[simps -fullyApplied apply]
399415
def symmL (e : Trivialization F (π F E)) [e.IsLinear R] (b : B) : F →L[R] E b :=
400416
{ e.symmₗ R b with
401-
toFun := e.symm b -- given explicitly to help `simps`
402417
cont := by
403418
by_cases hb : b ∈ e.baseSet
404419
· rw [(FiberBundle.totalSpaceMk_isInducing F E b).continuous_iff]
420+
refine .congr (f := TotalSpace.mk b ∘ e.symm b) ?_ (by simp [hb])
405421
exact e.continuousOn_symm.comp_continuous (.prodMk_right _) fun x ↦
406422
mk_mem_prod hb (mem_univ x)
407-
· refine continuous_zero.congr fun x => (e.symm_apply_of_notMem hb x).symm }
423+
· exact continuous_zero.congr fun x => (e.symmₗ_apply_of_notMem hb x).symm }
408424

409425
variable {R}
410426

427+
@[simp]
428+
theorem symmL_apply (e : Trivialization F (π F E)) [e.IsLinear R] {b : B} (hb : b ∈ e.baseSet)
429+
(y : F) : e.symmL R b y = e.symm b y :=
430+
e.toPretrivialization.symmₗ_apply R hb y
431+
432+
@[simp]
433+
lemma symmL_apply_of_notMem (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
434+
(hb : b ∉ e.baseSet) (y : F) : e.symmL R b y = 0 :=
435+
e.toPretrivialization.symmₗ_apply_of_notMem _ hb _
436+
411437
theorem symmL_continuousLinearMapAt (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
412438
(hb : b ∈ e.baseSet) (y : E b) : e.symmL R b (e.continuousLinearMapAt R b y) = y :=
413439
e.symmₗ_linearMapAt hb y
@@ -427,7 +453,7 @@ def continuousLinearEquivAt (e : Trivialization F (π F E)) [e.IsLinear R] (b :
427453
invFun := e.symm b -- given explicitly to help `simps`
428454
continuous_toFun := (e.continuousOn.comp_continuous
429455
(FiberBundle.totalSpaceMk_isInducing F E b).continuous fun _ => e.mem_source.mpr hb).snd
430-
continuous_invFun := (e.symmL R b).continuous }
456+
continuous_invFun := by convert (e.symmL R b).continuous; ext; simp [hb] }
431457

432458
theorem coe_continuousLinearEquivAt_eq (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
433459
(hb : b ∈ e.baseSet) :
@@ -440,12 +466,13 @@ theorem coe_continuousLinearEquivAt_eq' (e : Trivialization F (π F E)) [e.IsLin
440466
DFunLike.coe_injective (e.coe_linearMapAt_of_mem hb).symm
441467

442468
theorem symm_continuousLinearEquivAt_eq (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
443-
(hb : b ∈ e.baseSet) : ((e.continuousLinearEquivAt R b hb).symm : F → E b) = e.symmL R b :=
444-
rfl
469+
(hb : b ∈ e.baseSet) : ((e.continuousLinearEquivAt R b hb).symm : F → E b) = e.symmL R b := by
470+
ext; simp [hb]
445471

446472
theorem symm_continuousLinearEquivAt_eq' (e : Trivialization F (π F E)) [e.IsLinear R] {b : B}
447-
(hb : b ∈ e.baseSet) : ((e.continuousLinearEquivAt R b hb).symm : F →L[R] E b) = e.symmL R b :=
448-
rfl
473+
(hb : b ∈ e.baseSet) :
474+
((e.continuousLinearEquivAt R b hb).symm : F →L[R] E b) = e.symmL R b := by
475+
ext; simp [hb]
449476

450477
@[simp]
451478
theorem continuousLinearEquivAt_apply' (e : Trivialization F (π F E)) [e.IsLinear R]
@@ -745,7 +772,7 @@ theorem trivializationAt_continuousLinearMapAt {b₀ b : B}
745772
theorem localTriv_symmL {b : B} (hb : b ∈ (Z.localTriv i).baseSet) :
746773
(Z.localTriv i).symmL R b = Z.coordChange i (Z.indexAt b) b := by
747774
ext1 v
748-
rw [(Z.localTriv i).symmL_apply R, (Z.localTriv i).symm_apply]
775+
rw [(Z.localTriv i).symmL_apply hb, (Z.localTriv i).symm_apply]
749776
exacts [rfl, hb]
750777

751778
@[simp, mfld_simps]

Mathlib/Topology/VectorBundle/Constructions.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ instance vectorBundle : VectorBundle 𝕜 F (Bundle.Trivial B F) where
7474

7575
@[simp] lemma symmₗ_trivialization (x : B) :
7676
(trivialization B F).symmₗ 𝕜 x = LinearMap.id := by
77-
ext; simp [Trivialization.coe_symmₗ, trivialization_symm_apply B F]
77+
ext; simp [trivialization_symm_apply B F]
7878

7979
@[simp] lemma symmL_trivialization (x : B) :
8080
(trivialization B F).symmL 𝕜 x = ContinuousLinearMap.id 𝕜 F := by

Mathlib/Topology/VectorBundle/ContinuousAlternatingMap.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ theorem inCoordinates_eq {x₀ x : B₁} {y₀ y : B₂} {ϕ : E₁ x [⋀^ι]
8787
|>.compContinuousAlternatingMap ϕ |>.compContinuousLinearMap
8888
(((trivializationAt F₁ E₁ x₀).continuousLinearEquivAt 𝕜 x hx).symm : F₁ →L[𝕜] E₁ x)) := by
8989
ext
90-
simp [inCoordinates, *]
90+
simp [inCoordinates, *, Function.comp_def]
9191

9292
end ContinuousAlternatingMap
9393

@@ -277,7 +277,8 @@ def vectorPrebundle :
277277
(mem_baseSet_trivializationAt _ _ _)
278278
convert! (L₁.continuousAlternatingMapCongr L₂).toHomeomorph.isInducing
279279
ext f
280-
simp [Trivialization.linearMapAt_def_of_mem _ (mem_baseSet_trivializationAt _ _ _), L₁, L₂]
280+
simp [Trivialization.linearMapAt_def_of_mem _ (mem_baseSet_trivializationAt _ _ _), L₁, L₂,
281+
Function.comp_def, mem_baseSet_trivializationAt]
281282

282283
/-- Topology on the total space of the continuous `σ`-semilinear maps between two "normable" vector
283284
bundles over the same base. -/

Mathlib/Topology/VectorBundle/Hom.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,9 @@ theorem continuousLinearMapCoordChange_apply (b : B)
154154
simp_rw [continuousLinearMapCoordChange, ContinuousLinearEquiv.coe_coe,
155155
ContinuousLinearEquiv.arrowCongrSL_apply, continuousLinearMap_apply,
156156
continuousLinearMap_symm_apply' σ e₁ e₂ hb.1, comp_apply, ContinuousLinearEquiv.coe_coe,
157-
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply,
158-
Trivialization.symmL_apply]
159-
rw [e₂.coordChangeL_apply e₂', e₁'.coordChangeL_apply e₁, e₁.coe_linearMapAt_of_mem hb.1.1,
160-
e₂'.coe_linearMapAt_of_mem hb.2.2]
157+
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply]
158+
rw [e₂.symmL_apply hb.1.2, e₁'.symmL_apply hb.2.1, e₂.coordChangeL_apply e₂',
159+
e₁'.coordChangeL_apply e₁, e₁.coe_linearMapAt_of_mem hb.1.1, e₂'.coe_linearMapAt_of_mem hb.2.2]
161160
exacts [⟨hb.2.1, hb.1.1⟩, ⟨hb.1.2, hb.2.2⟩]
162161

163162
end Bundle.Pretrivialization
@@ -208,7 +207,8 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
208207
convert! this
209208
ext f
210209
dsimp [Pretrivialization.continuousLinearMap_apply]
211-
rw [Trivialization.linearMapAt_def_of_mem _ (mem_baseSet_trivializationAt _ _ _)]
210+
simp only [Trivialization.symmL_apply, mem_baseSet_trivializationAt,
211+
Trivialization.linearMapAt_def_of_mem]
212212
rfl
213213

214214
/-- Topology on the total space of the continuous `σ`-semilinear maps between two "normable" vector
@@ -520,7 +520,7 @@ theorem inCoordinates_apply_eq₂
520520
(trivializationAt F₃ E₃ x₀).linearMapAt 𝕜 x
521521
(ϕ ((trivializationAt F₁ E₁ x₀).symm x v) ((trivializationAt F₂ E₂ x₀).symm x w)) := by
522522
rw [inCoordinates_eq h₁x (by simp [h₂x, h₃x])]
523-
simp [hom_trivializationAt, Trivialization.continuousLinearMap_apply]
523+
simp [hom_trivializationAt, Trivialization.continuousLinearMap_apply, h₂x]
524524

525525
end TwoVariables
526526

Mathlib/Topology/VectorBundle/Riemannian.lean

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ lemma eventually_norm_symmL_trivializationAt_self_comp_lt (x : B) {r : ℝ} (hr
183183
let w := (trivializationAt F E x).continuousLinearMapAt ℝ y v
184184
suffices ‖((trivializationAt F E x).symmL ℝ x) w‖ ^ 2 ≤ r' ^ 2 * ‖v‖ ^ 2 from
185185
le_of_sq_le_sq (by simpa [mul_pow]) (by positivity)
186-
simp only [Trivialization.symmL_apply, ← real_inner_self_eq_norm_sq, hg]
186+
simp only [Trivialization.symmL_apply, mem_baseSet_trivializationAt,
187+
← real_inner_self_eq_norm_sq, hg]
187188
have hgy : g y v v = g' y w w := by
188189
rw [inCoordinates_apply_eq₂ h'y h'y (Set.mem_univ _)]
189190
have A : ((trivializationAt F E x).symm y)
@@ -228,8 +229,8 @@ lemma eventually_norm_trivializationAt_lt (x : B) :
228229
((trivializationAt F E x).symmL ℝ x) = ContinuousLinearMap.id _ _ := by
229230
ext v
230231
have h'x : x ∈ (trivializationAt F E x).baseSet := FiberBundle.mem_baseSet_trivializationAt' x
231-
simp only [Trivialization.continuousLinearMapAt_apply, Trivialization.symmL_apply, comp_apply,
232-
id_apply]
232+
simp only [Trivialization.continuousLinearMapAt_apply, Trivialization.symmL_apply,
233+
mem_baseSet_trivializationAt, comp_apply, id_apply]
233234
convert! ((trivializationAt F E x).continuousLinearEquivAt ℝ _ h'x).apply_symm_apply v
234235
simp [Trivialization.coe_continuousLinearEquivAt_eq _ h'x]
235236
have : (trivializationAt F E x).continuousLinearMapAt ℝ y =
@@ -286,7 +287,7 @@ lemma eventually_norm_symmL_trivializationAt_comp_self_lt (x : B) {r : ℝ} (hr
286287
let w := (trivializationAt F E x).continuousLinearMapAt ℝ x v
287288
suffices ‖((trivializationAt F E x).symmL ℝ y) w‖ ^ 2 ≤ r' ^ 2 * ‖v‖ ^ 2 from
288289
le_of_sq_le_sq (by simpa [mul_pow]) (by positivity)
289-
simp only [Trivialization.symmL_apply, ← real_inner_self_eq_norm_sq, hg]
290+
simp only [Trivialization.symmL_apply, h'y, ← real_inner_self_eq_norm_sq, hg]
290291
have hgx : g x v v = g' x w w := by
291292
rw [inCoordinates_apply_eq₂ h'x h'x (Set.mem_univ _)]
292293
have A : ((trivializationAt F E x).symm x)
@@ -333,8 +334,8 @@ lemma eventually_norm_symmL_trivializationAt_lt (x : B) :
333334
((trivializationAt F E x).symmL ℝ x) = ContinuousLinearMap.id _ _ := by
334335
ext v
335336
have h'x : x ∈ (trivializationAt F E x).baseSet := FiberBundle.mem_baseSet_trivializationAt' x
336-
simp only [Trivialization.continuousLinearMapAt_apply, Trivialization.symmL_apply, comp_apply,
337-
id_apply]
337+
simp only [Trivialization.continuousLinearMapAt_apply, Trivialization.symmL_apply,
338+
mem_baseSet_trivializationAt, comp_apply, id_apply]
338339
convert! ((trivializationAt F E x).continuousLinearEquivAt ℝ _ h'x).apply_symm_apply v
339340
simp [Trivialization.coe_continuousLinearEquivAt_eq _ h'x]
340341
have : (trivializationAt F E x).symmL ℝ y =

0 commit comments

Comments
 (0)