Documentation

TauCeti.Topology.VectorBundle.Section

Continuous sections of vector bundles and partitions of unity #

This file develops the arithmetic of continuous sections of a topological vector bundle and uses it to glue local sections along a partition of unity.

A section s : Π x, E x is continuous when x ↦ TotalSpace.mk' F x (s x) is continuous. Over the base set of a trivialization e, this is equivalent to continuity of the coordinate function x ↦ (e ⟨x, s x⟩).2 (Bundle.Trivialization.continuousAt_section_iff and Bundle.Trivialization.continuousOn_section_iff), with no atlas or linearity assumption on e. Sums, finite sums, scalar multiples by continuous functions and locally finite sums of continuous sections are continuous (ContinuousAt.add_section, ContinuousAt.smul_section, ContinuousAt.sum_section, Continuous.finsum_section_of_locallyFinite; for global scalar multiples use Continuous.smul_totalSpace), and a function with closed support inside an open set multiplies a section continuous on that set into a globally continuous section (ContinuousOn.smul_section_of_tsupport).

A linear trivialization reconstructs a section from arbitrary model coordinates by Bundle.Trivialization.sectionFromCoordinates, with the two coordinate inverse laws on its base set. This construction is purely topological and requires no manifold structure.

The main result, TauCeti.exists_continuous_section_forall_mem_convex_of_local, is the bundle form of exists_continuous_forall_mem_convex_of_local: over a normal paracompact base, if convex fibrewise conditions can be met by sections that are continuous near each point, then they are met by a single global continuous section. This is how continuous fibre metrics, and other fibrewise-convex structures on bundles over paracompact bases, are constructed.

The statements and proofs are the continuous counterparts of Mathlib's smooth section API ContMDiffWithinAt.add_section, ContMDiffOn.smul_section_of_tsupport and exists_contMDiffSection_forall_mem_convex_of_local.

theorem Bundle.Trivialization.continuousWithinAt_section_iff {B : Type u_1} {F : Type u_2} [TopologicalSpace B] [TopologicalSpace F] {E : B → Type u_3} [TopologicalSpace (TotalSpace F E)] (e : Trivialization F TotalSpace.proj) {s : (x : B) → E x} {a : Set B} {x₀ : B} (hx₀ : x₀ ∈ e.baseSet) :
ContinuousWithinAt (fun (x : B) => TotalSpace.mk' F x (s x)) a x₀ ↔ ContinuousWithinAt (fun (x : B) => (↑e { proj := x, snd := s x }).2) a x₀

Within the base set of a trivialization e, a section is continuous at a point within a set exactly when its coordinate function read in e is.

theorem Bundle.Trivialization.continuousAt_section_iff {B : Type u_1} {F : Type u_2} [TopologicalSpace B] [TopologicalSpace F] {E : B → Type u_3} [TopologicalSpace (TotalSpace F E)] (e : Trivialization F TotalSpace.proj) {s : (x : B) → E x} {x₀ : B} (hx₀ : x₀ ∈ e.baseSet) :
ContinuousAt (fun (x : B) => TotalSpace.mk' F x (s x)) x₀ ↔ ContinuousAt (fun (x : B) => (↑e { proj := x, snd := s x }).2) x₀

Within the base set of a trivialization e, a section is continuous at a point exactly when its coordinate function read in e is.

theorem Bundle.Trivialization.continuousOn_section_iff {B : Type u_1} {F : Type u_2} [TopologicalSpace B] [TopologicalSpace F] {E : B → Type u_3} [TopologicalSpace (TotalSpace F E)] (e : Trivialization F TotalSpace.proj) {s : (x : B) → E x} {a : Set B} (ha : a ⊆ e.baseSet) :
ContinuousOn (fun (x : B) => TotalSpace.mk' F x (s x)) a ↔ ContinuousOn (fun (x : B) => (↑e { proj := x, snd := s x }).2) a

On a subset of the base set of a trivialization e, a section is continuous exactly when its coordinate function read in e is.

theorem ContinuousWithinAt.add_section (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {s t : (x : B) → E x} {u : Set B} {x₀ : B} (hs : ContinuousWithinAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) u x₀) (ht : ContinuousWithinAt (fun (x : B) => Bundle.TotalSpace.mk' F x (t x)) u x₀) :
ContinuousWithinAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x + t x)) u x₀

The sum of two sections continuous at a point within a set is continuous there.

theorem ContinuousAt.add_section (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {s t : (x : B) → E x} {x₀ : B} (hs : ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) x₀) (ht : ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (t x)) x₀) :
ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x + t x)) x₀

The sum of two sections continuous at a point is continuous there.

theorem ContinuousOn.add_section (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {s t : (x : B) → E x} {u : Set B} (hs : ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) u) (ht : ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (t x)) u) :
ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (s x + t x)) u

The sum of two sections continuous on a set is continuous on it.

theorem Continuous.add_section (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {s t : (x : B) → E x} (hs : Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) (ht : Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (t x)) :
Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (s x + t x)

The sum of two continuous sections is continuous.

theorem ContinuousWithinAt.smul_section {𝕜 : Type u_1} {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {f : B → 𝕜} {s : (x : B) → E x} {u : Set B} {x₀ : B} (hf : ContinuousWithinAt f u x₀) (hs : ContinuousWithinAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) u x₀) :
ContinuousWithinAt (fun (x : B) => Bundle.TotalSpace.mk' F x (f x • s x)) u x₀

The product of a scalar function and a section, both continuous at a point within a set, is continuous there.

theorem ContinuousAt.smul_section {𝕜 : Type u_1} {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {f : B → 𝕜} {s : (x : B) → E x} {x₀ : B} (hf : ContinuousAt f x₀) (hs : ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) x₀) :
ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (f x • s x)) x₀

The product of a scalar function and a section, both continuous at a point, is continuous there.

theorem ContinuousOn.smul_section {𝕜 : Type u_1} {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {f : B → 𝕜} {s : (x : B) → E x} {u : Set B} (hf : ContinuousOn f u) (hs : ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) u) :
ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (f x • s x)) u

The product of a scalar function and a section, both continuous on a set, is continuous on it.

theorem ContinuousOn.smul_section_of_tsupport {𝕜 : Type u_1} {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {f : B → 𝕜} {s : (x : B) → E x} {u : Set B} (hf : Continuous f) (hu : IsOpen u) (hfu : tsupport f ⊆ u) (hs : ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) u) :
Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (f x • s x)

The product f • s of a continuous scalar function f and a section s is continuous as soon as s is continuous on an open set containing the closed support of f. This is the vector bundle analogue of continuous_of_tsupport.

theorem ContinuousAt.sum_section (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {x₀ : B} {ι : Type u_5} {t : ι → (x : B) → E x} {I : Finset ι} (ht : ∀ i ∈ I, ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (t i x)) x₀) :
ContinuousAt (fun (x : B) => Bundle.TotalSpace.mk' F x (∑ i ∈ I, t i x)) x₀

A finite sum of sections continuous at a point is continuous there.

theorem Continuous.finsum_section_of_locallyFinite (𝕜 : Type u_1) {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle 𝕜 F E] {ι : Type u_5} {t : ι → (x : B) → E x} (hlf : LocallyFinite fun (i : ι) => {x : B | t i x ≠ 0}) (ht : ∀ (i : ι), Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (t i x)) :
Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (∑ᶠ (i : ι), t i x)

The sum of a locally finite family of continuous sections is continuous.

theorem Bundle.Trivialization.continuousOn_mk_symmL {𝕜 : Type u_1} {B : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace B] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {E : B → Type u_4} [(x : B) → AddCommGroup (E x)] [(x : B) → Module 𝕜 (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] (e : Trivialization F TotalSpace.proj) [Trivialization.IsLinear 𝕜 e] (v : F) :
ContinuousOn (fun (x : B) => TotalSpace.mk' F x ((symmL 𝕜 e x) v)) e.baseSet

The section with constant coordinates v in a linear trivialization e is continuous on the base set of e.

theorem TauCeti.exists_continuous_section_forall_mem_convex_of_local {B : Type u_1} {F : Type u_2} [TopologicalSpace B] [NormalSpace B] [ParacompactSpace B] [NormedAddCommGroup F] [NormedSpace ℝ F] {E : B → Type u_3} [(x : B) → AddCommGroup (E x)] [(x : B) → Module ℝ (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [VectorBundle ℝ F E] (t : (x : B) → Set (E x)) (ht : ∀ (x : B), Convex ℝ (t x)) (H : ∀ (x₀ : B), ∃ U ∈ nhds x₀, ∃ (s : (x : B) → E x), ContinuousOn (fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) U ∧ ∀ y ∈ U, s y ∈ t y) :
∃ (s : (x : B) → E x), (Continuous fun (x : B) => Bundle.TotalSpace.mk' F x (s x)) ∧ ∀ (x : B), s x ∈ t x

Let E be a real vector bundle over a normal paracompact space and t x ⊆ E x a family of convex sets. If near each point some section, continuous there, lies in t, then a single continuous global section lies in t everywhere. This is the vector bundle version of exists_continuous_forall_mem_convex_of_local.

noncomputable def Bundle.Trivialization.sectionFromCoordinates {𝕜 : Type u_1} {M : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace M] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {V : M → Type u_4} [(x : M) → AddCommGroup (V x)] [(x : M) → Module 𝕜 (V x)] [(x : M) → TopologicalSpace (V x)] [TopologicalSpace (TotalSpace F V)] [FiberBundle F V] (e : Trivialization F TotalSpace.proj) [Trivialization.IsLinear 𝕜 e] (A : M → F) (x : M) :
V x

Reconstruct a section from its model coordinates in a chosen frame.

Instances For
    @[simp]
    theorem Bundle.Trivialization.sectionFromCoordinates_apply {𝕜 : Type u_1} {M : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace M] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {V : M → Type u_4} [(x : M) → AddCommGroup (V x)] [(x : M) → Module 𝕜 (V x)] [(x : M) → TopologicalSpace (V x)] [TopologicalSpace (TotalSpace F V)] [FiberBundle F V] (e : Trivialization F TotalSpace.proj) [Trivialization.IsLinear 𝕜 e] (A : M → F) (x : M) :
    e.sectionFromCoordinates A x = (symmL 𝕜 e x) (A x)

    Evaluate the reconstructed section through the native inverse frame map.

    theorem Bundle.Trivialization.continuousLinearMapAt_sectionFromCoordinates {𝕜 : Type u_1} {M : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace M] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {V : M → Type u_4} [(x : M) → AddCommGroup (V x)] [(x : M) → Module 𝕜 (V x)] [(x : M) → TopologicalSpace (V x)] [TopologicalSpace (TotalSpace F V)] [FiberBundle F V] (e : Trivialization F TotalSpace.proj) [Trivialization.IsLinear 𝕜 e] (A : M → F) {x : M} (hx : x ∈ e.baseSet) :

    Reading the reconstructed section in the same frame recovers the model field.

    theorem Bundle.Trivialization.sectionFromCoordinates_continuousLinearMapAt {𝕜 : Type u_1} {M : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [TopologicalSpace M] [NormedAddCommGroup F] [NormedSpace 𝕜 F] {V : M → Type u_4} [(x : M) → AddCommGroup (V x)] [(x : M) → Module 𝕜 (V x)] [(x : M) → TopologicalSpace (V x)] [TopologicalSpace (TotalSpace F V)] [FiberBundle F V] (e : Trivialization F TotalSpace.proj) [Trivialization.IsLinear 𝕜 e] (s : (x : M) → V x) {x : M} (hx : x ∈ e.baseSet) :
    e.sectionFromCoordinates (fun (y : M) => (continuousLinearMapAt 𝕜 e y) (s y)) x = s x

    Reconstructing the coordinates of a section recovers it on the frame domain.