#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.

Reply via email to