> I would formulate it more precisely as "no monomial in the output is 
> divisible by the leading monomial of any polynomial in I". This seems 
> to be true given the examples I have, it would be good to have a 
> confirmation (hidden somewhere in Singular's docs?) 
>

Curiously, the definition of "normal form" in the Singular docs differs 
from that in the Singular text; see 
http://www.singular.uni-kl.de/Manual/latest/sing_845.htm#IDX415 where 
normal form is defined with a standard basis G. In the text G can be any 
list of polynomials.

It is possible in Singular to reduce by something that is not a Gröbner 
basis but Singular usually complains when that happens. So, for instance, 
here is a computation I just carried out in Singular:

> ring R = 43,(x,y),dp;
> > ideal I = x2+y2-4,xy-1;
> > reduce(x3,I);
> // ** I is no standard basis
> 4x-y


The check that produces the warning is NOT a thorough check that G is a 
Gröbner basis; it merely inspects a flag to see if a Gröbner basis has been 
computed. You can circumvent the warning by setting the flag, so that even 
when it isn't a Gröbner basis there is no warning. I don't remember offhand 
how to set that flag.

Looking at the code, Sage first tries to see if it has cached a reduction 
already (at least, I think that's what I._groebner_strategy is about). If 
not, it invokes the Singular function kNF (line 4479 of 
sage/libs/singular/decl.pxd in Sage 8.0). Singular's source code is not 
well-known for documentation, and kNF is no exception: in my copy of the 
source there is more or less no documentation of what kNF is supposed to 
do. (My copy is old, but I know a developer pretty well & it's something 
we've talked about.) I worked with it some years back and as I recall kNF 
and the functions it calls together behave according to the description 
from the Singular text that I quoted earlier: "normal form" in that text is 
not the same as "normal form" in CLO. Figuring out exactly how they do this 
could be a challenge, because Singular can take one of many paths depending 
on the underlying data.

This is a long way of saying that I agree with the suggestion.

-- 
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.

Reply via email to