topology.vector_bundle.hom
⟷
Mathlib.Topology.VectorBundle.Hom
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
arrow_congrSL
introduced in #19107 (#19128)
I added more general definitions precomp
and postcomp
for expressing that (pre/post)-composing by a fixed continuous linear maps is continuous. These were planned about a year ago when I defined the strong topology and follow from uniform_on_fun.precomp_uniform_continuous and uniform_on_fun.postcomp_uniform_continuous.
The proof of continuity of arrow_congrSL
is a direct consequence of these, so we don't have to do it by hand.
This is not really a "golf" since I added more lines than I removed, but these more general constructions will be needed at some point anyway (my use case was distribution theory) so I'm doing some proactive golfing :smile:.
@@ -110,9 +110,8 @@ begin
{ mfld_set_tac },
{ intros b hb, ext L v,
simp only [continuous_linear_map_coord_change, continuous_linear_equiv.coe_coe,
- continuous_linear_equiv.arrow_congrₛₗ_apply, linear_equiv.to_fun_eq_coe, coe_comp',
- continuous_linear_equiv.arrow_congrSL_apply, comp_apply, function.comp, compSL_apply,
- flip_apply, continuous_linear_equiv.symm_symm] },
+ continuous_linear_equiv.arrow_congrSL_apply,
+ comp_apply, function.comp, compSL_apply, flip_apply, continuous_linear_equiv.symm_symm] },
end
omit iσ
@@ -206,8 +205,7 @@ lemma continuous_linear_map_coord_change_apply (b : B)
begin
ext v,
simp_rw [continuous_linear_map_coord_change, continuous_linear_equiv.coe_coe,
- continuous_linear_equiv.arrow_congrSL_apply, linear_equiv.to_fun_eq_coe,
- continuous_linear_equiv.arrow_congrₛₗ_apply,
+ continuous_linear_equiv.arrow_congrSL_apply,
continuous_linear_map_apply, continuous_linear_map_symm_apply' σ e₁ e₂ hb.1,
comp_apply, continuous_linear_equiv.coe_coe, continuous_linear_equiv.symm_symm,
trivialization.continuous_linear_map_at_apply, trivialization.symmL_apply],
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
-/
import Topology.VectorBundle.Basic
-import Analysis.NormedSpace.OperatorNorm
+import Analysis.NormedSpace.OperatorNorm.Basic
#align_import topology.vector_bundle.hom from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -198,7 +198,7 @@ theorem continuousLinearMap_apply (p : TotalSpace (F₁ →SL[σ] F₂) fun x =>
#print Pretrivialization.continuousLinearMap_symm_apply /-
theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
- (continuousLinearMap σ e₁ e₂).toLocalEquiv.symm p =
+ (continuousLinearMap σ e₁ e₂).toPartialEquiv.symm p =
⟨p.1,
ContinuousLinearMap.comp (e₂.symmL 𝕜₂ p.1)
(p.2.comp (e₁.continuousLinearMapAt 𝕜₁ p.1 : E₁ p.1 →L[𝕜₁] F₁) : E₁ p.1 →SL[σ] F₂)⟩ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright © 2022 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
-/
-import Mathbin.Topology.VectorBundle.Basic
-import Mathbin.Analysis.NormedSpace.OperatorNorm
+import Topology.VectorBundle.Basic
+import Analysis.NormedSpace.OperatorNorm
#align_import topology.vector_bundle.hom from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright © 2022 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
-
-! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.VectorBundle.Basic
import Mathbin.Analysis.NormedSpace.OperatorNorm
+#align_import topology.vector_bundle.hom from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
+
/-!
# The vector bundle of continuous (semi)linear maps
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a51edf13debfcbe223fa06b1cb353b9ed9751cc
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit 8905e5ed90859939681a725b00f6063e65096d95
+! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.NormedSpace.OperatorNorm
/-!
# The vector bundle of continuous (semi)linear maps
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We define the (topological) vector bundle of continuous (semi)linear maps between two vector bundles
over the same base.
mathlib commit https://github.com/leanprover-community/mathlib/commit/8905e5ed90859939681a725b00f6063e65096d95
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
+! leanprover-community/mathlib commit 8905e5ed90859939681a725b00f6063e65096d95
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -120,7 +120,6 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
· mfld_set_tac
· intro b hb; ext L v
simp only [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
- ContinuousLinearEquiv.arrowCongrₛₗ_apply, LinearEquiv.toFun_eq_coe, coe_comp',
ContinuousLinearEquiv.arrowCongrSL_apply, comp_apply, Function.comp, compSL_apply, flip_apply,
ContinuousLinearEquiv.symm_symm]
#align pretrivialization.continuous_on_continuous_linear_map_coord_change Pretrivialization.continuousOn_continuousLinearMapCoordChange
@@ -224,8 +223,7 @@ theorem continuousLinearMapCoordChange_apply (b : B)
by
ext v
simp_rw [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
- ContinuousLinearEquiv.arrowCongrSL_apply, LinearEquiv.toFun_eq_coe,
- ContinuousLinearEquiv.arrowCongrₛₗ_apply, continuous_linear_map_apply,
+ ContinuousLinearEquiv.arrowCongrSL_apply, continuous_linear_map_apply,
continuous_linear_map_symm_apply' σ e₁ e₂ hb.1, comp_apply, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply,
Trivialization.symmL_apply]
mathlib commit https://github.com/leanprover-community/mathlib/commit/5dc6092d09e5e489106865241986f7f2ad28d4c8
@@ -57,6 +57,7 @@ variable {F₁ : Type _} [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E
variable {F₂ : Type _} [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type _)
[∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace F₂ E₂)]
+#print Bundle.ContinuousLinearMap /-
/-- A reducible type synonym for the bundle of continuous (semi)linear maps. For some reason, it
helps with instance search.
@@ -66,13 +67,16 @@ Porting note: after the port is done, we may want to remove this definition.
protected def Bundle.ContinuousLinearMap [∀ x, TopologicalSpace (E₁ x)]
[∀ x, TopologicalSpace (E₂ x)] : ∀ x : B, Type _ := fun x => E₁ x →SL[σ] E₂ x
#align bundle.continuous_linear_map Bundle.ContinuousLinearMap
+-/
+#print Bundle.ContinuousLinearMap.module /-
-- Porting note: possibly remove after the port
instance Bundle.ContinuousLinearMap.module [∀ x, TopologicalSpace (E₁ x)]
[∀ x, TopologicalSpace (E₂ x)] [∀ x, TopologicalAddGroup (E₂ x)]
[∀ x, ContinuousConstSMul 𝕜₂ (E₂ x)] : ∀ x, Module 𝕜₂ (Bundle.ContinuousLinearMap σ E₁ E₂ x) :=
fun _ => inferInstance
#align bundle.continuous_linear_map.module Bundle.ContinuousLinearMap.module
+-/
variable {E₁ E₂}
@@ -81,6 +85,7 @@ variable [TopologicalSpace B] (e₁ e₁' : Trivialization F₁ (π F₁ E₁))
namespace Pretrivialization
+#print Pretrivialization.continuousLinearMapCoordChange /-
/-- Assume `eᵢ` and `eᵢ'` are trivializations of the bundles `Eᵢ` over base `B` with fiber `Fᵢ`
(`i ∈ {1,2}`), then `continuous_linear_map_coord_change σ e₁ e₁' e₂ e₂'` is the coordinate change
function between the two induced (pre)trivializations
@@ -91,6 +96,7 @@ def continuousLinearMapCoordChange [e₁.isLinear 𝕜₁] [e₁'.isLinear 𝕜
((e₁'.coordChangeL 𝕜₁ e₁ b).symm.arrowCongrSL (e₂.coordChangeL 𝕜₂ e₂' b) :
(F₁ →SL[σ] F₂) ≃L[𝕜₂] F₁ →SL[σ] F₂)
#align pretrivialization.continuous_linear_map_coord_change Pretrivialization.continuousLinearMapCoordChange
+-/
variable {σ e₁ e₁' e₂ e₂'}
@@ -98,6 +104,7 @@ variable [∀ x, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
variable [∀ x, TopologicalSpace (E₂ x)] [ita : ∀ x, TopologicalAddGroup (E₂ x)] [FiberBundle F₂ E₂]
+#print Pretrivialization.continuousOn_continuousLinearMapCoordChange /-
theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E₁] [VectorBundle 𝕜₂ F₂ E₂]
[MemTrivializationAtlas e₁] [MemTrivializationAtlas e₁'] [MemTrivializationAtlas e₂]
[MemTrivializationAtlas e₂'] :
@@ -117,10 +124,12 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
ContinuousLinearEquiv.arrowCongrSL_apply, comp_apply, Function.comp, compSL_apply, flip_apply,
ContinuousLinearEquiv.symm_symm]
#align pretrivialization.continuous_on_continuous_linear_map_coord_change Pretrivialization.continuousOn_continuousLinearMapCoordChange
+-/
variable (σ e₁ e₁' e₂ e₂') [e₁.isLinear 𝕜₁] [e₁'.isLinear 𝕜₁] [e₂.isLinear 𝕜₂] [e₂'.isLinear 𝕜₂]
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Pretrivialization.continuousLinearMap /-
/-- Given trivializations `e₁`, `e₂` for vector bundles `E₁`, `E₂` over a base `B`,
`pretrivialization.continuous_linear_map σ e₁ e₂` is the induced pretrivialization for the
continuous `σ`-semilinear maps from `E₁` to `E₂`. That is, the map which will later become a
@@ -158,7 +167,9 @@ def continuousLinearMap :
target_eq := rfl
proj_toFun := fun ⟨x, f⟩ h => rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
+-/
+#print Pretrivialization.continuousLinearMap.isLinear /-
-- porting note: todo: see if Lean 4 can generate this instance without a hint
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).isLinear 𝕜₂
@@ -174,7 +185,9 @@ instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, Co
simp_rw [smul_comp, comp_smulₛₗ, RingHom.id_apply]
rfl }
#align pretrivialization.continuous_linear_map.is_linear Pretrivialization.continuousLinearMap.isLinear
+-/
+#print Pretrivialization.continuousLinearMap_apply /-
theorem continuousLinearMap_apply (p : TotalSpace (F₁ →SL[σ] F₂) fun x => E₁ x →SL[σ] E₂ x) :
(continuousLinearMap σ e₁ e₂) p =
⟨p.1,
@@ -182,7 +195,9 @@ theorem continuousLinearMap_apply (p : TotalSpace (F₁ →SL[σ] F₂) fun x =>
(p.2.comp (e₁.symmL 𝕜₁ p.1 : F₁ →L[𝕜₁] E₁ p.1) : F₁ →SL[σ] E₂ p.1)⟩ :=
rfl
#align pretrivialization.continuous_linear_map_apply Pretrivialization.continuousLinearMap_apply
+-/
+#print Pretrivialization.continuousLinearMap_symm_apply /-
theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
(continuousLinearMap σ e₁ e₂).toLocalEquiv.symm p =
⟨p.1,
@@ -190,14 +205,18 @@ theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
(p.2.comp (e₁.continuousLinearMapAt 𝕜₁ p.1 : E₁ p.1 →L[𝕜₁] F₁) : E₁ p.1 →SL[σ] F₂)⟩ :=
rfl
#align pretrivialization.continuous_linear_map_symm_apply Pretrivialization.continuousLinearMap_symm_apply
+-/
+#print Pretrivialization.continuousLinearMap_symm_apply' /-
theorem continuousLinearMap_symm_apply' {b : B} (hb : b ∈ e₁.baseSet ∩ e₂.baseSet)
(L : F₁ →SL[σ] F₂) :
(continuousLinearMap σ e₁ e₂).symm b L =
(e₂.symmL 𝕜₂ b).comp (L.comp <| e₁.continuousLinearMapAt 𝕜₁ b) :=
by rw [symm_apply]; rfl; exact hb
#align pretrivialization.continuous_linear_map_symm_apply' Pretrivialization.continuousLinearMap_symm_apply'
+-/
+#print Pretrivialization.continuousLinearMapCoordChange_apply /-
theorem continuousLinearMapCoordChange_apply (b : B)
(hb : b ∈ e₁.baseSet ∩ e₂.baseSet ∩ (e₁'.baseSet ∩ e₂'.baseSet)) (L : F₁ →SL[σ] F₂) :
continuousLinearMapCoordChange σ e₁ e₁' e₂ e₂' b L =
@@ -214,6 +233,7 @@ theorem continuousLinearMapCoordChange_apply (b : B)
e₂'.coe_linear_map_at_of_mem hb.2.2]
exacts [⟨hb.2.1, hb.1.1⟩, ⟨hb.1.2, hb.2.2⟩]
#align pretrivialization.continuous_linear_map_coord_change_apply Pretrivialization.continuousLinearMapCoordChange_apply
+-/
end Pretrivialization
@@ -227,6 +247,7 @@ variable [∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂] [VectorB
variable [∀ x, TopologicalAddGroup (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
+#print Bundle.ContinuousLinearMap.vectorPrebundle /-
/-- The continuous `σ`-semilinear maps between two topological vector bundles form a
`vector_prebundle` (this is an auxiliary construction for the
`vector_bundle` instance, in which the pretrivializations are collated but no topology
@@ -273,28 +294,36 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
rw [Trivialization.linearMapAt_def_of_mem _ (mem_base_set_trivialization_at _ _ _)]
rfl
#align bundle.continuous_linear_map.vector_prebundle Bundle.ContinuousLinearMap.vectorPrebundle
+-/
+#print Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace /-
/-- Topology on the total space of the continuous `σ`-semilinear_maps between two "normable" vector
bundles over the same base. -/
instance Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace :
TopologicalSpace (TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).totalSpaceTopology
#align bundle.continuous_linear_map.topological_space_total_space Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace
+-/
+#print Bundle.ContinuousLinearMap.fiberBundle /-
/-- The continuous `σ`-semilinear_maps between two vector bundles form a fiber bundle. -/
instance Bundle.ContinuousLinearMap.fiberBundle :
FiberBundle (F₁ →SL[σ] F₂) fun x => E₁ x →SL[σ] E₂ x :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toFiberBundle
#align bundle.continuous_linear_map.fiber_bundle Bundle.ContinuousLinearMap.fiberBundle
+-/
+#print Bundle.ContinuousLinearMap.vectorBundle /-
/-- The continuous `σ`-semilinear_maps between two vector bundles form a vector bundle. -/
instance Bundle.ContinuousLinearMap.vectorBundle :
VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toVectorBundle
#align bundle.continuous_linear_map.vector_bundle Bundle.ContinuousLinearMap.vectorBundle
+-/
variable (e₁ e₂) [he₁ : MemTrivializationAtlas e₁] [he₂ : MemTrivializationAtlas e₂] {F₁ E₁ F₂ E₂}
+#print Trivialization.continuousLinearMap /-
/-- Given trivializations `e₁`, `e₂` in the atlas for vector bundles `E₁`, `E₂` over a base `B`,
the induced trivialization for the continuous `σ`-semilinear maps from `E₁` to `E₂`,
whose base set is `e₁.base_set ∩ e₂.base_set`. -/
@@ -302,22 +331,28 @@ def Trivialization.continuousLinearMap :
Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :=
VectorPrebundle.trivializationOfMemPretrivializationAtlas _ ⟨e₁, e₂, he₁, he₂, rfl⟩
#align trivialization.continuous_linear_map Trivialization.continuousLinearMap
+-/
+#print Bundle.ContinuousLinearMap.memTrivializationAtlas /-
instance Bundle.ContinuousLinearMap.memTrivializationAtlas :
MemTrivializationAtlas
(e₁.ContinuousLinearMap σ e₂ :
Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)))
where out := ⟨_, ⟨e₁, e₂, by infer_instance, by infer_instance, rfl⟩, rfl⟩
#align bundle.continuous_linear_map.mem_trivialization_atlas Bundle.ContinuousLinearMap.memTrivializationAtlas
+-/
variable {e₁ e₂}
+#print Trivialization.baseSet_continuousLinearMap /-
@[simp]
theorem Trivialization.baseSet_continuousLinearMap :
(e₁.ContinuousLinearMap σ e₂).baseSet = e₁.baseSet ∩ e₂.baseSet :=
rfl
#align trivialization.base_set_continuous_linear_map Trivialization.baseSet_continuousLinearMap
+-/
+#print Trivialization.continuousLinearMap_apply /-
theorem Trivialization.continuousLinearMap_apply
(p : TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :
e₁.ContinuousLinearMap σ e₂ p =
@@ -326,14 +361,18 @@ theorem Trivialization.continuousLinearMap_apply
(p.2.comp (e₁.symmL 𝕜₁ p.1 : F₁ →L[𝕜₁] E₁ p.1) : F₁ →SL[σ] E₂ p.1)⟩ :=
rfl
#align trivialization.continuous_linear_map_apply Trivialization.continuousLinearMap_apply
+-/
+#print hom_trivializationAt_apply /-
theorem hom_trivializationAt_apply (x₀ : B)
(x : TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :
trivializationAt (F₁ →SL[σ] F₂) (fun x => E₁ x →SL[σ] E₂ x) x₀ x =
⟨x.1, inCoordinates F₁ E₁ F₂ E₂ x₀ x.1 x₀ x.1 x.2⟩ :=
rfl
#align hom_trivialization_at_apply hom_trivializationAt_apply
+-/
+#print hom_trivializationAt_source /-
@[simp, mfld_simps]
theorem hom_trivializationAt_source (x₀ : B) :
(trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) x₀).source =
@@ -341,12 +380,15 @@ theorem hom_trivializationAt_source (x₀ : B) :
((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) :=
rfl
#align hom_trivialization_at_source hom_trivializationAt_source
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print hom_trivializationAt_target /-
@[simp, mfld_simps]
theorem hom_trivializationAt_target (x₀ : B) :
(trivializationAt (F₁ →SL[σ] F₂) (fun x => E₁ x →SL[σ] E₂ x) x₀).target =
((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) ×ˢ Set.univ :=
rfl
#align hom_trivialization_at_target hom_trivializationAt_target
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5dc6092d09e5e489106865241986f7f2ad28d4c8
@@ -255,7 +255,7 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
⟨continuous_linear_map_coord_change σ e₁ e₁' e₂ e₂',
continuous_on_continuous_linear_map_coord_change,
continuous_linear_map_coord_change_apply σ e₁ e₁' e₂ e₂'⟩
- totalSpaceₓ_mk_inducing := by
+ totalSpace_mk_inducing := by
intro b
let L₁ : E₁ b ≃L[𝕜₁] F₁ :=
(trivialization_at F₁ E₁ b).continuousLinearEquivAt 𝕜₁ b
mathlib commit https://github.com/leanprover-community/mathlib/commit/728ef9dbb281241906f25cbeb30f90d83e0bb451
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
+! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -46,69 +46,38 @@ open scoped Bundle
open Bundle Set ContinuousLinearMap
-section Defs
-
-variable {𝕜₁ 𝕜₂ : Type _} [NormedField 𝕜₁] [NormedField 𝕜₂]
-
-variable (σ : 𝕜₁ →+* 𝕜₂)
+variable {𝕜₁ : Type _} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type _} [NontriviallyNormedField 𝕜₂]
+ (σ : 𝕜₁ →+* 𝕜₂) [iσ : RingHomIsometric σ]
variable {B : Type _}
-variable (F₁ : Type _) (E₁ : B → Type _) [∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)]
-
-variable [∀ x, TopologicalSpace (E₁ x)]
+variable {F₁ : Type _} [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type _)
+ [∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace F₁ E₁)]
-variable (F₂ : Type _) (E₂ : B → Type _) [∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)]
+variable {F₂ : Type _} [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type _)
+ [∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace F₂ E₂)]
-variable [∀ x, TopologicalSpace (E₂ x)]
+/-- A reducible type synonym for the bundle of continuous (semi)linear maps. For some reason, it
+helps with instance search.
--- In this definition we require the scalar rings `𝕜₁` and `𝕜₂` to be normed fields, although
--- something much weaker (maybe `comm_semiring`) would suffice mathematically -- this is because of
--- a typeclass inference bug with pi-types:
--- https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/vector.20bundles.20--.20typeclass.20inference.20issue
-/-- The bundle of continuous `σ`-semilinear maps between the topological vector bundles `E₁` and
-`E₂`. This is a type synonym for `λ x, E₁ x →SL[σ] E₂ x`.
-
-We intentionally add `F₁` and `F₂` as arguments to this type, so that instances on this type
-(that depend on `F₁` and `F₂`) actually refer to `F₁` and `F₂`. -/
-@[nolint unused_arguments]
-protected def Bundle.ContinuousLinearMap (x : B) : Type _ :=
- E₁ x →SL[σ] E₂ x
-deriving Inhabited
+Porting note: after the port is done, we may want to remove this definition.
+-/
+@[reducible]
+protected def Bundle.ContinuousLinearMap [∀ x, TopologicalSpace (E₁ x)]
+ [∀ x, TopologicalSpace (E₂ x)] : ∀ x : B, Type _ := fun x => E₁ x →SL[σ] E₂ x
#align bundle.continuous_linear_map Bundle.ContinuousLinearMap
-instance Bundle.ContinuousLinearMap.addMonoidHomClass (x : B) :
- AddMonoidHomClass (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) (E₁ x) (E₂ x) := by
- delta_instance bundle.continuous_linear_map
-#align bundle.continuous_linear_map.add_monoid_hom_class Bundle.ContinuousLinearMap.addMonoidHomClass
-
-variable [∀ x, TopologicalAddGroup (E₂ x)]
-
-instance (x : B) : TopologicalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) := by
- delta_instance bundle.continuous_linear_map
-
-instance (x : B) : AddCommMonoid (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) := by
- delta_instance bundle.continuous_linear_map
-
-variable [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
-
-instance (x : B) : Module 𝕜₂ (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) := by
- delta_instance bundle.continuous_linear_map
-
-end Defs
-
-variable {𝕜₁ : Type _} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type _} [NontriviallyNormedField 𝕜₂]
- (σ : 𝕜₁ →+* 𝕜₂) [iσ : RingHomIsometric σ]
-
-variable {B : Type _} [TopologicalSpace B]
-
-variable (F₁ : Type _) [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type _)
- [∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace E₁)]
+-- Porting note: possibly remove after the port
+instance Bundle.ContinuousLinearMap.module [∀ x, TopologicalSpace (E₁ x)]
+ [∀ x, TopologicalSpace (E₂ x)] [∀ x, TopologicalAddGroup (E₂ x)]
+ [∀ x, ContinuousConstSMul 𝕜₂ (E₂ x)] : ∀ x, Module 𝕜₂ (Bundle.ContinuousLinearMap σ E₁ E₂ x) :=
+ fun _ => inferInstance
+#align bundle.continuous_linear_map.module Bundle.ContinuousLinearMap.module
-variable (F₂ : Type _) [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type _)
- [∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace E₂)]
+variable {E₁ E₂}
-variable {F₁ E₁ F₂ E₂} (e₁ e₁' : Trivialization F₁ (π E₁)) (e₂ e₂' : Trivialization F₂ (π E₂))
+variable [TopologicalSpace B] (e₁ e₁' : Trivialization F₁ (π F₁ E₁))
+ (e₂ e₂' : Trivialization F₂ (π F₂ E₂))
namespace Pretrivialization
@@ -158,7 +127,7 @@ continuous `σ`-semilinear maps from `E₁` to `E₂`. That is, the map which wi
trivialization, after the bundle of continuous semilinear maps is equipped with the right
topological vector bundle structure. -/
def continuousLinearMap :
- Pretrivialization (F₁ →SL[σ] F₂) (π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂))
+ Pretrivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂))
where
toFun p :=
⟨p.1,
@@ -190,6 +159,7 @@ def continuousLinearMap :
proj_toFun := fun ⟨x, f⟩ h => rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
+-- porting note: todo: see if Lean 4 can generate this instance without a hint
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).isLinear 𝕜₂
where linear x h :=
@@ -205,7 +175,7 @@ instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, Co
rfl }
#align pretrivialization.continuous_linear_map.is_linear Pretrivialization.continuousLinearMap.isLinear
-theorem continuousLinearMap_apply (p : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
+theorem continuousLinearMap_apply (p : TotalSpace (F₁ →SL[σ] F₂) fun x => E₁ x →SL[σ] E₂ x) :
(continuousLinearMap σ e₁ e₂) p =
⟨p.1,
ContinuousLinearMap.comp (e₂.continuousLinearMapAt 𝕜₂ p.1)
@@ -231,7 +201,7 @@ theorem continuousLinearMap_symm_apply' {b : B} (hb : b ∈ e₁.baseSet ∩ e
theorem continuousLinearMapCoordChange_apply (b : B)
(hb : b ∈ e₁.baseSet ∩ e₂.baseSet ∩ (e₁'.baseSet ∩ e₂'.baseSet)) (L : F₁ →SL[σ] F₂) :
continuousLinearMapCoordChange σ e₁ e₁' e₂ e₂' b L =
- (continuousLinearMap σ e₁' e₂' (totalSpaceMk b ((continuousLinearMap σ e₁ e₂).symm b L))).2 :=
+ (continuousLinearMap σ e₁' e₂' ⟨b, (continuousLinearMap σ e₁ e₂).symm b L⟩).2 :=
by
ext v
simp_rw [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
@@ -240,7 +210,6 @@ theorem continuousLinearMapCoordChange_apply (b : B)
continuous_linear_map_symm_apply' σ e₁ e₂ hb.1, comp_apply, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply,
Trivialization.symmL_apply]
- dsimp only [total_space_mk]
rw [e₂.coord_changeL_apply e₂', e₁'.coord_changeL_apply e₁, e₁.coe_linear_map_at_of_mem hb.1.1,
e₂'.coe_linear_map_at_of_mem hb.2.2]
exacts [⟨hb.2.1, hb.1.1⟩, ⟨hb.1.2, hb.2.2⟩]
@@ -263,11 +232,11 @@ variable [∀ x, TopologicalAddGroup (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E
`vector_bundle` instance, in which the pretrivializations are collated but no topology
on the total space is yet provided). -/
def Bundle.ContinuousLinearMap.vectorPrebundle :
- VectorPrebundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)
+ VectorPrebundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)
where
pretrivializationAtlas :=
{e |
- ∃ (e₁ : Trivialization F₁ (π E₁)) (e₂ : Trivialization F₂ (π E₂)) (_ :
+ ∃ (e₁ : Trivialization F₁ (π F₁ E₁)) (e₂ : Trivialization F₂ (π F₂ E₂)) (_ :
MemTrivializationAtlas e₁) (_ : MemTrivializationAtlas e₂),
e = Pretrivialization.continuousLinearMap σ e₁ e₂}
pretrivialization_linear' := by
@@ -286,9 +255,8 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
⟨continuous_linear_map_coord_change σ e₁ e₁' e₂ e₂',
continuous_on_continuous_linear_map_coord_change,
continuous_linear_map_coord_change_apply σ e₁ e₁' e₂ e₂'⟩
- totalSpaceMk_inducing := by
+ totalSpaceₓ_mk_inducing := by
intro b
- dsimp [Bundle.ContinuousLinearMap.topologicalSpace, Bundle.ContinuousLinearMap]
let L₁ : E₁ b ≃L[𝕜₁] F₁ :=
(trivialization_at F₁ E₁ b).continuousLinearEquivAt 𝕜₁ b
(mem_base_set_trivialization_at _ _ _)
@@ -309,19 +277,19 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
/-- Topology on the total space of the continuous `σ`-semilinear_maps between two "normable" vector
bundles over the same base. -/
instance Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace :
- TopologicalSpace (TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :=
+ TopologicalSpace (TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).totalSpaceTopology
#align bundle.continuous_linear_map.topological_space_total_space Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace
/-- The continuous `σ`-semilinear_maps between two vector bundles form a fiber bundle. -/
instance Bundle.ContinuousLinearMap.fiberBundle :
- FiberBundle (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) :=
+ FiberBundle (F₁ →SL[σ] F₂) fun x => E₁ x →SL[σ] E₂ x :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toFiberBundle
#align bundle.continuous_linear_map.fiber_bundle Bundle.ContinuousLinearMap.fiberBundle
/-- The continuous `σ`-semilinear_maps between two vector bundles form a vector bundle. -/
instance Bundle.ContinuousLinearMap.vectorBundle :
- VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) :=
+ VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toVectorBundle
#align bundle.continuous_linear_map.vector_bundle Bundle.ContinuousLinearMap.vectorBundle
@@ -331,14 +299,14 @@ variable (e₁ e₂) [he₁ : MemTrivializationAtlas e₁] [he₂ : MemTrivializ
the induced trivialization for the continuous `σ`-semilinear maps from `E₁` to `E₂`,
whose base set is `e₁.base_set ∩ e₂.base_set`. -/
def Trivialization.continuousLinearMap :
- Trivialization (F₁ →SL[σ] F₂) (π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :=
+ Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :=
VectorPrebundle.trivializationOfMemPretrivializationAtlas _ ⟨e₁, e₂, he₁, he₂, rfl⟩
#align trivialization.continuous_linear_map Trivialization.continuousLinearMap
instance Bundle.ContinuousLinearMap.memTrivializationAtlas :
MemTrivializationAtlas
(e₁.ContinuousLinearMap σ e₂ :
- Trivialization (F₁ →SL[σ] F₂) (π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)))
+ Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)))
where out := ⟨_, ⟨e₁, e₂, by infer_instance, by infer_instance, rfl⟩, rfl⟩
#align bundle.continuous_linear_map.mem_trivialization_atlas Bundle.ContinuousLinearMap.memTrivializationAtlas
@@ -351,7 +319,7 @@ theorem Trivialization.baseSet_continuousLinearMap :
#align trivialization.base_set_continuous_linear_map Trivialization.baseSet_continuousLinearMap
theorem Trivialization.continuousLinearMap_apply
- (p : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
+ (p : TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :
e₁.ContinuousLinearMap σ e₂ p =
⟨p.1,
(e₂.continuousLinearMapAt 𝕜₂ p.1 : _ →L[𝕜₂] _).comp
@@ -360,16 +328,16 @@ theorem Trivialization.continuousLinearMap_apply
#align trivialization.continuous_linear_map_apply Trivialization.continuousLinearMap_apply
theorem hom_trivializationAt_apply (x₀ : B)
- (x : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
- trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀ x =
+ (x : TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :
+ trivializationAt (F₁ →SL[σ] F₂) (fun x => E₁ x →SL[σ] E₂ x) x₀ x =
⟨x.1, inCoordinates F₁ E₁ F₂ E₂ x₀ x.1 x₀ x.1 x.2⟩ :=
rfl
#align hom_trivialization_at_apply hom_trivializationAt_apply
@[simp, mfld_simps]
theorem hom_trivializationAt_source (x₀ : B) :
- (trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀).source =
- π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) ⁻¹'
+ (trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) x₀).source =
+ π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) ⁻¹'
((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) :=
rfl
#align hom_trivialization_at_source hom_trivializationAt_source
@@ -377,7 +345,7 @@ theorem hom_trivializationAt_source (x₀ : B) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@[simp, mfld_simps]
theorem hom_trivializationAt_target (x₀ : B) :
- (trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀).target =
+ (trivializationAt (F₁ →SL[σ] F₂) (fun x => E₁ x →SL[σ] E₂ x) x₀).target =
((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) ×ˢ Set.univ :=
rfl
#align hom_trivialization_at_target hom_trivializationAt_target
mathlib commit https://github.com/leanprover-community/mathlib/commit/93f880918cb51905fd51b76add8273cbc27718ab
@@ -322,7 +322,7 @@ instance Bundle.ContinuousLinearMap.fiberBundle :
/-- The continuous `σ`-semilinear_maps between two vector bundles form a vector bundle. -/
instance Bundle.ContinuousLinearMap.vectorBundle :
VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) :=
- (Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).to_vectorBundle
+ (Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toVectorBundle
#align bundle.continuous_linear_map.vector_bundle Bundle.ContinuousLinearMap.vectorBundle
variable (e₁ e₂) [he₁ : MemTrivializationAtlas e₁] [he₂ : MemTrivializationAtlas e₂] {F₁ E₁ F₂ E₂}
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -142,7 +142,7 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
refine' ((h₁.comp_continuous_on (h₄.mono _)).clm_comp (h₂.comp_continuous_on (h₃.mono _))).congr _
· mfld_set_tac
· mfld_set_tac
- · intro b hb; ext (L v)
+ · intro b hb; ext L v
simp only [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.arrowCongrₛₗ_apply, LinearEquiv.toFun_eq_coe, coe_comp',
ContinuousLinearEquiv.arrowCongrSL_apply, comp_apply, Function.comp, compSL_apply, flip_apply,
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -62,8 +62,6 @@ variable (F₂ : Type _) (E₂ : B → Type _) [∀ x, AddCommGroup (E₂ x)] [
variable [∀ x, TopologicalSpace (E₂ x)]
-include F₁ F₂
-
-- In this definition we require the scalar rings `𝕜₁` and `𝕜₂` to be normed fields, although
-- something much weaker (maybe `comm_semiring`) would suffice mathematically -- this is because of
-- a typeclass inference bug with pi-types:
@@ -131,8 +129,6 @@ variable [∀ x, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
variable [∀ x, TopologicalSpace (E₂ x)] [ita : ∀ x, TopologicalAddGroup (E₂ x)] [FiberBundle F₂ E₂]
-include iσ
-
theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E₁] [VectorBundle 𝕜₂ F₂ E₂]
[MemTrivializationAtlas e₁] [MemTrivializationAtlas e₁'] [MemTrivializationAtlas e₂]
[MemTrivializationAtlas e₂'] :
@@ -153,8 +149,6 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
ContinuousLinearEquiv.symm_symm]
#align pretrivialization.continuous_on_continuous_linear_map_coord_change Pretrivialization.continuousOn_continuousLinearMapCoordChange
-omit iσ
-
variable (σ e₁ e₁' e₂ e₂') [e₁.isLinear 𝕜₁] [e₁'.isLinear 𝕜₁] [e₂.isLinear 𝕜₂] [e₂'.isLinear 𝕜₂]
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -196,8 +190,6 @@ def continuousLinearMap :
proj_toFun := fun ⟨x, f⟩ h => rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
-include ita
-
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).isLinear 𝕜₂
where linear x h :=
@@ -213,8 +205,6 @@ instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, Co
rfl }
#align pretrivialization.continuous_linear_map.is_linear Pretrivialization.continuousLinearMap.isLinear
-omit ita
-
theorem continuousLinearMap_apply (p : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
(continuousLinearMap σ e₁ e₂) p =
⟨p.1,
@@ -231,8 +221,6 @@ theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
rfl
#align pretrivialization.continuous_linear_map_symm_apply Pretrivialization.continuousLinearMap_symm_apply
-include ita
-
theorem continuousLinearMap_symm_apply' {b : B} (hb : b ∈ e₁.baseSet ∩ e₂.baseSet)
(L : F₁ →SL[σ] F₂) :
(continuousLinearMap σ e₁ e₂).symm b L =
@@ -270,8 +258,6 @@ variable [∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂] [VectorB
variable [∀ x, TopologicalAddGroup (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
-include iσ
-
/-- The continuous `σ`-semilinear maps between two topological vector bundles form a
`vector_prebundle` (this is an auxiliary construction for the
`vector_bundle` instance, in which the pretrivializations are collated but no topology
@@ -341,8 +327,6 @@ instance Bundle.ContinuousLinearMap.vectorBundle :
variable (e₁ e₂) [he₁ : MemTrivializationAtlas e₁] [he₂ : MemTrivializationAtlas e₂] {F₁ E₁ F₂ E₂}
-include he₁ he₂
-
/-- Given trivializations `e₁`, `e₂` in the atlas for vector bundles `E₁`, `E₂` over a base `B`,
the induced trivialization for the continuous `σ`-semilinear maps from `E₁` to `E₂`,
whose base set is `e₁.base_set ∩ e₂.base_set`. -/
@@ -375,8 +359,6 @@ theorem Trivialization.continuousLinearMap_apply
rfl
#align trivialization.continuous_linear_map_apply Trivialization.continuousLinearMap_apply
-omit he₁ he₂
-
theorem hom_trivializationAt_apply (x₀ : B)
(x : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀ x =
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -280,10 +280,10 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
VectorPrebundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)
where
pretrivializationAtlas :=
- { e |
+ {e |
∃ (e₁ : Trivialization F₁ (π E₁)) (e₂ : Trivialization F₂ (π E₂)) (_ :
MemTrivializationAtlas e₁) (_ : MemTrivializationAtlas e₂),
- e = Pretrivialization.continuousLinearMap σ e₁ e₂ }
+ e = Pretrivialization.continuousLinearMap σ e₁ e₂}
pretrivialization_linear' := by
rintro _ ⟨e₁, he₁, e₂, he₂, rfl⟩
infer_instance
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -75,7 +75,8 @@ We intentionally add `F₁` and `F₂` as arguments to this type, so that instan
(that depend on `F₁` and `F₂`) actually refer to `F₁` and `F₂`. -/
@[nolint unused_arguments]
protected def Bundle.ContinuousLinearMap (x : B) : Type _ :=
- E₁ x →SL[σ] E₂ x deriving Inhabited
+ E₁ x →SL[σ] E₂ x
+deriving Inhabited
#align bundle.continuous_linear_map Bundle.ContinuousLinearMap
instance Bundle.ContinuousLinearMap.addMonoidHomClass (x : B) :
@@ -254,7 +255,7 @@ theorem continuousLinearMapCoordChange_apply (b : B)
dsimp only [total_space_mk]
rw [e₂.coord_changeL_apply e₂', e₁'.coord_changeL_apply e₁, e₁.coe_linear_map_at_of_mem hb.1.1,
e₂'.coe_linear_map_at_of_mem hb.2.2]
- exacts[⟨hb.2.1, hb.1.1⟩, ⟨hb.1.2, hb.2.2⟩]
+ exacts [⟨hb.2.1, hb.1.1⟩, ⟨hb.1.2, hb.2.2⟩]
#align pretrivialization.continuous_linear_map_coord_change_apply Pretrivialization.continuousLinearMapCoordChange_apply
end Pretrivialization
@@ -280,8 +281,8 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
where
pretrivializationAtlas :=
{ e |
- ∃ (e₁ : Trivialization F₁ (π E₁))(e₂ : Trivialization F₂ (π E₂))(_ :
- MemTrivializationAtlas e₁)(_ : MemTrivializationAtlas e₂),
+ ∃ (e₁ : Trivialization F₁ (π E₁)) (e₂ : Trivialization F₂ (π E₂)) (_ :
+ MemTrivializationAtlas e₁) (_ : MemTrivializationAtlas e₂),
e = Pretrivialization.continuousLinearMap σ e₁ e₂ }
pretrivialization_linear' := by
rintro _ ⟨e₁, he₁, e₂, he₂, rfl⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/88a563b158f59f2983cfad685664da95502e8cdd
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit d2d964c64f8ddcccd6704a731c41f95d13e72f5c
+! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -22,11 +22,11 @@ their respective scalar fields, we define `bundle.continuous_linear_map σ F₁
type synonym for `λ x, E₁ x →SL[σ] E₂ x`. If the `E₁` and `E₂` are vector bundles with model fibers
`F₁` and `F₂`, then this will be a vector bundle with fiber `F₁ →SL[σ] F₂`.
-The topology is constructed from the trivializations for `E₁` and `E₂` and the norm-topology on the
-model fiber `F₁ →SL[𝕜] F₂` using the `vector_prebundle` construction. This is a bit awkward because
-it introduces a spurious (?) dependence on the normed space structure of the model fiber, rather
-than just its topological vector space structure; this might be fixable now that we have
-`continuous_linear_map.strong_topology`.
+The topology on the total space is constructed from the trivializations for `E₁` and `E₂` and the
+norm-topology on the model fiber `F₁ →SL[𝕜] F₂` using the `vector_prebundle` construction. This is
+a bit awkward because it introduces a dependence on the normed space structure of the model fibers,
+rather than just their topological vector space structure; it is not clear whether this is
+necessary.
Similar constructions should be possible (but are yet to be formalized) for tensor products of
topological vector bundles, exterior algebras, and so on, where again the topology can be defined
@@ -54,11 +54,11 @@ variable (σ : 𝕜₁ →+* 𝕜₂)
variable {B : Type _}
-variable (F₁ : Type _) (E₁ : B → Type _) [∀ x, AddCommMonoid (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)]
+variable (F₁ : Type _) (E₁ : B → Type _) [∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)]
variable [∀ x, TopologicalSpace (E₁ x)]
-variable (F₂ : Type _) (E₂ : B → Type _) [∀ x, AddCommMonoid (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)]
+variable (F₂ : Type _) (E₂ : B → Type _) [∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)]
variable [∀ x, TopologicalSpace (E₂ x)]
@@ -83,7 +83,10 @@ instance Bundle.ContinuousLinearMap.addMonoidHomClass (x : B) :
delta_instance bundle.continuous_linear_map
#align bundle.continuous_linear_map.add_monoid_hom_class Bundle.ContinuousLinearMap.addMonoidHomClass
-variable [∀ x, ContinuousAdd (E₂ x)]
+variable [∀ x, TopologicalAddGroup (E₂ x)]
+
+instance (x : B) : TopologicalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) := by
+ delta_instance bundle.continuous_linear_map
instance (x : B) : AddCommMonoid (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) := by
delta_instance bundle.continuous_linear_map
@@ -101,17 +104,15 @@ variable {𝕜₁ : Type _} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type _}
variable {B : Type _} [TopologicalSpace B]
variable (F₁ : Type _) [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type _)
- [∀ x, AddCommMonoid (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace E₁)]
+ [∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace E₁)]
variable (F₂ : Type _) [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type _)
- [∀ x, AddCommMonoid (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace E₂)]
+ [∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace E₂)]
variable {F₁ E₁ F₂ E₂} (e₁ e₁' : Trivialization F₁ (π E₁)) (e₂ e₂' : Trivialization F₂ (π E₂))
namespace Pretrivialization
-include iσ
-
/-- Assume `eᵢ` and `eᵢ'` are trivializations of the bundles `Eᵢ` over base `B` with fiber `Fᵢ`
(`i ∈ {1,2}`), then `continuous_linear_map_coord_change σ e₁ e₁' e₂ e₂'` is the coordinate change
function between the two induced (pre)trivializations
@@ -127,7 +128,9 @@ variable {σ e₁ e₁' e₂ e₂'}
variable [∀ x, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
-variable [∀ x, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂]
+variable [∀ x, TopologicalSpace (E₂ x)] [ita : ∀ x, TopologicalAddGroup (E₂ x)] [FiberBundle F₂ E₂]
+
+include iσ
theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E₁] [VectorBundle 𝕜₂ F₂ E₂]
[MemTrivializationAtlas e₁] [MemTrivializationAtlas e₁'] [MemTrivializationAtlas e₂]
@@ -144,6 +147,7 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
· mfld_set_tac
· intro b hb; ext (L v)
simp only [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
+ ContinuousLinearEquiv.arrowCongrₛₗ_apply, LinearEquiv.toFun_eq_coe, coe_comp',
ContinuousLinearEquiv.arrowCongrSL_apply, comp_apply, Function.comp, compSL_apply, flip_apply,
ContinuousLinearEquiv.symm_symm]
#align pretrivialization.continuous_on_continuous_linear_map_coord_change Pretrivialization.continuousOn_continuousLinearMapCoordChange
@@ -161,8 +165,14 @@ topological vector bundle structure. -/
def continuousLinearMap :
Pretrivialization (F₁ →SL[σ] F₂) (π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂))
where
- toFun p := ⟨p.1, (e₂.continuousLinearMapAt 𝕜₂ p.1).comp <| p.2.comp <| e₁.symmL 𝕜₁ p.1⟩
- invFun p := ⟨p.1, (e₂.symmL 𝕜₂ p.1).comp <| p.2.comp <| e₁.continuousLinearMapAt 𝕜₁ p.1⟩
+ toFun p :=
+ ⟨p.1,
+ ContinuousLinearMap.comp (e₂.continuousLinearMapAt 𝕜₂ p.1)
+ (p.2.comp (e₁.symmL 𝕜₁ p.1 : F₁ →L[𝕜₁] E₁ p.1) : F₁ →SL[σ] E₂ p.1)⟩
+ invFun p :=
+ ⟨p.1,
+ ContinuousLinearMap.comp (e₂.symmL 𝕜₂ p.1)
+ (p.2.comp (e₁.continuousLinearMapAt 𝕜₁ p.1 : E₁ p.1 →L[𝕜₁] F₁) : E₁ p.1 →SL[σ] F₂)⟩
source := Bundle.TotalSpace.proj ⁻¹' (e₁.baseSet ∩ e₂.baseSet)
target := (e₁.baseSet ∩ e₂.baseSet) ×ˢ Set.univ
map_source' := fun ⟨x, L⟩ h => ⟨h, Set.mem_univ _⟩
@@ -185,6 +195,8 @@ def continuousLinearMap :
proj_toFun := fun ⟨x, f⟩ h => rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
+include ita
+
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).isLinear 𝕜₂
where linear x h :=
@@ -200,19 +212,25 @@ instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, Co
rfl }
#align pretrivialization.continuous_linear_map.is_linear Pretrivialization.continuousLinearMap.isLinear
+omit ita
+
theorem continuousLinearMap_apply (p : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
(continuousLinearMap σ e₁ e₂) p =
- ⟨p.1, (e₂.continuousLinearMapAt 𝕜₂ p.1).comp <| p.2.comp <| e₁.symmL 𝕜₁ p.1⟩ :=
+ ⟨p.1,
+ ContinuousLinearMap.comp (e₂.continuousLinearMapAt 𝕜₂ p.1)
+ (p.2.comp (e₁.symmL 𝕜₁ p.1 : F₁ →L[𝕜₁] E₁ p.1) : F₁ →SL[σ] E₂ p.1)⟩ :=
rfl
#align pretrivialization.continuous_linear_map_apply Pretrivialization.continuousLinearMap_apply
theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
(continuousLinearMap σ e₁ e₂).toLocalEquiv.symm p =
- ⟨p.1, (e₂.symmL 𝕜₂ p.1).comp <| p.2.comp <| e₁.continuousLinearMapAt 𝕜₁ p.1⟩ :=
+ ⟨p.1,
+ ContinuousLinearMap.comp (e₂.symmL 𝕜₂ p.1)
+ (p.2.comp (e₁.continuousLinearMapAt 𝕜₁ p.1 : E₁ p.1 →L[𝕜₁] F₁) : E₁ p.1 →SL[σ] F₂)⟩ :=
rfl
#align pretrivialization.continuous_linear_map_symm_apply Pretrivialization.continuousLinearMap_symm_apply
-variable [∀ x, ContinuousAdd (E₂ x)]
+include ita
theorem continuousLinearMap_symm_apply' {b : B} (hb : b ∈ e₁.baseSet ∩ e₂.baseSet)
(L : F₁ →SL[σ] F₂) :
@@ -221,14 +239,15 @@ theorem continuousLinearMap_symm_apply' {b : B} (hb : b ∈ e₁.baseSet ∩ e
by rw [symm_apply]; rfl; exact hb
#align pretrivialization.continuous_linear_map_symm_apply' Pretrivialization.continuousLinearMap_symm_apply'
-theorem continuousLinearMapCoordChange_apply [RingHomIsometric σ] (b : B)
+theorem continuousLinearMapCoordChange_apply (b : B)
(hb : b ∈ e₁.baseSet ∩ e₂.baseSet ∩ (e₁'.baseSet ∩ e₂'.baseSet)) (L : F₁ →SL[σ] F₂) :
continuousLinearMapCoordChange σ e₁ e₁' e₂ e₂' b L =
(continuousLinearMap σ e₁' e₂' (totalSpaceMk b ((continuousLinearMap σ e₁ e₂).symm b L))).2 :=
by
ext v
simp_rw [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
- ContinuousLinearEquiv.arrowCongrSL_apply, continuous_linear_map_apply,
+ ContinuousLinearEquiv.arrowCongrSL_apply, LinearEquiv.toFun_eq_coe,
+ ContinuousLinearEquiv.arrowCongrₛₗ_apply, continuous_linear_map_apply,
continuous_linear_map_symm_apply' σ e₁ e₂ hb.1, comp_apply, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply,
Trivialization.symmL_apply]
@@ -242,13 +261,15 @@ end Pretrivialization
open Pretrivialization
-variable (F₁ E₁ F₂ E₂) [RingHomIsometric σ]
+variable (F₁ E₁ F₂ E₂)
variable [∀ x : B, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁] [VectorBundle 𝕜₁ F₁ E₁]
variable [∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂] [VectorBundle 𝕜₂ F₂ E₂]
-variable [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
+variable [∀ x, TopologicalAddGroup (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
+
+include iσ
/-- The continuous `σ`-semilinear maps between two topological vector bundles form a
`vector_prebundle` (this is an auxiliary construction for the
@@ -278,15 +299,26 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
⟨continuous_linear_map_coord_change σ e₁ e₁' e₂ e₂',
continuous_on_continuous_linear_map_coord_change,
continuous_linear_map_coord_change_apply σ e₁ e₁' e₂ e₂'⟩
+ totalSpaceMk_inducing := by
+ intro b
+ dsimp [Bundle.ContinuousLinearMap.topologicalSpace, Bundle.ContinuousLinearMap]
+ let L₁ : E₁ b ≃L[𝕜₁] F₁ :=
+ (trivialization_at F₁ E₁ b).continuousLinearEquivAt 𝕜₁ b
+ (mem_base_set_trivialization_at _ _ _)
+ let L₂ : E₂ b ≃L[𝕜₂] F₂ :=
+ (trivialization_at F₂ E₂ b).continuousLinearEquivAt 𝕜₂ b
+ (mem_base_set_trivialization_at _ _ _)
+ let φ : (E₁ b →SL[σ] E₂ b) ≃L[𝕜₂] F₁ →SL[σ] F₂ := L₁.arrow_congrSL L₂
+ have : Inducing fun x => (b, φ x) := inducing_const_prod.mpr φ.to_homeomorph.inducing
+ convert this
+ ext f
+ · rfl
+ ext x
+ dsimp [φ, Pretrivialization.continuousLinearMap_apply]
+ rw [Trivialization.linearMapAt_def_of_mem _ (mem_base_set_trivialization_at _ _ _)]
+ rfl
#align bundle.continuous_linear_map.vector_prebundle Bundle.ContinuousLinearMap.vectorPrebundle
-/-- Topology on the continuous `σ`-semilinear_maps between the respective fibers at a point of two
-"normable" vector bundles over the same base. Here "normable" means that the bundles have fibers
-modelled on normed spaces `F₁`, `F₂` respectively. The topology we put on the continuous
-`σ`-semilinear_maps is the topology coming from the operator norm on maps from `F₁` to `F₂`. -/
-instance (x : B) : TopologicalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x) :=
- (Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).fiberTopology x
-
/-- Topology on the total space of the continuous `σ`-semilinear_maps between two "normable" vector
bundles over the same base. -/
instance Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace :
@@ -336,7 +368,9 @@ theorem Trivialization.baseSet_continuousLinearMap :
theorem Trivialization.continuousLinearMap_apply
(p : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
e₁.ContinuousLinearMap σ e₂ p =
- ⟨p.1, (e₂.continuousLinearMapAt 𝕜₂ p.1).comp <| p.2.comp <| e₁.symmL 𝕜₁ p.1⟩ :=
+ ⟨p.1,
+ (e₂.continuousLinearMapAt 𝕜₂ p.1 : _ →L[𝕜₂] _).comp
+ (p.2.comp (e₁.symmL 𝕜₁ p.1 : F₁ →L[𝕜₁] E₁ p.1) : F₁ →SL[σ] E₂ p.1)⟩ :=
rfl
#align trivialization.continuous_linear_map_apply Trivialization.continuousLinearMap_apply
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -42,7 +42,7 @@ using a norm on the fiber model if this helps.
noncomputable section
-open Bundle
+open scoped Bundle
open Bundle Set ContinuousLinearMap
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -142,8 +142,7 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
refine' ((h₁.comp_continuous_on (h₄.mono _)).clm_comp (h₂.comp_continuous_on (h₃.mono _))).congr _
· mfld_set_tac
· mfld_set_tac
- · intro b hb
- ext (L v)
+ · intro b hb; ext (L v)
simp only [continuous_linear_map_coord_change, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.arrowCongrSL_apply, comp_apply, Function.comp, compSL_apply, flip_apply,
ContinuousLinearEquiv.symm_symm]
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -137,8 +137,8 @@ theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E
by
have h₁ := (compSL F₁ F₂ F₂ σ (RingHom.id 𝕜₂)).Continuous
have h₂ := (ContinuousLinearMap.flip (compSL F₁ F₁ F₂ (RingHom.id 𝕜₁) σ)).Continuous
- have h₃ := continuousOn_coord_change 𝕜₁ e₁' e₁
- have h₄ := continuousOn_coord_change 𝕜₂ e₂ e₂'
+ have h₃ := continuousOn_coordChange 𝕜₁ e₁' e₁
+ have h₄ := continuousOn_coordChange 𝕜₂ e₂ e₂'
refine' ((h₁.comp_continuous_on (h₄.mono _)).clm_comp (h₂.comp_continuous_on (h₃.mono _))).congr _
· mfld_set_tac
· mfld_set_tac
mathlib commit https://github.com/leanprover-community/mathlib/commit/d2d964c64f8ddcccd6704a731c41f95d13e72f5c
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
+! leanprover-community/mathlib commit d2d964c64f8ddcccd6704a731c41f95d13e72f5c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -56,11 +56,11 @@ variable {B : Type _}
variable (F₁ : Type _) (E₁ : B → Type _) [∀ x, AddCommMonoid (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)]
-variable [∀ x : B, TopologicalSpace (E₁ x)]
+variable [∀ x, TopologicalSpace (E₁ x)]
variable (F₂ : Type _) (E₂ : B → Type _) [∀ x, AddCommMonoid (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)]
-variable [∀ x : B, TopologicalSpace (E₂ x)]
+variable [∀ x, TopologicalSpace (E₂ x)]
include F₁ F₂
@@ -74,7 +74,7 @@ include F₁ F₂
We intentionally add `F₁` and `F₂` as arguments to this type, so that instances on this type
(that depend on `F₁` and `F₂`) actually refer to `F₁` and `F₂`. -/
@[nolint unused_arguments]
-def Bundle.ContinuousLinearMap (x : B) : Type _ :=
+protected def Bundle.ContinuousLinearMap (x : B) : Type _ :=
E₁ x →SL[σ] E₂ x deriving Inhabited
#align bundle.continuous_linear_map Bundle.ContinuousLinearMap
@@ -125,9 +125,9 @@ def continuousLinearMapCoordChange [e₁.isLinear 𝕜₁] [e₁'.isLinear 𝕜
variable {σ e₁ e₁' e₂ e₂'}
-variable [∀ x : B, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
+variable [∀ x, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
-variable [∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂]
+variable [∀ x, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂]
theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E₁] [VectorBundle 𝕜₂ F₂ E₂]
[MemTrivializationAtlas e₁] [MemTrivializationAtlas e₁'] [MemTrivializationAtlas e₂]
@@ -341,3 +341,28 @@ theorem Trivialization.continuousLinearMap_apply
rfl
#align trivialization.continuous_linear_map_apply Trivialization.continuousLinearMap_apply
+omit he₁ he₂
+
+theorem hom_trivializationAt_apply (x₀ : B)
+ (x : TotalSpace (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂)) :
+ trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀ x =
+ ⟨x.1, inCoordinates F₁ E₁ F₂ E₂ x₀ x.1 x₀ x.1 x.2⟩ :=
+ rfl
+#align hom_trivialization_at_apply hom_trivializationAt_apply
+
+@[simp, mfld_simps]
+theorem hom_trivializationAt_source (x₀ : B) :
+ (trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀).source =
+ π (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) ⁻¹'
+ ((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) :=
+ rfl
+#align hom_trivialization_at_source hom_trivializationAt_source
+
+/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+@[simp, mfld_simps]
+theorem hom_trivializationAt_target (x₀ : B) :
+ (trivializationAt (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) x₀).target =
+ ((trivializationAt F₁ E₁ x₀).baseSet ∩ (trivializationAt F₂ E₂ x₀).baseSet) ×ˢ Set.univ :=
+ rfl
+#align hom_trivialization_at_target hom_trivializationAt_target
+
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -304,7 +304,7 @@ instance Bundle.ContinuousLinearMap.fiberBundle :
/-- The continuous `σ`-semilinear_maps between two vector bundles form a vector bundle. -/
instance Bundle.ContinuousLinearMap.vectorBundle :
VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂) :=
- (Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toVectorBundle
+ (Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).to_vectorBundle
#align bundle.continuous_linear_map.vector_bundle Bundle.ContinuousLinearMap.vectorBundle
variable (e₁ e₂) [he₁ : MemTrivializationAtlas e₁] [he₂ : MemTrivializationAtlas e₂] {F₁ E₁ F₂ E₂}
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit 87f3aec412c51c63e9623034de001d783f00cc65
+! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -24,7 +24,7 @@ type synonym for `λ x, E₁ x →SL[σ] E₂ x`. If the `E₁` and `E₂` are v
The topology is constructed from the trivializations for `E₁` and `E₂` and the norm-topology on the
model fiber `F₁ →SL[𝕜] F₂` using the `vector_prebundle` construction. This is a bit awkward because
-it introduces a spurious (?) dependence on the normed space structure of the model fibre, rather
+it introduces a spurious (?) dependence on the normed space structure of the model fiber, rather
than just its topological vector space structure; this might be fixable now that we have
`continuous_linear_map.strong_topology`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -46,7 +46,6 @@ variable {𝕜₁ : Type*} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type*} [
(σ : 𝕜₁ →+* 𝕜₂) [iσ : RingHomIsometric σ]
variable {B : Type*}
-
variable {F₁ : Type*} [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type*)
[∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace F₁ E₁)]
@@ -71,7 +70,6 @@ instance Bundle.ContinuousLinearMap.module [∀ x, TopologicalSpace (E₁ x)]
#align bundle.continuous_linear_map.module Bundle.ContinuousLinearMap.module
variable {E₁ E₂}
-
variable [TopologicalSpace B] (e₁ e₁' : Trivialization F₁ (π F₁ E₁))
(e₂ e₂' : Trivialization F₂ (π F₂ E₂))
@@ -89,9 +87,7 @@ def continuousLinearMapCoordChange [e₁.IsLinear 𝕜₁] [e₁'.IsLinear 𝕜
#align pretrivialization.continuous_linear_map_coord_change Pretrivialization.continuousLinearMapCoordChange
variable {σ e₁ e₁' e₂ e₂'}
-
variable [∀ x, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁]
-
variable [∀ x, TopologicalSpace (E₂ x)] [ita : ∀ x, TopologicalAddGroup (E₂ x)] [FiberBundle F₂ E₂]
theorem continuousOn_continuousLinearMapCoordChange [VectorBundle 𝕜₁ F₁ E₁] [VectorBundle 𝕜₂ F₂ E₂]
@@ -206,11 +202,8 @@ end Pretrivialization
open Pretrivialization
variable (F₁ E₁ F₂ E₂)
-
variable [∀ x : B, TopologicalSpace (E₁ x)] [FiberBundle F₁ E₁] [VectorBundle 𝕜₁ F₁ E₁]
-
variable [∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₂ E₂] [VectorBundle 𝕜₂ F₂ E₂]
-
variable [∀ x, TopologicalAddGroup (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)]
/-- The continuous `σ`-semilinear maps between two topological vector bundles form a
@@ -153,7 +153,7 @@ def continuousLinearMap :
proj_toFun _ _ := rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
--- Porting note: todo: see if Lean 4 can generate this instance without a hint
+-- Porting note (#11215): TODO: see if Lean 4 can generate this instance without a hint
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).IsLinear 𝕜₂ where
linear x _ :=
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -153,7 +153,7 @@ def continuousLinearMap :
proj_toFun _ _ := rfl
#align pretrivialization.continuous_linear_map Pretrivialization.continuousLinearMap
--- porting note: todo: see if Lean 4 can generate this instance without a hint
+-- Porting note: todo: see if Lean 4 can generate this instance without a hint
instance continuousLinearMap.isLinear [∀ x, ContinuousAdd (E₂ x)] [∀ x, ContinuousSMul 𝕜₂ (E₂ x)] :
(Pretrivialization.continuousLinearMap σ e₁ e₂).IsLinear 𝕜₂ where
linear x _ :=
Split the 2300-line behemoth OperatorNorm.lean
into 8 smaller files, of which the largest is 600 lines.
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
-/
import Mathlib.Topology.VectorBundle.Basic
-import Mathlib.Analysis.NormedSpace.OperatorNorm
#align_import topology.vector_bundle.hom from "leanprover-community/mathlib"@"8905e5ed90859939681a725b00f6063e65096d95"
@@ -61,7 +61,7 @@ Porting note: after the port is done, we may want to remove this definition.
-/
@[reducible]
protected def Bundle.ContinuousLinearMap [∀ x, TopologicalSpace (E₁ x)]
- [∀ x, TopologicalSpace (E₂ x)] : ∀ _ : B, Type _ := fun x => E₁ x →SL[σ] E₂ x
+ [∀ x, TopologicalSpace (E₂ x)] : B → Type _ := fun x => E₁ x →SL[σ] E₂ x
#align bundle.continuous_linear_map Bundle.ContinuousLinearMap
-- Porting note: possibly remove after the port
The current name is misleading: there's no open set involved; it's just an equivalence between subsets of domain and target. zulip discussion
PEquiv
is similarly named: this is fine, as they're different designs for the same concept.
Co-authored-by: Michael Rothgang <rothgami@math.hu-berlin.de>
@@ -175,7 +175,7 @@ theorem continuousLinearMap_apply (p : TotalSpace (F₁ →SL[σ] F₂) fun x =>
#align pretrivialization.continuous_linear_map_apply Pretrivialization.continuousLinearMap_apply
theorem continuousLinearMap_symm_apply (p : B × (F₁ →SL[σ] F₂)) :
- (continuousLinearMap σ e₁ e₂).toLocalEquiv.symm p =
+ (continuousLinearMap σ e₁ e₂).toPartialEquiv.symm p =
⟨p.1, .comp (e₂.symmL 𝕜₂ p.1) (p.2.comp (e₁.continuousLinearMapAt 𝕜₁ p.1))⟩ :=
rfl
#align pretrivialization.continuous_linear_map_symm_apply Pretrivialization.continuousLinearMap_symm_apply
@@ -287,8 +287,8 @@ def Trivialization.continuousLinearMap :
instance Bundle.ContinuousLinearMap.memTrivializationAtlas :
MemTrivializationAtlas
(e₁.continuousLinearMap σ e₂ :
- Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)))
- where out := ⟨_, ⟨e₁, e₂, by infer_instance, by infer_instance, rfl⟩, rfl⟩
+ Trivialization (F₁ →SL[σ] F₂) (π (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂))) where
+ out := ⟨_, ⟨e₁, e₂, by infer_instance, by infer_instance, rfl⟩, rfl⟩
#align bundle.continuous_linear_map.mem_trivialization_atlas Bundle.ContinuousLinearMap.memTrivializationAtlas
variable {e₁ e₂}
@@ -255,20 +255,20 @@ def Bundle.ContinuousLinearMap.vectorPrebundle :
rfl
#align bundle.continuous_linear_map.vector_prebundle Bundle.ContinuousLinearMap.vectorPrebundle
-/-- Topology on the total space of the continuous `σ`-semilinear_maps between two "normable" vector
+/-- Topology on the total space of the continuous `σ`-semilinear maps between two "normable" vector
bundles over the same base. -/
instance Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace :
TopologicalSpace (TotalSpace (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂)) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).totalSpaceTopology
#align bundle.continuous_linear_map.topological_space_total_space Bundle.ContinuousLinearMap.topologicalSpaceTotalSpace
-/-- The continuous `σ`-semilinear_maps between two vector bundles form a fiber bundle. -/
+/-- The continuous `σ`-semilinear maps between two vector bundles form a fiber bundle. -/
instance Bundle.ContinuousLinearMap.fiberBundle :
FiberBundle (F₁ →SL[σ] F₂) fun x => E₁ x →SL[σ] E₂ x :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toFiberBundle
#align bundle.continuous_linear_map.fiber_bundle Bundle.ContinuousLinearMap.fiberBundle
-/-- The continuous `σ`-semilinear_maps between two vector bundles form a vector bundle. -/
+/-- The continuous `σ`-semilinear maps between two vector bundles form a vector bundle. -/
instance Bundle.ContinuousLinearMap.vectorBundle :
VectorBundle 𝕜₂ (F₁ →SL[σ] F₂) (Bundle.ContinuousLinearMap σ E₁ E₂) :=
(Bundle.ContinuousLinearMap.vectorPrebundle σ F₁ E₁ F₂ E₂).toVectorBundle
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -14,7 +14,7 @@ import Mathlib.Analysis.NormedSpace.OperatorNorm
We define the (topological) vector bundle of continuous (semi)linear maps between two vector bundles
over the same base.
-Given bundles `E₁ E₂ : B → Type _`, normed spaces `F₁` and `F₂`, and a ring-homomorphism `σ` between
+Given bundles `E₁ E₂ : B → Type*`, normed spaces `F₁` and `F₂`, and a ring-homomorphism `σ` between
their respective scalar fields, we define `Bundle.ContinuousLinearMap σ F₁ E₁ F₂ E₂ x` to be a
type synonym for `fun x ↦ E₁ x →SL[σ] E₂ x`. If the `E₁` and `E₂` are vector bundles with model
fibers `F₁` and `F₂`, then this will be a vector bundle with fiber `F₁ →SL[σ] F₂`.
@@ -43,15 +43,15 @@ open scoped Bundle
open Bundle Set ContinuousLinearMap
-variable {𝕜₁ : Type _} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type _} [NontriviallyNormedField 𝕜₂]
+variable {𝕜₁ : Type*} [NontriviallyNormedField 𝕜₁] {𝕜₂ : Type*} [NontriviallyNormedField 𝕜₂]
(σ : 𝕜₁ →+* 𝕜₂) [iσ : RingHomIsometric σ]
-variable {B : Type _}
+variable {B : Type*}
-variable {F₁ : Type _} [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type _)
+variable {F₁ : Type*} [NormedAddCommGroup F₁] [NormedSpace 𝕜₁ F₁] (E₁ : B → Type*)
[∀ x, AddCommGroup (E₁ x)] [∀ x, Module 𝕜₁ (E₁ x)] [TopologicalSpace (TotalSpace F₁ E₁)]
-variable {F₂ : Type _} [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type _)
+variable {F₂ : Type*} [NormedAddCommGroup F₂] [NormedSpace 𝕜₂ F₂] (E₂ : B → Type*)
[∀ x, AddCommGroup (E₂ x)] [∀ x, Module 𝕜₂ (E₂ x)] [TopologicalSpace (TotalSpace F₂ E₂)]
/-- A reducible type synonym for the bundle of continuous (semi)linear maps. For some reason, it
@@ -2,15 +2,12 @@
Copyright © 2022 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
-
-! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit 8905e5ed90859939681a725b00f6063e65096d95
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.VectorBundle.Basic
import Mathlib.Analysis.NormedSpace.OperatorNorm
+#align_import topology.vector_bundle.hom from "leanprover-community/mathlib"@"8905e5ed90859939681a725b00f6063e65096d95"
+
/-!
# The vector bundle of continuous (semi)linear maps
Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Floris van Doorn
! This file was ported from Lean 3 source module topology.vector_bundle.hom
-! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
+! leanprover-community/mathlib commit 8905e5ed90859939681a725b00f6063e65096d95
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -196,8 +196,7 @@ theorem continuousLinearMapCoordChange_apply (b : B)
(continuousLinearMap σ e₁' e₂' ⟨b, (continuousLinearMap σ e₁ e₂).symm b L⟩).2 := by
ext v
simp_rw [continuousLinearMapCoordChange, ContinuousLinearEquiv.coe_coe,
- ContinuousLinearEquiv.arrowCongrSL_apply, LinearEquiv.toFun_eq_coe,
- ContinuousLinearEquiv.arrowCongrₛₗ_apply, continuousLinearMap_apply,
+ ContinuousLinearEquiv.arrowCongrSL_apply, continuousLinearMap_apply,
continuousLinearMap_symm_apply' σ e₁ e₂ hb.1, comp_apply, ContinuousLinearEquiv.coe_coe,
ContinuousLinearEquiv.symm_symm, Trivialization.continuousLinearMapAt_apply,
Trivialization.symmL_apply]
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file