Question: Gianni-Kalkbrener theorem

I would like some help in order to build the following algorithm (Gianni-Kalkbrener) on Maple.

I have a cyclic-5 problem of the following polynomials

L := [a*b*c*d+b*c*d*e+c*d*e*a+d*e*a*b+e*a*b*c, a*b+b*c+c*d+d*e+e*a, a+b+c+d+e, a*b*c*d*e-1, a*b*c+b*c*d+c*d*e+d*e*a+e*a*b]

 

I found the Grobner basis of that using:

GrobnerBasisOfL := Basis(L, tdeg(a, b, c, d, e))

 

Then, I have found the FGLM of the Basis using:

FGLMOfGrobnerBasis := FGLM(GrobnerBasisOfL, tdeg(a, b, c, d, e), plex(a, b, c, d, e))

in order to be of a purely lexographic order

 

I need to build the following algorithm on the FGLMOfGrobnerBasis but I'm not quite sure how to write it on Maple

Algorithm (Gianni-Kalkbrener) GK(G, n)
Input: A Grobner base G for a zero-dimensional ideal I in n variables with respect to lexicographic order.
Output: A list of solutions of G
S := {xn = RootOf(pn)}
for k = n-1,...,1 do
S := GKstep(G,k,S)
return S
Algorithm (Gianni-Kalkbrener Step) GKstep(G, k, A)
Input: A Grobner base G for a zero-dimensional ideal I with respect to lexico-
graphic order, an integer k, and A a list of solutions of Gk+1.
Output: A list of solutions of Gk.
B := 0;
for each a E A
i := 1
while (L := leadingcoefficient xk(pk,i( a))) = 0 do i := i + 1
 
if L is invertible with respect to a
then B := B U {(a U {xk= RootOf(pk,i( a))})}

else # a is split as a1U a2
B := B U GKstep(G, k, {a1}) U GKstep(G, k, {a2})

return B
 

 

Please Wait...