Ask Your Question

Revision history [back]

It seems that in the second case, the .reduce() method is the generic one which is just:

def reduce(self, f):
    r"""
    Return the reduction of the element of `f` modulo ``self``.

    This is an element of `R` that is equivalent modulo `I` to `f` where
    `I` is ``self``.

    EXAMPLES::

        sage: ZZ.ideal(5).reduce(17)
        2
        sage: parent(ZZ.ideal(5).reduce(17))
        Integer Ring
    """
    return f       # default

If you want a better reduction in this case, you can put the polynomial in the quotient and lift it:

sage: R.<x>=PolynomialRing(ZZ)
sage: I = R.ideal(x^4)
sage: R.quotient(I)(x^8+1).lift()
1

It seems that in the second case, the .reduce() method is the generic one which is just:

def reduce(self, f):
    r"""
    Return the reduction of the element of `f` modulo ``self``.

    This is an element of `R` that is equivalent modulo `I` to `f` where
    `I` is ``self``.

    EXAMPLES::

        sage: ZZ.ideal(5).reduce(17)
        2
        sage: parent(ZZ.ideal(5).reduce(17))
        Integer Ring
    """
    return f       # default

If you want a better reduction in this particular case, you can put the polynomial in the quotient and lift it:

sage: R.<x>=PolynomialRing(ZZ)
sage: I = R.ideal(x^4)
sage: R.quotient(I)(x^8+1).lift()
1