Base classes for reflexive modules#
- class sage.tensor.modules.reflexive_module.ReflexiveModule_abstract#
Bases:
ParentAbstract base class for reflexive modules.
An
-module is reflexive if the natural map from to its double dual is an isomorphism.In the category of
-modules, the dual module is the -module of linear functionals . However, we do not make the assumption that the dual module (obtained bydual()) is in the categoryHomsets.We identify the double dual
with .Tensor products of reflexive modules are reflexive. We identify all tensor products of
copies of and copies of and denote it by . Thetensor_type()of such a tensor product is the pair , and is called itsbase_module().There are three abstract subclasses:
ReflexiveModule_baseis the base class for implementations of base modules .ReflexiveModule_dualis the base class for implementations of duals .ReflexiveModule_tensoris the base class for implementations of tensor modules .
- base_module()#
Return the module on which
selfis constructed.EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3) sage: M.base_module() is M True sage: M.dual().base_module() is M True sage: M.tensor_module(1, 2).base_module() is M True
- dual()#
Return the dual module.
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3) sage: M.dual() Dual of the Rank-3 free module over the Integer Ring sage: M.dual().dual() Rank-3 free module over the Integer Ring sage: M.tensor_module(1, 2) Free module of type-(1,2) tensors on the Rank-3 free module over the Integer Ring sage: M.tensor_module(1, 2).dual() Free module of type-(2,1) tensors on the Rank-3 free module over the Integer Ring
- tensor(*args, **kwds)#
Return the tensor product of
selfandothers.This method is invoked when
TensorProductFunctoris applied to parents.It just delegates to
tensor_product().EXAMPLES:
sage: M = FiniteRankFreeModule(QQ, 2); M 2-dimensional vector space over the Rational Field sage: M20 = M.tensor_module(2, 0); M20 Free module of type-(2,0) tensors on the 2-dimensional vector space over the Rational Field sage: tensor([M20, M20]) Free module of type-(4,0) tensors on the 2-dimensional vector space over the Rational Field
- tensor_power(n)#
Return the
n-fold tensor product ofself.EXAMPLES:
sage: M = FiniteRankFreeModule(QQ, 2) sage: M.tensor_power(3) Free module of type-(3,0) tensors on the 2-dimensional vector space over the Rational Field sage: M.tensor_module(1,2).tensor_power(3) Free module of type-(3,6) tensors on the 2-dimensional vector space over the Rational Field
- tensor_product(*others)#
Return the tensor product of
selfandothers.EXAMPLES:
sage: M = FiniteRankFreeModule(QQ, 2) sage: M.tensor_product(M) Free module of type-(2,0) tensors on the 2-dimensional vector space over the Rational Field sage: M.tensor_product(M.dual()) Free module of type-(1,1) tensors on the 2-dimensional vector space over the Rational Field sage: M.dual().tensor_product(M, M.dual()) Free module of type-(1,2) tensors on the 2-dimensional vector space over the Rational Field sage: M.tensor_product(M.tensor_module(1,2)) Free module of type-(2,2) tensors on the 2-dimensional vector space over the Rational Field sage: M.tensor_module(1,2).tensor_product(M) Free module of type-(2,2) tensors on the 2-dimensional vector space over the Rational Field sage: M.tensor_module(1,1).tensor_product(M.tensor_module(1,2)) Free module of type-(2,3) tensors on the 2-dimensional vector space over the Rational Field sage: Sym2M = M.tensor_module(2, 0, sym=range(2)); Sym2M Free module of fully symmetric type-(2,0) tensors on the 2-dimensional vector space over the Rational Field sage: Sym01x23M = Sym2M.tensor_product(Sym2M); Sym01x23M Free module of type-(4,0) tensors on the 2-dimensional vector space over the Rational Field, with symmetry on the index positions (0, 1), with symmetry on the index positions (2, 3) sage: Sym01x23M._index_maps ((0, 1), (2, 3)) sage: N = M.tensor_module(3, 3, sym=[1, 2], antisym=[3, 4]); N Free module of type-(3,3) tensors on the 2-dimensional vector space over the Rational Field, with symmetry on the index positions (1, 2), with antisymmetry on the index positions (3, 4) sage: NxN = N.tensor_product(N); NxN Free module of type-(6,6) tensors on the 2-dimensional vector space over the Rational Field, with symmetry on the index positions (1, 2), with symmetry on the index positions (4, 5), with antisymmetry on the index positions (6, 7), with antisymmetry on the index positions (9, 10) sage: NxN._index_maps ((0, 1, 2, 6, 7, 8), (3, 4, 5, 9, 10, 11))
- tensor_type()#
Return the tensor type of
self.OUTPUT:
pair
such thatselfis the module tensor product , where is thebase_module()ofself.
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3) sage: T = M.tensor_module(1, 2) sage: T.tensor_type() (1, 2)
- class sage.tensor.modules.reflexive_module.ReflexiveModule_base#
Bases:
ReflexiveModule_abstractAbstract base class for reflexive modules that are base modules.
- base_module()#
Return the free module on which
selfis constructed, namelyselfitself.EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3, name='M') sage: M.base_module() is M True sage: M = Manifold(2, 'M') sage: XM = M.vector_field_module() sage: XM.base_module() is XM True
- dual()#
Return the dual module.
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3, name='M') sage: M.dual() Dual of the Rank-3 free module M over the Integer Ring
- tensor_module(k, l, **kwds)#
Return the module of all tensors of type
defined onself.EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3) sage: M.tensor_module(1, 2) Free module of type-(1,2) tensors on the Rank-3 free module over the Integer Ring
- tensor_type()#
Return the tensor type of
self, the pair .EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3) sage: M.tensor_type() (1, 0) sage: M = Manifold(2, 'M') sage: XM = M.vector_field_module() sage: XM.tensor_type() (1, 0)
- class sage.tensor.modules.reflexive_module.ReflexiveModule_dual#
Bases:
ReflexiveModule_abstractAbstract base class for reflexive modules that are the duals of base modules.
- construction()#
Return the functorial construction of
self.This implementation just returns
None, as no functorial construction is implemented.
- tensor_type()#
Return the tensor type of
self.EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3, name='M') sage: M.dual().tensor_type() (0, 1)
- class sage.tensor.modules.reflexive_module.ReflexiveModule_tensor#
Bases:
ReflexiveModule_abstractAbstract base class for reflexive modules that are tensor products of base modules.
- tensor_factors()#
Return the tensor factors of this tensor module.
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 3, name='M') sage: T = M.tensor_module(2, 3) sage: T.tensor_factors() [Rank-3 free module M over the Integer Ring, Rank-3 free module M over the Integer Ring, Dual of the Rank-3 free module M over the Integer Ring, Dual of the Rank-3 free module M over the Integer Ring, Dual of the Rank-3 free module M over the Integer Ring]