#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_work                                      
   Priority:  major                                              |      
Milestone:  sage-4.7.2                                      
  Component:  algebra                                            |       
Keywords:  onesided twosided ideal noncommutative ring sd32
Work_issues:  multiplication in quotient rings of matrix spaces  |       
Upstream:  N/A                                             
   Reviewer:                                                     |         
Author:  Simon King                                      
     Merged:                                                     |   
Dependencies:  #10961, #9138, #11115, #11342                   
-----------------------------------------------------------------+----------
Changes (by SimonKing):

  * status:  needs_review => needs_work
  * work_issues:  => multiplication in quotient rings of matrix spaces


Comment:

 Now I understand the problem.

 Addition in Q works, but multiplication in Q doesn't. That is because the
 current multiplication of quotient ring elements relies on a generic
 implementation. Multiplication of `Q.0` with `Q.1` is essentially the same
 as
 {{{
 sage: Q(Q.lift(Q.0)*Q.lift(Q.1))
 }}}

 The problem is: `Q.lift(Q.0)` tries to call `Q.lifting_map()`, which
 should return the lift map - but fails. I guess the failure comes from a
 cdef attribute that can only take an instance of type `Ring`; so, one
 couldn't assign `MS` to it.

 However, multiplication of `Q.0` with `Q.1` could also be done as follows:
 {{{
 sage: Q(Q.0.lift()*Q.1.lift())
 [0 1]
 [0 0]
 }}}
 The difference is that `Q.lift(Q.0)` is a generic method of quotient
 rings, whereas Q.0.lift() is a generic method of quotient ring elements.

 Obvious solution: If `Q.lifting_map()` can not construct the lifting map
 via `sage.rings.morphism.RingMap_lift`, then it should try
 `sage.categories.morphism.SetMorphism`.

 Thanks for spotting it! I hope I can soon provide a new patch!

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11068#comment:35>
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