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:
vector_bundle
–TopologicalVectorBundle
; vector bundle \(E\) on which the fiber is definedpoint
–ManifoldPoint
; point \(p\) at which the fiber is defined
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
andp
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
- 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