Perhaps it would be clearer if the wording were changed to, "return a remainder," because there can be more than one, and strike the words between and including "the normal form" and "i.e.", because in many places "normal form" implies uniqueness. For instance, speaking of Cox, Little, and O'Shea, at least their second edition mentions that normal forms are unique (p. 80 and p. 85, Exercises 1 and 4). But not all texts take this route (see below).
Otherwise, I agree that the function should work with lists of polynomials that are not Gröbner bases; there are valuable reasons for it. For instance, when teaching commutative algebra one can illustrate easily that the remainder is not unique by using a basis is not Gröbner. Singular itself does this (see pp. 51-52 of "A Singular Introduction to Commutative Algebra") and the text even speaks of a non-unique "NF [normal form] w.r.t. a non-standard basis", illustrating how the results are different when the basis is not standard (aka Gröbner) and how there is a unique canonical result when the basis is standard. So in fact on p. 44, "After weakening the requirements, there is no more uniqueness statement for the normal form" and on p. 46 the definition of normal form is applied to a list of polynomials, not to an ideal, basis of an ideal, or even standard (Gröbner) basis. On Monday, October 16, 2017 at 12:35:11 PM UTC-5, Martin Albrecht wrote: > > Hi there, > > this is already documented: > > “ Return the normal form of self w.r.t. "I", i.e. return the > remainder of this polynomial with respect to the polynomials in > "I". If the polynomial set/list "I" is not a (strong) Groebner > basis the result is not canonical. > ” > > Cheers, > Martin > > Daniel Krenn <kr...@aon.at <javascript:>> writes: > > On 2017-10-16 18:41, Luca De Feo wrote: > >> Here's a Sage session: > >> > >> sage: A.<x,y> = QQ[] > >> sage: (x+y).reduce([(x-y), (x+y)]) > >> 0 > >> sage: (x-y).reduce([(x-y), (x+y)]) > >> -2*y > >> > >> The docstring says reduce computes "the normal form of self > >> w.r.t. I, > >> i.e. [...] the remainder of this polynomial with respect to the > >> polynomials in I". > >> > >> Does anyone have any idea how this normal form is defined? It > >> doesn't > >> seem to depend on the order of the polynomials in I. > > > > It computes the polynomial "modulo" the given ideal (i.e. > > compute a > > Groebner basis of the ideal and reduce the given polynomial by > > this basis). > > > > My guess: If only a list of polynomials is given, then it is > > assumed > > that these form a Groebner basis, which seems not to be the > > case. > > > >>>From the source code, I can only tell it calls Singular's kNF, > >>>but I > >> can't find any doc for it. Maybe this function should be > >> underscored? > > > > Once we know what it does with lists, the documentation should > > be made > > precise. > > > > I am against underscoring, as for ideals as parameter, this is a > > standard operation. > > > -- > > _pgp: https://keybase.io/martinralbrecht > _www: https://martinralbrecht.wordpress.com > _jab: martinr...@jabber.ccc.de <javascript:> > _otr: 47F43D1A 5D68C36F 468BAEBA 640E8856 D7951CCF > > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.