Page 1 sur 1

Is this a bug in greduce?

Publié : ven. août 25, 2017 9:50 am
par jocaps
Hi,

I am not sure if what I am asking is a bug. In any case, I did not find an appropriate thread where I can post my question. I hope you do not mind me posting here.

Consider the following code (giac, I ran both in giac and giacpy and got the same results):

Code : Tout sélectionner

h1:=x0-x1;
h2:=x2-x3;
h3:=d2*x2-y0-y1;
h4:=-d2*x0-y2-y3;
greduce(x0*y0+x1*y1+x2*y2+x3*y3,[h1,h2,h3,h4],[x0,x1,x2,x3,y0,y1,y2,y3]);
Giac will return the following polynomial:
x1*y0+x1*y1+x3*y2+x3*y3

But the polynomial x0*y0+x1*y1+x2*y2+x3*y3 is clearly in the ideal generated by h1,h2,h3,h4:
By inspecting their corresponding vanishing sets: substitute x1 with x0, substitute x3 with x2, substitute y1 for d2*x2-y0, substitute y3 for -d2*x0-y2 in the equation x0*y0+x1*y1+x2*y2+x3*y3 will yield 0 (so the vanishing set of <h1,h2,h3,h4> is in the vanishing set of the irreducible polynomial x0*y0+x1*y1+x2*y2+x3*y3).

I was expecting that Giac returns 0 because of Groebner reduction (this is what I get with other computer algebra system).
Could someone explain whether I am doing something wrong or whether this is indeed a bug?

Re: Is this a bug in greduce?

Publié : ven. août 25, 2017 5:04 pm
par frederic han
I think that greduce want a groebner basis in input (and don't compute it at all).

Code : Tout sélectionner

0>> h1:=x0-x1;
x0-x1
// Time 0
1>> h2:=x2-x3;
x2-x3
// Time 0
2>> h3:=d2*x2-y0-y1;
d2*x2-y0-y1
// Time 0
3>> h4:=-d2*x0-y2-y3;
-d2*x0-y2-y3
// Time 0
4>> greduce(x0*y0+x1*y1+x2*y2+x3*y3,[h1,h2,h3,h4],[x0,x1,x2,x3,y0,y1,y2,y3]);
x1*y0+x1*y1+x3*y2+x3*y3
// Time 0
5>> gb:=gbasis([h1,h2,h3,h4],[x0,x1,x2,x3,y0,y1,y2,y3]);

// Groebner basis computation time 0.000693 Memory 0.027564M
[x1*y0+x1*y1+x3*y2+x3*y3,x0-x1,x1*d2+y2+y3,x2-x3,x3*d2-y0-y1]
// Time 0
6>> greduce(x0*y0+x1*y1+x2*y2+x3*y3,gb,[x0,x1,x2,x3,y0,y1,y2,y3]);
0
// Time 0

Re: Is this a bug in greduce?

Publié : ven. août 25, 2017 7:18 pm
par jocaps
frederic han a écrit :I think that greduce want a groebner basis in input (and don't compute it at all).
Ah, yes you are right. Thank you for clarifying. This makes more sense, otherwise greduce will need to compute the groebner basis all the time. Thank you.