#7711: integral() does not reduce coefficients in finite field
---------------------------------------+------------------------------------
       Reporter:  zimmerma             |         Owner:  malb           
           Type:  defect               |        Status:  needs_info     
       Priority:  major                |     Milestone:  sage-5.0       
      Component:  commutative algebra  |    Resolution:                 
       Keywords:                       |   Work issues:                 
Report Upstream:  N/A                  |     Reviewers:  Paul Zimmermann
        Authors:  Alex Ghitza          |     Merged in:                 
   Dependencies:                       |      Stopgaps:                 
---------------------------------------+------------------------------------
Changes (by AlexGhitza):

  * status:  needs_review => needs_info


Comment:

 Alright, I'm starting to see what you are objecting to, and I agree with
 you.  Just to make sure I get this right: even the documented examples
 from the docstring of integral are inconsistent in this way

 {{{
         EXAMPLES::

             sage: R.<x> = ZZ[]
             sage: R(0).integral()
             0
             sage: f = R(2).integral(); f
             2*x

         Note that since the integral is defined over the same base ring
 the
         integral is actually in the base ring.

         ::

             sage: f.parent()
             Univariate Polynomial Ring in x over Integer Ring

         If the integral isn't defined over the same base ring, then the
         base ring is extended::

             sage: f = x^3 + x - 2
             sage: g = f.integral(); g
             1/4*x^4 + 1/2*x^2 - 2*x
             sage: g.parent()
             Univariate Polynomial Ring in x over Rational Field
 }}}

 We want Sage to be less clever and more consistent, so the integral of 2
 should be 2x in QQ[x] rather than in ZZ[x].

 Of course, this is fun to implement, because you might have something
 like:

 {{{
 sage: A.<a, b> = PolynomialRing(ZZ)
 sage: C.<c> = PolynomialRing(A)
 sage: D.<d> = PowerSeriesRing(C)
 sage: R.<x> = PolynomialRing(D)
 sage: f = a*x^2 + c*x
 sage: f.parent()
 Univariate Polynomial Ring in x over Power Series Ring in d over
 Univariate Polynomial Ring in c over Multivariate Polynomial Ring
 in a, b over Integer Ring
 }}}

 What I would like to do is have f.integral() live in
 {{{
 Univariate Polynomial Ring in x over Power Series Ring in d over
 Univariate Polynomial Ring in c over Multivariate Polynomial Ring
 in a, b over Rational Field
 }}}

 So I want to change to the fraction field at the very bottom of the chain
 of extensions.  This means starting with R and going down to ZZ step by
 step, then changing ZZ to QQ and walking back up, changing all the
 intermediate rings along the way.  It can get expensive, but I guess
 that's the price to pay for working with such monstrosities.

 If my outline agrees with what you had in mind, I'll produce a new patch
 based on it.

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