#18204: Refactor and generalize QuotientRing and QuotientModuleWithBasis
-------------------------------+------------------------
       Reporter:  nthiery      |        Owner:
           Type:  enhancement  |       Status:  new
       Priority:  major        |    Milestone:  sage-6.7
      Component:  algebra      |   Resolution:
       Keywords:               |    Merged in:
        Authors:               |    Reviewers:
Report Upstream:  N/A          |  Work issues:
         Branch:               |       Commit:
   Dependencies:               |     Stopgaps:
-------------------------------+------------------------
Changes (by nthiery):

 * type:  PLEASE CHANGE => enhancement
 * component:  PLEASE CHANGE => algebra


Old description:



New description:

 `sage.rings.quotient_ring.QuotientRing` and
 `sage.modules.with_basis.subquotient.QuotientModuleWithBasis` are two
 implementations of quotient that share some common features.

 In both cases, the algorithmic relies on having a reduce method for
 the submodule/ideal one is quotienting by: the reduce method
 shall be a additive linear map on the ambient module so that
 {{{
     reduce(x) == reduce(y) iff x==y [submodule]
 }}}
 This algorithmic part would be valid for any module. Actually for any
 commutative additive group.

 On the other hand, the data structures differ: in `QuotientRing`
 elements are represented by wrapping element of the ambient space. In
 `QuotientModuleWithBasis`, the indexing set of a subset `B` of the
 basis of ``self`` that spans some supplementary of ``submodule`` is
 determined explicitly (user-specified or computed). Elements are
 represented in the module spanned by those indices. Depending on the
 context both data structures can be helpful.

 TODO:

 - Generalize `QuotientRing` to `QuotientXXX` to handle any commutative
   additive group. Update the `quotient` method accordingly, and add an
   option to choose the data structure when relevant.

 - Let `QuotientModuleWithBasis` inherit from the above.

 - Get all the additional structure (quotient ring, ...) from the
   categories `(Rings().Quotient(), ...)`.

 - Explore if some of the other existing implementation of quotients in
   Sage could be refactored and simplified.

--

--
Ticket URL: <http://trac.sagemath.org/ticket/18204#comment:1>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to