# mathlib3documentation

topology.vector_bundle.hom

# 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.

Given bundles E₁ E₂ : B → Type*, normed spaces F₁ and F₂, and a ring-homomorphism σ between their respective scalar fields, we define bundle.continuous_linear_map σ F₁ E₁ F₂ E₂ x to be a 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 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 using a norm on the fiber model if this helps.

## Main Definitions #

• bundle.continuous_linear_map.vector_bundle: continuous semilinear maps between vector bundles form a vector bundle.
@[protected, reducible]
def bundle.continuous_linear_map {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [Π (x : B), topological_space (E₁ x)] [Π (x : B), topological_space (E₂ x)] (x : B) :
Type (max u_5 u_7)

A reducible type synonym for the bundle of continuous (semi)linear maps. For some reason, it helps with instance search.

Porting note: after the port is done, we may want to remove this definition.

Equations
• E₂ = λ (x : B), E₁ x →SL[σ] E₂ x
@[protected, instance]
def bundle.continuous_linear_map.module {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [Π (x : B), topological_space (E₁ x)] [Π (x : B), topological_space (E₂ x)] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] (x : B) :
module 𝕜₂ E₂ x)
Equations
noncomputable def pretrivialization.continuous_linear_map_coord_change {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] (e₁ e₁' : bundle.total_space.proj) (e₂ e₂' : bundle.total_space.proj) [ e₁] [ e₁'] [ e₂] [ e₂'] (b : B) :
(F₁ →SL[σ] F₂) →L[𝕜₂] F₁ →SL[σ] F₂

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 pretrivialization.continuous_linear_map σ e₁ e₂ and pretrivialization.continuous_linear_map σ e₁' e₂' of bundle.continuous_linear_map.

Equations
theorem pretrivialization.continuous_on_continuous_linear_map_coord_change {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} {σ : 𝕜₁ →+* 𝕜₂} [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] {e₁ e₁' : bundle.total_space.proj} {e₂ e₂' : bundle.total_space.proj} [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₁ E₁] [ F₂ E₂]  :
continuous_on e₂') (e₁.base_set e₂.base_set (e₁'.base_set e₂'.base_set))
noncomputable def pretrivialization.continuous_linear_map {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ e₁] [ e₂] :

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 trivialization, after the bundle of continuous semilinear maps is equipped with the right topological vector bundle structure.

Equations
Instances for pretrivialization.continuous_linear_map
@[protected, instance]
def pretrivialization.continuous_linear_map.is_linear {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ita : (x : B), topological_add_group (E₂ x)] [ E₂] [ e₁] [ e₂] [ (x : B), has_continuous_add (E₂ x)] [ (x : B), (E₂ x)] :
theorem pretrivialization.continuous_linear_map_apply {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ e₁] [ e₂] (p : bundle.total_space (F₁ →SL[σ] F₂) (λ (x : B), E₁ x →SL[σ] E₂ x)) :
p = (p.proj, .comp e₁ p.proj)))
theorem pretrivialization.continuous_linear_map_symm_apply {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ e₁] [ e₂] (p : B × (F₁ →SL[σ] F₂)) :
p = {proj := p.fst, snd := e₂ p.fst).comp (p.snd.comp p.fst))}
theorem pretrivialization.continuous_linear_map_symm_apply' {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ita : (x : B), topological_add_group (E₂ x)] [ E₂] [ e₁] [ e₂] {b : B} (hb : b e₁.base_set e₂.base_set) (L : F₁ →SL[σ] F₂) :
.symm b L = e₂ b).comp (L.comp b))
theorem pretrivialization.continuous_linear_map_coord_change_apply {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] (e₁ e₁' : bundle.total_space.proj) (e₂ e₂' : bundle.total_space.proj) [Π (x : B), topological_space (E₁ x)] [ E₁] [Π (x : B), topological_space (E₂ x)] [ita : (x : B), topological_add_group (E₂ x)] [ E₂] [ e₁] [ e₁'] [ e₂] [ e₂'] (b : B) (hb : b e₁.base_set e₂.base_set (e₁'.base_set e₂'.base_set)) (L : F₁ →SL[σ] F₂) :
e₂' b) L = ( e₂') {proj := b, snd := .symm b L}).snd
noncomputable def bundle.continuous_linear_map.vector_prebundle {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} (F₁ : Type u_4) [ F₁] (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] (F₂ : Type u_6) [ F₂] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] :
(F₁ →SL[σ] F₂) E₂)

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 on the total space is yet provided).

Equations
Instances for bundle.continuous_linear_map.vector_prebundle
@[protected, instance]
noncomputable def bundle.continuous_linear_map.topological_space_total_space {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} (F₁ : Type u_4) [ F₁] (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] (F₂ : Type u_6) [ F₂] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] :

Topology on the total space of the continuous σ-semilinear_maps between two "normable" vector bundles over the same base.

Equations
@[protected, instance]
noncomputable def bundle.continuous_linear_map.fiber_bundle {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} (F₁ : Type u_4) [ F₁] (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] (F₂ : Type u_6) [ F₂] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] :
fiber_bundle (F₁ →SL[σ] F₂) (λ (x : B), E₁ x →SL[σ] E₂ x)

The continuous σ-semilinear_maps between two vector bundles form a fiber bundle.

Equations
@[protected, instance]
def bundle.continuous_linear_map.vector_bundle {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} (F₁ : Type u_4) [ F₁] (E₁ : B Type u_5) [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] (F₂ : Type u_6) [ F₂] (E₂ : B Type u_7) [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] :
(F₁ →SL[σ] F₂) E₂)

The continuous σ-semilinear_maps between two vector bundles form a vector bundle.

noncomputable def trivialization.continuous_linear_map {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] [he₁ : mem_trivialization_atlas e₁] [he₂ : mem_trivialization_atlas e₂] :

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.

Equations
Instances for trivialization.continuous_linear_map
@[protected, instance]
def bundle.continuous_linear_map.mem_trivialization_atlas {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] [he₁ : mem_trivialization_atlas e₁] [he₂ : mem_trivialization_atlas e₂] :
@[simp]
theorem trivialization.base_set_continuous_linear_map {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] [he₁ : mem_trivialization_atlas e₁] [he₂ : mem_trivialization_atlas e₂] :
e₂).base_set = e₁.base_set e₂.base_set
theorem trivialization.continuous_linear_map_apply {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] [he₁ : mem_trivialization_atlas e₁] [he₂ : mem_trivialization_atlas e₂] (p : bundle.total_space (F₁ →SL[σ] F₂) E₂)) :
e₂) p = (p.proj, .comp e₁ p.proj)))
theorem hom_trivialization_at_apply {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] (x₀ : B) (x : bundle.total_space (F₁ →SL[σ] F₂) E₂)) :
(fiber_bundle.trivialization_at (F₁ →SL[σ] F₂) (λ (x : B), E₁ x →SL[σ] E₂ x) x₀) x = (x.proj, E₂ x₀ x.proj x₀ x.proj x.snd)
@[simp]
theorem hom_trivialization_at_source {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] (x₀ : B) :
@[simp]
theorem hom_trivialization_at_target {𝕜₁ : Type u_1} {𝕜₂ : Type u_2} (σ : 𝕜₁ →+* 𝕜₂) [iσ : ring_hom_isometric σ] {B : Type u_3} {F₁ : Type u_4} [ F₁] {E₁ : B Type u_5} [Π (x : B), add_comm_group (E₁ x)] [Π (x : B), module 𝕜₁ (E₁ x)] [topological_space E₁)] {F₂ : Type u_6} [ F₂] {E₂ : B Type u_7} [Π (x : B), add_comm_group (E₂ x)] [Π (x : B), module 𝕜₂ (E₂ x)] [topological_space E₂)] [Π (x : B), topological_space (E₁ x)] [ E₁] [ F₁ E₁] [Π (x : B), topological_space (E₂ x)] [ E₂] [ F₂ E₂] [ (x : B), topological_add_group (E₂ x)] [ (x : B), (E₂ x)] (x₀ : B) :