Vector Bundle Fibers#

The class VectorBundleFiber implements fibers over a vector bundle.

AUTHORS:

  • Michael Jung (2019): initial version

class sage.manifolds.vector_bundle_fiber.VectorBundleFiber(vector_bundle, point)[source]#

Bases: FiniteRankFreeModule

Fiber of a given vector bundle at a given point.

Let \(\pi: E \to M\) be a vector bundle of rank \(n\) over the field \(K\) (see TopologicalVectorBundle) and \(p \in M\). The fiber \(E_p\) at \(p\) is defined via \(E_p := \pi^{-1}(p)\) and takes the structure of an \(n\)-dimensional vector space over the field \(K\).

INPUT:

EXAMPLES:

A vector bundle fiber in a trivial rank 2 vector bundle over a 4-dimensional topological manifold:

sage: M = Manifold(4, 'M', structure='top')
sage: X.<x,y,z,t> = M.chart()
sage: p = M((0,0,0,0), name='p')
sage: E = M.vector_bundle(2, 'E')
sage: e = E.local_frame('e')
sage: Ep = E.fiber(p); Ep
Fiber of E at Point p on the 4-dimensional topological manifold M
>>> from sage.all import *
>>> M = Manifold(Integer(4), 'M', structure='top')
>>> X = M.chart(names=('x', 'y', 'z', 't',)); (x, y, z, t,) = X._first_ngens(4)
>>> p = M((Integer(0),Integer(0),Integer(0),Integer(0)), name='p')
>>> E = M.vector_bundle(Integer(2), 'E')
>>> e = E.local_frame('e')
>>> Ep = E.fiber(p); Ep
Fiber of E at Point p on the 4-dimensional topological manifold M

Fibers are free modules of finite rank over SymbolicRing (actually vector spaces of finite dimension over the vector bundle field \(K\), here \(K=\RR\)):

sage: Ep.base_ring()
Symbolic Ring
sage: Ep.category()
Category of finite dimensional vector spaces over Symbolic Ring
sage: Ep.rank()
2
sage: dim(Ep)
2
>>> from sage.all import *
>>> Ep.base_ring()
Symbolic Ring
>>> Ep.category()
Category of finite dimensional vector spaces over Symbolic Ring
>>> Ep.rank()
2
>>> dim(Ep)
2

The fiber is automatically endowed with bases deduced from the local frames around the point:

sage: Ep.bases()
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M]
sage: E.frames()
[Local frame (E|_M, (e_0,e_1))]
>>> from sage.all import *
>>> Ep.bases()
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M]
>>> E.frames()
[Local frame (E|_M, (e_0,e_1))]

At this stage, only one basis has been defined in the fiber, but new bases can be added from local frames on the vector bundle by means of the method at():

sage: aut = E.section_module().automorphism()
sage: aut[:] = [[-1, x], [y, 2]]
sage: f = e.new_frame(aut, 'f')
sage: fp = f.at(p); fp
Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M
sage: Ep.bases()
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M,
 Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M]
>>> from sage.all import *
>>> aut = E.section_module().automorphism()
>>> aut[:] = [[-Integer(1), x], [y, Integer(2)]]
>>> f = e.new_frame(aut, 'f')
>>> fp = f.at(p); fp
Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M
>>> Ep.bases()
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M,
 Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
 topological manifold M]

The changes of bases are applied to the fibers:

sage: f[1].display(e) # second component of frame f
f_1 = x e_0 + 2 e_1
sage: ep = e.at(p)
sage: fp[1].display(ep) # second component of frame f at p
f_1 = 2 e_1
>>> from sage.all import *
>>> f[Integer(1)].display(e) # second component of frame f
f_1 = x e_0 + 2 e_1
>>> ep = e.at(p)
>>> fp[Integer(1)].display(ep) # second component of frame f at p
f_1 = 2 e_1

All the bases defined on Ep are on the same footing. Accordingly the fiber is not in the category of modules with a distinguished basis:

sage: Ep in ModulesWithBasis(SR)
False
>>> from sage.all import *
>>> Ep in ModulesWithBasis(SR)
False

It is simply in the category of modules:

sage: Ep in Modules(SR)
True
>>> from sage.all import *
>>> Ep in Modules(SR)
True

Since the base ring is a field, it is actually in the category of vector spaces:

sage: Ep in VectorSpaces(SR)
True
>>> from sage.all import *
>>> Ep in VectorSpaces(SR)
True

A typical element:

sage: v = Ep.an_element(); v
Vector in the fiber of E at Point p on the 4-dimensional topological
 manifold M
sage: v.display()
e_0 + 2 e_1
sage: v.parent()
Fiber of E at Point p on the 4-dimensional topological manifold M
>>> from sage.all import *
>>> v = Ep.an_element(); v
Vector in the fiber of E at Point p on the 4-dimensional topological
 manifold M
>>> v.display()
e_0 + 2 e_1
>>> v.parent()
Fiber of E at Point p on the 4-dimensional topological manifold M

The zero vector:

sage: Ep.zero()
Vector zero in the fiber of E at Point p on the 4-dimensional
 topological manifold M
sage: Ep.zero().display()
zero = 0
sage: Ep.zero().parent()
Fiber of E at Point p on the 4-dimensional topological manifold M
>>> from sage.all import *
>>> Ep.zero()
Vector zero in the fiber of E at Point p on the 4-dimensional
 topological manifold M
>>> Ep.zero().display()
zero = 0
>>> Ep.zero().parent()
Fiber of E at Point p on the 4-dimensional topological manifold M

Fibers are unique:

sage: E.fiber(p) is Ep
True
sage: p1 = M.point((0,0,0,0))
sage: E.fiber(p1) is Ep
True
>>> from sage.all import *
>>> E.fiber(p) is Ep
True
>>> p1 = M.point((Integer(0),Integer(0),Integer(0),Integer(0)))
>>> E.fiber(p1) is Ep
True

even if points are different instances:

sage: p1 is p
False
>>> from sage.all import *
>>> p1 is p
False

but p1 and p share the same fiber because they compare equal:

sage: p1 == p
True
>>> from sage.all import *
>>> p1 == p
True

See also

FiniteRankFreeModule for more documentation.

Element[source]#

alias of VectorBundleFiberElement

base_point()[source]#

Return the manifold point over which self is defined.

EXAMPLES:

sage: M = Manifold(2, 'M', structure='top')
sage: X.<x,y> = M.chart()
sage: E = M.vector_bundle(2, 'E')
sage: e = E.local_frame('e')
sage: p = M.point((3,-2), name='p')
sage: Ep = E.fiber(p)
sage: Ep.base_point()
Point p on the 2-dimensional topological manifold M
sage: p is Ep.base_point()
True
>>> from sage.all import *
>>> M = Manifold(Integer(2), 'M', structure='top')
>>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2)
>>> E = M.vector_bundle(Integer(2), 'E')
>>> e = E.local_frame('e')
>>> p = M.point((Integer(3),-Integer(2)), name='p')
>>> Ep = E.fiber(p)
>>> Ep.base_point()
Point p on the 2-dimensional topological manifold M
>>> p is Ep.base_point()
True
construction()[source]#
dim()[source]#

Return the vector space dimension of self.

EXAMPLES:

sage: M = Manifold(3, 'M', structure='top')
sage: X.<x,y,z> = M.chart()
sage: p = M((0,0,0), name='p')
sage: E = M.vector_bundle(2, 'E')
sage: Ep = E.fiber(p)
sage: Ep.dim()
2
>>> from sage.all import *
>>> M = Manifold(Integer(3), 'M', structure='top')
>>> X = M.chart(names=('x', 'y', 'z',)); (x, y, z,) = X._first_ngens(3)
>>> p = M((Integer(0),Integer(0),Integer(0)), name='p')
>>> E = M.vector_bundle(Integer(2), 'E')
>>> Ep = E.fiber(p)
>>> Ep.dim()
2
dimension()[source]#

Return the vector space dimension of self.

EXAMPLES:

sage: M = Manifold(3, 'M', structure='top')
sage: X.<x,y,z> = M.chart()
sage: p = M((0,0,0), name='p')
sage: E = M.vector_bundle(2, 'E')
sage: Ep = E.fiber(p)
sage: Ep.dim()
2
>>> from sage.all import *
>>> M = Manifold(Integer(3), 'M', structure='top')
>>> X = M.chart(names=('x', 'y', 'z',)); (x, y, z,) = X._first_ngens(3)
>>> p = M((Integer(0),Integer(0),Integer(0)), name='p')
>>> E = M.vector_bundle(Integer(2), 'E')
>>> Ep = E.fiber(p)
>>> Ep.dim()
2