# Singular

#### D.2.4.20 WLemma

Procedure from library `grobcov.lib` (see grobcov_lib).

Usage:
WLemma(F,A[,options]);
The first argument ideal F in Q[x_1,..,x_n][u_1,..,u_m]; The second argument ideal A in Q[x_1,..,x_n].
Calling sequence:
ring R=(0,x_1,..,x_n),(u_1,..,u_m),lp;
ideal F=f_1(x_1,..,x_n,u_1,..,u_m),..,
f_s(x_1,..,x_n,u_1,..,u_m);
ideal A=g_1(u_1,..u_m),..,g_s(u_1,..u_m);
list # : Options
Calling sequence:
WLemma(F,A[,options]);

Given the ideal F and ideal A
it returns the list (lpp,B,S) were B is the
reduced Groebner basis of the specialized F over
the segment S, subset of V(A) with top A,
determined by Wibmer's Lemma.
S is determined in P-representation
(or optionally in C-representation). The basis is
given by I-regular functions.

Options:
either ("rep", 0) or ("rep",1) the representation of the resulting segment, by default is
0 =P-representation, (default) but can be set to
1=C-representation.

Return:
list of [lpp,B,S] =
being B the reduced Groebner Basis given by
I-regular functions in full representation, of
the specialized ideal F on the segment S,
subset of V(A) with top A.
given in P- or C-representation.
It is the result of Wibmer's Lemma. See
A. Montes , M. Wibmer, "Groebner Bases for
Polynomial Systems with parameters".
JSC 45 (2010) 1391-1425.)
or the book
A. Montes. "The Groebner Cover" (Discussing
Parametric Polynomial Systems).

Note:
The basering R, must be of the form Q[a][x]
(a=parameters, x=variables).

Example:
 ```LIB "grobcov.lib"; if(defined(R)){kill R;} ring R=(0,a,b,c,d,e,f),(x,y),lp; ideal F=a*x^2+b*x*y+c*y^2,d*x^2+e*x*y+f*y^2; ideal A=a*e-b*d; WLemma(F,A); ==> [1]: ==> _[1]=y2 ==> _[2]=x2 ==> [2]: ==> [1]: ==> _[1]=(af-cd)*y2 ==> [2]: ==> _[1]=(d)*x2+(e)*xy+(f)*y2 ==> _[2]=(a)*x2+(b)*xy+(c)*y2 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(ae-bd) ==> [2]: ==> [1]: ==> _[1]=(d) ==> _[2]=(a) ==> [2]: ==> _[1]=(bf-ce) ==> _[2]=(af-cd) ==> _[3]=(ae-bd) WLemma(F,A,"rep",1); ==> [1]: ==> _[1]=y2 ==> _[2]=x2 ==> [2]: ==> [1]: ==> _[1]=(af-cd)*y2 ==> [2]: ==> _[1]=(d)*x2+(e)*xy+(f)*y2 ==> _[2]=(a)*x2+(b)*xy+(c)*y2 ==> [3]: ==> [1]: ==> _[1]=(ae-bd) ==> [2]: ==> _[1]=(bdf-cde) ==> _[2]=(af-cd) ==> _[3]=(ae-bd) ```