# Singular

#### D.2.4.10 extendGC

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

Usage:
extendGC(list GC);
list GC must the grobcov of a parametric ideal computed with option "rep",2. It determines the full representation.
The default option of grobcov provides the bases in generic representation (the I-regular functions forming the bases are then given by a single polynomial. They can specialize to zero for some points of the segments, but in general, it is sufficient for many pouposes. Nevertheless the I-regular functions allow a full representation given by a set of polynomials specializing to the value of the function (after normalization) or to zero, but at least one of the polynomials specializes to non-zero. The full representation can be obtained by computing the grobcov with option "ext",1. (The default option there is "ext",0). With option "ext",1 the computation can be much more time consuming, but the result can be simpler.
Alternatively, one can compute the full representation of the bases after computing grobcov with the default option for "ext" and the option "rep",2, that outputs both the Prep and the Crep of the segments, and then call "extendGC" to its output.

Return:
When calling extendGC(grobcov(S,"rep",2)) the result is of the form [ [ [lpp_1,basis_1,segment_1,lpph_1], ... ,[lpp_s,basis_s,segment_s,lpph_s]] ], where each function of the basis can be given by an ideal of representants.

Note:
The basering R, must be of the form Q[a][x], (a=parameters, x=variables), and should be defined previously. The ideal must be defined on R.

Example:
 ```LIB "grobcov.lib"; if(defined(R)){kill R;} ring R=(0,a0,b0,c0,a1,b1,c1),(x), dp; short=0; ideal S=a0*x^2+b0*x+c0, a1*x^2+b1*x+c1; def GCS=grobcov(S,"rep",2); GCS; ==> [1]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=0 ==> [2]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*\ a1*c1-b0*c0*a1*b1+c0^2*a1^2) ==> [4]: ==> [1]: ==> _[1]=0 ==> [2]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*c1-\ b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> [1]: ==> _[1]=x ==> [2]: ==> _[1]=(b0*a1*c1-c0*a1*b1)*x+(-a0*c1^2+b0*b1*c1+c0*a1*c1-c0*b1^2) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*\ c1-b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> [1]: ==> _[1]=(b0*c1-c0*b1) ==> _[2]=(a0*c1-c0*a1) ==> _[3]=(a0*b1-b0*a1) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*c1-\ b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> _[1]=(-a0*c1+c0*a1) ==> _[2]=(-a0*b1+b0*a1) ==> _[3]=(-a0*b0*c1+a0*c0*b1) ==> [3]: ==> [1]: ==> _[1]=x ==> [2]: ==> _[1]=(b1)*x+(c1) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [2]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) ==> [2]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [4]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [2]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [4]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [2]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [5]: ==> [1]: ==> _[1]=0 ==> [2]: ==> _[1]=0 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [2]: ==> [1]: ==> _[1]=1 ==> [4]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [2]: ==> _[1]=1 ==> [6]: ==> [1]: ==> _[1]=x^2 ==> [2]: ==> _[1]=(a1)*x^2+(b1)*x+(c1) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(b0*c1-c0*b1) ==> _[2]=(a0*c1-c0*a1) ==> _[3]=(a0*b1-b0*a1) ==> [2]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [4]: ==> [1]: ==> _[1]=(-b0*c1+c0*b1) ==> _[2]=(-a0*c1+c0*a1) ==> _[3]=(-a0*b1+b0*a1) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) ==> [7]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [2]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) def FGC=extendGC(GCS,"rep",0); // Full representation= FGC; ==> [1]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=0 ==> [2]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*\ a1*c1-b0*c0*a1*b1+c0^2*a1^2) ==> [4]: ==> [1]: ==> _[1]=0 ==> [2]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*c1-\ b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> [1]: ==> _[1]=x ==> [2]: ==> _[1]=(a0*b1-b0*a1)*x+(a0*c1-c0*a1) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*\ c1-b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> [1]: ==> _[1]=(b0*c1-c0*b1) ==> _[2]=(a0*c1-c0*a1) ==> _[3]=(a0*b1-b0*a1) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a0^2*c1^2-a0*b0*b1*c1-2*a0*c0*a1*c1+a0*c0*b1^2+b0^2*a1*c1-\ b0*c0*a1*b1+c0^2*a1^2) ==> [2]: ==> _[1]=(-a0*c1+c0*a1) ==> _[2]=(-a0*b1+b0*a1) ==> _[3]=(-a0*b0*c1+a0*c0*b1) ==> [3]: ==> [1]: ==> _[1]=x ==> [2]: ==> [1]: ==> _[1]=(b1)*x+(c1) ==> _[2]=(b0)*x+(c0) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [2]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) ==> [2]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [4]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [2]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [4]: ==> [1]: ==> _[1]=(b1) ==> _[2]=(a1) ==> _[3]=(b0) ==> _[4]=(a0) ==> [2]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [5]: ==> [1]: ==> _[1]=0 ==> [2]: ==> _[1]=0 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [2]: ==> [1]: ==> _[1]=1 ==> [4]: ==> [1]: ==> _[1]=(c1) ==> _[2]=(b1) ==> _[3]=(a1) ==> _[4]=(c0) ==> _[5]=(b0) ==> _[6]=(a0) ==> [2]: ==> _[1]=1 ==> [6]: ==> [1]: ==> _[1]=x^2 ==> [2]: ==> [1]: ==> _[1]=(a1)*x^2+(b1)*x+(c1) ==> _[2]=(a0)*x^2+(b0)*x+(c0) ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(b0*c1-c0*b1) ==> _[2]=(a0*c1-c0*a1) ==> _[3]=(a0*b1-b0*a1) ==> [2]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [4]: ==> [1]: ==> _[1]=(-b0*c1+c0*b1) ==> _[2]=(-a0*c1+c0*a1) ==> _[3]=(-a0*b1+b0*a1) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) ==> [7]: ==> [1]: ==> _[1]=1 ==> [2]: ==> _[1]=1 ==> [3]: ==> [1]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [2]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(b0*c1-c0*b1) ==> _[3]=(a0) ==> [4]: ==> [1]: ==> _[1]=(a1) ==> _[2]=(a0) ==> [2]: ==> _[1]=(a1) ==> _[2]=(a0) ==> _[3]=(-b0*c1+c0*b1) ```