## Tensors on free modules of finite rank

This is a pure algebraic subset of SageManifolds, devoted
to tensors on free modules of finite rank over a commutative ring. This subset is self-consistent, i.e. it does not depend upon other SageManifolds parts. It has been integrated
in SageManifolds from version 0.5. Since April 2015 (SageMath 6.6 release), it has been
integrated in SageMath, i.e. it comes along with any SageMath installation.
All the relevant Python files are in the subdirectory `src/sage/tensor/modules`

of the SageMath root directory, after having installed SageManifolds.

In the context of differentiable manifolds, **tensors on a free module \(M\) over a commutative ring \(R\)** appear at two places (see also Sec. 4.4 of arXiv:1412.4765):

- tensors on tangent spaces:
- ring \(R\) : real field \(\mathbb{R}\)
- free module \(M\) : tangent vector space to the manifold at a given point

- tensor fields on a manifold:
- ring \(R\) : algebra \( C^\infty(U) \) of smooth functions \( U\rightarrow \mathbb{R} \), where \(U\) is a parallelizable open set of the manifold
- free module \(M\) : \(\mathfrak{X}(U)\), the set of smooth vector fields on \(U\) (since \(U\) is parallelizable, this is a free module; its rank is the manifold's dimension)

It turns out that, before this project, only free modules
*with a distinguished basis* were
implemented in SageMath. This means that, given a free module \(M\) of rank \(n\),
all calculations were referring to a single basis of \(M\). This amounts to identifying
\(M\) with \(R^n\), where \(R\) is the ring over which \(M\) is defined.
This is unfortunately not sufficient for dealing with differentiable manifolds
in a coordinate-independent way.
For instance, considering the tangent space \(T_p\mathcal{M}\)
to a manifold \(\mathcal{M}\) at a point \(p\),
there is no canonical
isomorphism between \(T_p\mathcal{M}\) and \(\mathbb{R}^n\) when no coordinate
system is privileged in the neighborhood of \(p\).
Hence it has been necessary to implement
generic free modules of finite rank, with an arbitrary number of bases,
none of them being distinguished. See
here
for details (in particular for a
comparison with previous implementations of free modules in SageMath).

### Documentation

- Tutorial [pdf] [ipynb]
- Reference manual [pdf]

### Integration in Sage:

- Commit page at git.sagemath.org
- Submitted ticket (#15916) at trac.sagemath.org