Zulip Chat Archive
Stream: general
Topic: Bundle definitions rationale
Dominic Steinitz (Apr 03 2025 at 12:41):
I was expecting a vector bundle to be an extension of a fibre bundle (with the fibres being vector spaces and the coordinate change functions being linear on the fibres) but if I look at the definition here
then it seems to start from scratch. Here's the definition of a fibre bundle for comparison (well FiberBundelCore
to be precise).
What's the rationale behind this?
I have a fibre bundle defined by FiberBundleCore
and know that the fibres are vector spaces and that the coordinate change functions are linear. Maybe there is some theorem that says under those circumstances a FiberBundleCore
is a VectorBundleCore
but I have yet to find it.
Thanks :smile:
Sébastien Gouëzel (Apr 03 2025 at 12:55):
Vector bundles (not the core versions) are indeed defined as extensions of fiber bundles. On the other hand, the data you need to define vector bundles and fiber bundles are of a different nature: for vector bundles, you need continuous linear equivs that should depend continuously on the base point, while for fiber bundles you need partial homeomorphisms sending fibers to fibers. So if you defined VectorBundleCore
as an extension of FiberBundleCore
, you would have additional fields (the partial homeos) that you would need to define every time you create a VectorBundleCore
-- while we know they're not necessary because they can be derived from the other fields. So it's more economical for the user to define things as we do.
On the other hand, nothing prevents you from constructing a function building a VectorBundleCore
out of a FiberBundleCore
. But note that the change of coordinates being linear in the fibers is not enough, you also need to check continuity with respect to the basepoint for the operator norm topology.
Sébastien Gouëzel (Apr 03 2025 at 12:58):
In fact, I think having a way to build a VectorBundleCore
out of a FiberBundleCore
plus some properties is definitely a good idea, and a gap in our current API.
Dominic Steinitz (Apr 03 2025 at 12:59):
Sébastien Gouëzel said:
In fact, I think having a way to build a
VectorBundleCore
out of aFiberBundleCore
plus some properties is definitely a good idea, and a gap in our current API.
I need that and so am happy to attempt doing that but I will need some guidance.
Dominic Steinitz (Apr 14 2025 at 06:04):
How about this?
/-
Copyright (c) 2025 Dominic Steinitz. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Dominic Steinitz
-/
import Mathlib
set_option linter.style.longLine false
set_option linter.style.lambdaSyntax false
set_option linter.style.cdot false
open Bundle Topology Set
def VtoF
{R : Type*} [NontriviallyNormedField R]
{B : Type*} [TopologicalSpace B]
{F : Type*} [NormedAddCommGroup F] [NormedSpace R F]
{ι : Type*}
(Z : VectorBundleCore R B F ι) : FiberBundleCore ι B F := {
baseSet := Z.baseSet
isOpen_baseSet := Z.isOpen_baseSet
indexAt := Z.indexAt
mem_baseSet_at := Z.mem_baseSet_at
coordChange := fun i j b => Z.coordChange i j b
coordChange_self := Z.coordChange_self
continuousOn_coordChange := fun i j =>
isBoundedBilinearMap_apply.continuous.comp_continuousOn
((Z.continuousOn_coordChange i j).prod_map continuousOn_id)
coordChange_comp := Z.coordChange_comp
}
def FtoV {R : Type*} [NontriviallyNormedField R]
{B : Type*} [TopologicalSpace B]
{F : Type*} [NormedAddCommGroup F] [NormedSpace R F]
{ι : Type*}
(Z : FiberBundleCore ι B F)
(coordChangeLin : ∀ (i j : ι) (b : B), F →L[R] F)
(h_coord_eq : ∀ i j b, ⇑(coordChangeLin i j b) = Z.coordChange i j b)
(h_coord_cont : ∀ i j, ContinuousOn (fun b ↦ coordChangeLin i j b) (Z.baseSet i ∩ Z.baseSet j)) :
VectorBundleCore R B F ι := {
baseSet := Z.baseSet
isOpen_baseSet := Z.isOpen_baseSet
indexAt := Z.indexAt
mem_baseSet_at := Z.mem_baseSet_at
coordChange := coordChangeLin
coordChange_self := by
intros i b hb x
rw [h_coord_eq]
exact Z.coordChange_self i b hb x
continuousOn_coordChange := by
intro i j
apply ContinuousOn.congr (h_coord_cont i j)
intro b hb
exact rfl
coordChange_comp := by
simp only [h_coord_eq]
exact Z.coordChange_comp
}
Last updated: May 02 2025 at 03:31 UTC