@@ -86,15 +86,22 @@ theorem linear [AddCommMonoid F] [Module R F] [∀ x, AddCommMonoid (E x)] [∀
8686
8787variable [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!]
9191protected 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
100107fibers and the model space. -/
@@ -197,9 +204,19 @@ variable (R) in
197204protected 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
204221variable (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
232249theorem 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
236253theorem 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]
241258theorem 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
245262theorem 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]
399415def 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
409425variable {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+
411437theorem 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
432458theorem 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
442468theorem 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
446472theorem 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]
451478theorem continuousLinearEquivAt_apply' (e : Trivialization F (π F E)) [e.IsLinear R]
@@ -745,7 +772,7 @@ theorem trivializationAt_continuousLinearMapAt {b₀ b : B}
745772theorem 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]
0 commit comments