Opened 7 years ago
Last modified 3 weeks ago
#16247 new defect
Meaning of Modules(R) currently not very clear
Reported by: | darij | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-9.4 |
Component: | algebra | Keywords: | modules, categories, associativity, matrices |
Cc: | nthiery, SimonKing | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | #10963 | Stopgaps: |
Description (last modified by )
The doc of class Modules
currently (#10963) says:
The category of all modules over a base ring `R`. An `R`-module `M` is a left and right `R`-module over a commutative ring `R` such that: .. math:: r*(x*s) = (r*x)*s \qquad \forall r,s \in R \text{ and } x \in M
This is not the notion of a module that mathematicians are used to, not even when R is commutative. Instead, this is the definition of an R-R-bimodule. I fear that this is destined to lead to confusion and subtle bugs. For instance, the WithBasis
subcategory implements methods like "basis" and "support". But a left R-module basis of an R-R-bimodule might not be a right R-module basis, and even if it is, the supports of one and the same element with respect to it (one time as a left R-module basis, another time as a right one) might be different. I have not seen the WithBasis
subcategory being used in problematic cases (i.e., in cases where the left and right structure are different), but I fear that this is bound to eventually happen.
I've run the (short) doctests of src/sage with a commit that adds a warning every time Modules(A) is called for A noncommutative. Here are the relevant results:
https://www.dropbox.com/s/oieg1ig0dliz63s/noncomm.txt
It seems that matrices over noncommutative rings are the main culprit here -- or, rather, matrix spaces being cast as modules over the base rings. I think they should be bimodules, since there is a Bimodules(R, R)
category already.
Apparently people have been aware of this for a while; the following warning message is doctested for and not written by me:
doctest:...: UserWarning: You are constructing a free module over a noncommutative ring. Sage does not have a concept of left/right and both sided modules, so be careful. It's also not guaranteed that all multiplications are done from the right side.
(We do have left/right/bi-modules now.)
There are some tracebacks I don't really understand... can it be that some methods in Sage construct matrices consisting of matrices? There's nothing wrong about that; I just think the constructor for the respective matrix spaces should pick the right category for that.
Here are some options:
- Make
Modules
only support *symmetric* modules, i.e. modules M satisfying rx = xr for all r in R and x in M. This is useful almost only for commutative R (in fact, these modules are always modules over the abelianization of R).
- Make
Modules
only support R-R-bimodules which are direct sums of copies of the R-R-bimodule R. This allows for doing most things that can be done in the commutative case, and examples are polynomial rings over noncommutative rings, matrix spaces etc. -- I actually like this category. The only problem is that it is more of a "ModulesWithBasis?" category than a "Modules" category.
- Make
Modules
only support R-R-bimodules which are sums (not necessarily direct) of copies of the R-R-bimodule R. This looks like a reasonable category but I know almost none of its properties.
Change History (9)
comment:1 Changed 7 years ago by
- Dependencies set to 10963
- Description modified (diff)
- Keywords matrices added; removed
comment:2 Changed 7 years ago by
- Description modified (diff)
comment:3 Changed 7 years ago by
- Description modified (diff)
comment:4 Changed 7 years ago by
comment:5 Changed 7 years ago by
- Dependencies changed from 10963 to #10963
- Description modified (diff)
- Summary changed from Abuse of Modules() for modules over noncommutative rings to Meaning of Modules(R) currently not very clear
comment:6 Changed 7 years ago by
- Milestone changed from sage-6.2 to sage-6.3
comment:7 Changed 7 years ago by
- Milestone changed from sage-6.3 to sage-6.4
comment:8 Changed 7 months ago by
- Milestone changed from sage-6.4 to sage-9.3
comment:9 Changed 3 weeks ago by
- Milestone changed from sage-9.3 to sage-9.4
Setting new milestone based on a cursory review of ticket status, priority, and last modification date.
Thanks for exploring how to clean this up.
Just for the record: we have had left/right/bimodules since 2009 and probably even before. Also, at this point, they are just categories over a base ring, not functorial constructions.
One thing to check is how this was handled in Axiom. MuPAD was roughly as here: on the lousy side in the non commutative case.