New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tensors on free modules of finite rank #15916
Comments
Changed author from egourgoulhon, mbejger to Eric Gourgoulhon, Michal Bejger |
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:4
Is there any connection and/or overlap between this ticket and #15726? |
comment:5
This ticket implements tensor modules T(k,l)(M) of a fixed type (k,l) over a free module M of finite rank, while #15726 implements the tensor algebra T(M), which is the direct sum of all T(k,l)(M). Another major difference is that here the base module M is a generic free module, while in #15726 M is a free module with a distinguished basis (the classes TensorModule and TensorAlgebra of #15726 inherit from class CombinatorialFreeModule, which assumes a distinguished basis). In the present ticket, an arbitrary number of bases can be introduced on the free module M, along with the change-of-basis automorphisms, and each tensor has various sets of components, one per basis. Another difference may regard symmetry/antisymmetry handling: the tensors implemented in this ticket can have arbitrary symmetries and/or antisymmetries. The symmetries are taken into account to reduce the storage of tensor components and to optimize some computations, such as the tensor product. But maybe something similar is implemented in #15726. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:10
This is now part of SageManifolds v0.5 (see this post on sage-devel and http://sagemanifolds.obspm.fr/changelog.html). |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:19
The ticket has been updated to coincide with the pure algebraic part of SageManifolds v0.6. Changes are:
to denote the tensor Sbc = Aabcd Bda ,
to denote the tensor Sabcd = A(ab)cd, and
to denote the tensor Sabcd = Aab[cd]. 2/ The code for tensor contractions has been completely rewritten; it is more efficient and allows now for multiple contractions (as in the first example above). 3/ The argument of methods Besides, new examples have been provided on http://sagemanifolds.obspm.fr/examples.html; two of them are directly relevant to this ticket:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:59
I'm happy with the current version of this, so positive review. Thanks for your work on this! |
Changed keywords from free module, tensor, tensor product to free module, tensor, tensor product, days64 |
comment:60
Doctests fail |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:62
This is the only (trivial) failure I can see. |
comment:63
Replying to @tscrim:
In the patchbot log, there are many doctest failures but they pertain to other parts of Sage: all doctests of files in src/sage/tensor/modules (i.e. the sources of this ticket) pass. So I am puzzled: why the patchbot returns so many failures? Could it be that the ticket branch is based on Sage 6.6.beta5? |
comment:64
Replying to @egourgoulhon:
It has to do with file permissions on the patchbot account. They are harmless and not really errors as far as Sage is concerned, but comes from python IIRC. |
comment:65
Replying to @tscrim:
OK I see. Thank you Travis! |
Changed branch from public/tensor_modules-15916 to |
comment:67
sequel in #26392 |
Changed commit from |
Description
This ticket implements:
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)
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
SageManifolds project. In this context, tensors on free modules appear at two levels:
Documentation
Apart from the numerous doctests in the code, some pieces of documentation are
sage -docbuild reference/tensor_free_modules html
See also this page.
Remarks
Although developed in the context of 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 14499 lines of Python code (most of them being doctests), while at present (version 0.6) SageManifolds contains 35157 lines of code.
The ticket follows Sage's !Parent/Element pattern and the (new) category framework. In particular, the ticket's free module class (FiniteRankFreeModule) passes the module TestSuite.
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 Rn, there is no canonical isomorphism, each isomorphism relying on the choice of some coordinate chart). The new class, FiniteRankFreeModule, does not rely on any distinguished basis. It inherits directly from Parent, with the category set toModules()
. In particular, it does not inherit from sage.modules.module.FreeModule_generic since the latter seems to assume a distinguished basis (cf. its method basis()).CC: @simon-king-jena
Component: linear algebra
Keywords: free module, tensor, tensor product, days64
Author: Eric Gourgoulhon, Michal Bejger
Branch:
99f9ac5
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/15916
The text was updated successfully, but these errors were encountered: