#15916: Tensors on free modules of finite rank
-------------------------------------+-------------------------------------
       Reporter:  egourgoulhon       |        Owner:
           Type:  enhancement        |       Status:  new
       Priority:  major              |    Milestone:  sage-6.2
      Component:  linear algebra     |   Resolution:
       Keywords:  free module,       |    Merged in:
  tensor, tensor product             |    Reviewers:
        Authors:  Eric Gourgoulhon,  |  Work issues:
  Michal Bejger                      |       Commit:
Report Upstream:  N/A                |  f8e9c3e62c1b016a41d377a0ccdbcd665aa189dc
         Branch:                     |     Stopgaps:
  u/egourgoulhon/tensor_modules      |
   Dependencies:                     |
-------------------------------------+-------------------------------------
Description changed by egourgoulhon:

Old description:

> == Description ==
>
> This ticket implements:
>
> * '''tensor products''' of the type M\otimes ...\otimes M \otimes M*
> \otimes...\otimes M*
>   where M is a free module of finite rank over a commutative ring R and
> M* is its dual (''k'' factors of M and ''l'' factors of M*, say)
> * the elements of the above tensor products, considered as '''tensors'''
> of type ''(k,l)'' on M, i.e. multilinear forms (M*)^''k''^ \times
> M^''l''^ --> R, thanks to the canonical isomorphism (M*)* = M (which
> holds since M is a free module of finite rank)
> * the following '''tensor operations''':
>   * operations inherent to the module structure (addition, multiplication
> by a ring element)
>   * tensor product of two tensors
>   * tensor contraction
>   * symmetry / antisymmetry handling (on subset of the tensor arguments
> or on all arguments)
>   * exterior product of alternating forms
>
> No distinguished basis is assumed on the free module M; on the contrary
> many bases can be introduced. Each tensor has then various
> representations, via its components in the various bases.
>
> == Motivation and context ==
>
> The ticket has been motivated by tensors on smooth manifolds over
> '''R''', within the
> [http://sagemanifolds.obspm.fr SageManifolds] project. In this context,
> tensors on free modules appear at two levels:
> * ''tensors on tangent spaces:''
>   * commutative ring R: real field '''R'''
>   * free module M: tangent vector space at a given manifold's point
> * ''tensor fields on a manifold:''
>   * commutative ring R: the set C^oo^(N) of smooth functions N-->
> '''R''', where N is a parallelizable open set of the manifold
>   * free module M: the set X(N) of smooth vector fields on N (since N is
> parallelizable, this is a free module; its rank is the manifold's
> dimension)
>
> == Documentation ==
>
> Apart from the numerous doctests in the code, some pieces of
> documentation are
> * the tutorial worksheet posted
> [http://sagemanifolds.obspm.fr/examples/html/SM_tensors_modules.html
> here] (a pdf version is
> [http://sagemanifolds.obspm.fr/examples/pdf/SM_tensors_modules.pdf here])
> * the "tensors on free modules"
> [http://sagemanifolds.obspm.fr/doc/tensors_free_module/index.html
> reference manual] (a pdf version is
> [http://sagemanifolds.obspm.fr/doc/tensors_free_modules_ref.pdf here]);
> it can also be generated via the command `sage -docbuild
> tensors_free_module html`
>
> See also [http://sagemanifolds.obspm.fr/tensor_modules.html this page].
>
> == Remarks ==
>

> 1. Although developed in the context of [http://sagemanifolds.obspm.fr
> SageManifolds] (ticket:14865), the ticket is self-contained and does not
> depend on other parts of !SageManifolds. It this respect, it can be
> viewed as some attempt to include a first subset of !SageManifolds in
> Sage, with a moderate size: the ticket comprises 9391 lines of Python
> code (most of them being doctests), while at present !SageManifolds
> contains 29240 lines of code.
>
> 2. The ticket follows Sage's !Parent/Element scheme and the (new)
> category framework. In particular, the ticket's free module class
> ([http://sagemanifolds.obspm.fr/doc/tensors_free_module/finite_free_module.html
> FiniteFreeModule]) passes the module !TestSuite.
>
> 3. It turned out to be necessary to develop a new class to implement free
> modules of finite rank. Indeed, the category of free modules does not
> exist yet in Sage: only those of generic modules (Modules) or free
> modules with a distinguished basis (!ModulesWithBasis) are available.
> Now, the tangent space at a given point of a manifold is a vector space
> without any distinguished basis (in other words, while the tangent space
> is isomorphic to '''R'''^n^, there is no ''canonical'' isomorphism, each
> isomorphism relying on the choice of some coordinate chart). The new
> class,
> [http://sagemanifolds.obspm.fr/doc/tensors_free_module/finite_free_module.html
> FiniteFreeModule], does not rely on any distinguished basis. It inherits
> directly from
> [http://www.sagemath.org/doc/reference/modules/sage/modules/module.html
> sage.modules.module.Module]. In particular, it does not inherit from
> [http://www.sagemath.org/doc/reference/modules/sage/modules/free_module.html#sage.modules.free_module.FreeModule_generic
> sage.modules.module.Module_old.FreeModule_generic] since the latter does
> not conform to the new coercion model and seems to assume a distinguished
> basis (cf. its method
> [http://www.sagemath.org/doc/reference/modules/sage/modules/free_module.html#sage.modules.free_module.FreeModule_generic
> basis()]).

New description:

 == Description ==

 This ticket implements:

 * '''tensor products''' of the type M\otimes ...\otimes M \otimes M*
 \otimes...\otimes M*
   where M is a free module of finite rank over a commutative ring R and M*
 is its dual (''k'' factors of M and ''l'' factors of M*, say)
 * the elements of the above tensor products, considered as '''tensors'''
 of type ''(k,l)'' on M, i.e. multilinear forms (M*)^''k''^ \times M^''l''^
 --> R, thanks to the canonical isomorphism (M*)* = M (which holds since M
 is a free module of finite rank)
 * the following '''tensor operations''':
   * operations inherent to the module structure (addition, multiplication
 by a ring element)
   * tensor product of two tensors
   * tensor contraction
   * symmetry / antisymmetry handling (on subset of the tensor arguments or
 on all arguments)
   * exterior product of alternating forms

 No distinguished basis is assumed on the free module M; on the contrary
 many bases can be introduced. Each tensor has then various
 representations, via its components in the various bases.

 == Motivation and context ==

 The ticket has been motivated by tensors on smooth manifolds over '''R''',
 within the
 [http://sagemanifolds.obspm.fr SageManifolds] project. In this context,
 tensors on free modules appear at two levels:
 * ''tensors on tangent spaces:''
   * commutative ring R: real field '''R'''
   * free module M: tangent vector space at a given manifold's point
 * ''tensor fields on a manifold:''
   * commutative ring R: the set C^oo^(N) of smooth functions N--> '''R''',
 where N is a parallelizable open set of the manifold
   * free module M: the set X(N) of smooth vector fields on N (since N is
 parallelizable, this is a free module; its rank is the manifold's
 dimension)

 == Documentation ==

 Apart from the numerous doctests in the code, some pieces of documentation
 are
 * the tutorial worksheet posted
 [http://sagemanifolds.obspm.fr/examples/html/SM_tensors_modules.html here]
 (a pdf version is
 [http://sagemanifolds.obspm.fr/examples/pdf/SM_tensors_modules.pdf here])
 * the "tensors on free modules"
 [http://sagemanifolds.obspm.fr/doc/tensors_free_module/index.html
 reference manual] (a pdf version is
 [http://sagemanifolds.obspm.fr/doc/tensors_free_modules_ref.pdf here]); it
 can also be generated via the command `sage -docbuild tensors_free_module
 html`

 See also [http://sagemanifolds.obspm.fr/tensor_modules.html this page].

 == Remarks ==


 1. Although developed in the context of [http://sagemanifolds.obspm.fr
 SageManifolds] (ticket:14865), the ticket is self-contained and does not
 depend on other parts of !SageManifolds. It this respect, it can be viewed
 as some attempt to include a first subset of !SageManifolds in Sage, with
 a moderate size: the ticket comprises 9391 lines of Python code (most of
 them being doctests), while at present !SageManifolds contains 29240 lines
 of code.

 2. The ticket follows Sage's !Parent/Element scheme and the (new) category
 framework. In particular, the ticket's free module class
 ([http://sagemanifolds.obspm.fr/doc/tensors_free_module/finite_free_module.html
 FiniteFreeModule]) passes the module !TestSuite.

 3. It turned out to be necessary to develop a new class to implement free
 modules of finite rank. Indeed, the category of free modules does not
 exist yet in Sage: only those of generic modules (Modules) or free modules
 with a distinguished basis (!ModulesWithBasis) are available. Now, the
 tangent space at a given point of a manifold is a vector space without any
 distinguished basis (in other words, while the tangent space is isomorphic
 to '''R'''^n^, there is no ''canonical'' isomorphism, each isomorphism
 relying on the choice of some coordinate chart). The new class,
 [http://sagemanifolds.obspm.fr/doc/tensors_free_module/finite_free_module.html
 FiniteFreeModule], does not rely on any distinguished basis. It inherits
 directly from
 [http://www.sagemath.org/doc/reference/modules/sage/modules/module.html
 sage.modules.module.Module]. In particular, it does not inherit from
 
[http://www.sagemath.org/doc/reference/modules/sage/modules/free_module.html#sage.modules.free_module.FreeModule_generic
 sage.modules.module.FreeModule_generic] since the latter does not conform
 to the new coercion model and seems to assume a distinguished basis (cf.
 its method
 
[http://www.sagemath.org/doc/reference/modules/sage/modules/free_module.html#sage.modules.free_module.FreeModule_generic
 basis()]).

--

--
Ticket URL: <http://trac.sagemath.org/ticket/15916#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to