#11068: Basic implementation of one- and twosided ideals of non-commutative
rings,
and quotients by twosided ideals
---------------------------+------------------------------------------------
Reporter: SimonKing | Owner: AlexGhitza
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-4.7.2
Component: algebra | Keywords: onesided twosided ideal
noncommutative ring
Work_issues: | Upstream: N/A
Reviewer: | Author: Simon King
Merged: | Dependencies: #10961, #9138, #11115, #11342
---------------------------+------------------------------------------------
Changes (by SimonKing):
* status: needs_work => needs_review
* dependencies: #10961, #9138, #11115 => #10961, #9138, #11115, #11342
* work_issues: Print quotient ring elements if the cover has no variable
names =>
Comment:
'''Please apply the new patch from #11342 before installing the new patch
from here!'''
I resolved the problem with printing quotient ring elements of matrix
spaces, and while I was at it, I also enabled the creation of quotients of
the Steenrod algebras.
How's that?
__String representation__
The string representation of a quotient ring element is obtained from its
representation in the cover ring. However, the variable names in the cover
ring and the quotient ring may be different. That is taken care of by a
local environment that temporarily changes the variable names in the cover
ring.
However, that won't work if the cover ring has no variable names: If there
are no names, they can't be changed. And similarly, if the quotient ring
has no names then one wouldn't know how to change the names from the cover
ring.
With the new patch, one can do:
{{{
sage: MS = MatrixSpace(GF(5),2,2)
sage: I = MS*[MS.0*MS.1,MS.2+MS.3]*MS
sage: Q = MS.quo(I)
sage: Q.an_element()
[1 0]
[0 0]
}}}
__Cover rings with infinitely many generators__
With the patch, we don't require the list of generators of the cover ring
at initialisation time of the quotient ring. Hence, we can form quotient
rings of Steenrod algebras. Here is a case where one has no variable
names. Thus, the string representation of a quotient ring element must
coincide with the string representation of a corresponding element in the
cover ring.
That's to say:
{{{
sage: S = SteenrodAlgebra(2)
sage: I = S*[S.0+S.1]*S
sage: Q = S.quo(I)
sage: Q.an_element()
Sq(1)
}}}
Note, however, that in order to be able to do ''real'' computations in the
quotient ring, someone needs to implement a method `reduce()` for the
involved ideal class!
__Coping with #11342 in conjunction with #9138__
#11342 is a dependency for #11115, which is a dependency for this ticket.
Since today, there is a new patch at #11342, that fixes a problem with the
Pari interface: On some machines, that problem would result in a segfault.
The new patches at #11342 add a doctest, that needs to be modified if
#11342 is combined with #9138 (reason: Some element class introduce at
#11342 gets a different name when #9138 adds the category framework).
Since both are dependencies for the ticket here, the new patch fixes the
test.
Needs review, again...
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11068#comment:26>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.