#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: Shall one move code from ring.pyx to rings.py? | Upstream:
N/A
Reviewer: | Author:
Simon King
Merged: | Dependencies:
#10961, #9138, #11115
--------------------------------------------------------------+-------------
Comment(by SimonKing):
Hi John,
Replying to [comment:22 john_perry]:
> 1. Now that I think of it, does the request to distinguish left,
right, & two-sided ideals makes sense in `_ideal_class()`? This is a
method for a ring, not an ideal.
Yes, _ideal_class is a method of the ring, not of the ideal. However, the
returned class already depends (in some cases) on the number of generators
(principal ideals versus general ideals). Theoretically, it could allso be
made dependent on the sidedness of the ideal-to-be-constructed.
However, I think it is better to have a common class for ideals in non-
commutative rings. Instances of that class can be left, right or twosided.
But (I think) it is not necessary to have one separate class for onesided
and another separate class for twosided ideals.
> I took the example given above of a two-sided ideal with the Steenrod
algebra, and it would not compute the quotient ring; see below. Is this
supposed to work?
> ...
> sage: A.quo(I)
> ...
> ValueError: variable names have not yet been set using
self._assign_names(...)
It is not so easy, because the Steenrod algebra has infinitely many
generators (the number of generators is given by ngens). The Steenrod
algebra can not provide a list of generator names either: The method
variable_names() will not work, of course.
But when you want to construct a general ring quotient, the init method of
the quotient ring expects that the ring you started with ''knows'' its
variable names.
It may be possible to change the init method of quotient rings such that
it will no longer be expected. But I think that should be on a different
ticket.
Hint: You could start with a matrix algebra (say, 2x2 matrices over some
field). Here, we have a finite list of generators (namely four matrices).
And then, you could assign names to them when constructing the quotient,
such as here
{{{
sage: MS = MatrixSpace(GF(5),2,2)
sage: I = MS*[MS.0*MS.1,MS.2+MS.3]*MS
sage: MS.ngens()
4
sage: I
Twosided Ideal
(
[0 1]
[0 0],
[0 0]
[1 1]
)
of Full MatrixSpace of 2 by 2 dense matrices over Finite Field of size 5
sage: Q.<a,b,c,d> = MS.quo(I)
sage: Q
Quotient of Full MatrixSpace of 2 by 2 dense matrices over Finite Field of
size 5 by the ideal
(
[0 1]
[0 0],
[0 0]
[1 1]
)
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11068#comment:23>
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.