Ask Your Question

Revision history [back]

Ok it looks like this is the current (March 2021) behavior.

In the source code for Ideal_nc, which is the type of I, there is no implementation of a .reduce() method. Since Ideal_nc is a subclass of Ideal_generic it defaults to the Ideal_generic.reduce() method. But when Ideal_generic.reduce() is called it defaults to the identity:

    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

So this is asking if xbar and ybar are literally the same, which they are not.

Thanks to Travis Scrimshaw for pointing this out to me in private communication.

Ok it looks like this is the current (March 2021) (Sage 9.3beta8) behavior.

In the source code for Ideal_nc, which is the type of I, there is no implementation of a .reduce() method. Since Ideal_nc is a subclass of Ideal_generic it defaults to the Ideal_generic.reduce() method. But when Ideal_generic.reduce() is called it defaults to the identity:

    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

So this is asking if xbar and ybar are literally the same, which they are not.

Thanks to Travis Scrimshaw for pointing this out to me in private communication.