|  |  D.2.4.12 envelop Procedure from librarygrobcov.lib(see  grobcov_lib).
 
Example:Usage:
envelop(poly F,ideal C[,options]);
poly F must represent the family of hyper-surfaces for
which on want to compute its envelop. ideal C must be
 the ideal of restrictions on the variables defining the
family, and should contain less polynomials than the
 number of variables. (x_1,..,x_n) are the variables of
the hyper-surfaces of F, that are considered as
 parameters of the parametric ring. (u_1,..,u_m) are
 the parameteres of the hyper-surfaces, that are
 considered as variables of the parametric ring.
 Calling sequence:
 ring R=(0,x_1,..,x_n),(u_1,..,u_m),lp;
 poly F=F(x_1,..,x_n,u_1,..,u_m);
 ideal C=g_1(u_1,..u_m),..,g_s(u_1,..u_m);
 envelop(F,C[,options]); where s<m.
 
Return:
The output is a list of the components [C_1, .. , C_n]
of the locus. Each component is given by
Ci=[pi,[pi1,..pi_s_i],tax] where
 pi,[pi1,..pi_s_i] is the canonical P-representation of
the component.
 Concerning tax: (see help for locus)
 For normal-point components is
 tax=[d,taxonomy,anti-image], being
 d=dimension of the anti-image
 taxonomy="Normal" or "Special"
 anti-image=values of the mover corresponding
 to the component
 For non-normal-point components is
 tax=[d,taxonomy]
 d=dimension of the component
 taxonomy="Accumulation" or "Degenerate".
 
Options:
An option is a pair of arguments: string, integer.
To modify the default options,
 pairs of arguments -option name, value- of valid options
must be added to the call. The algorithm allows the
 following option as pair of arguments:
 "comments", c: by default it is 0, but it can be set to 1.
"anti-image", a: by default a=1 and the anti-image is
shown also for "Normal" components.
 For a=0, it is not shown.
 
Note:
grobcov and locus are called internally.
The basering R, must be of the form Q[x][u]
 (x=parameters, u=variables).
 This routine uses the generalized definition of envelop
introduced in the book
 A. Montes. "The Groebner Cover" (Discussing Parametric
 Polynomial Systems) not yet published.
 
 |  | LIB "grobcov.lib";
if(defined(R)){kill R;}
ring R=(0,x,y),(r,s,y1,x1),lp;
poly F=(x-x1)^2+(y-y1)^2-r;
ideal g=(x1-2*(s+r))^2+(y1-s)^2-s;
def E=envelop(F,g);
E;
==> [1]:
==>    [1]:
==>       _[1]=(512*x^3-1024*x^2*y^2-2560*x^2*y-640*x^2+4096*x*y^3+4864*x*y^2\
   -704*x*y+984*x-4096*y^4+1536*y^3-16*y^2+144*y+289)
==>    [2]:
==>       [1]:
==>          _[1]=1
==>    [3]:
==>       [1]:
==>          1
==>       [2]:
==>          Normal
==>       [3]:
==>          _[1]=1024*y1^4-1024*y1^3*x1+896*y1^3+256*y1^2*x1^2-1344*y1^2*x1+\
   132*y1^2+128*y1*x1^2-560*y1*x1-28*y1+16*x1^2-72*x1+1
==>          _[2]=80*s*x1-512*y1^3+512*y1^2*x1-192*y1^2-128*y1*x1^2+400*y1*x1\
   +30*y1-32*x1^2+68*x1-1
==>          _[3]=40*s*y1+20*s-8*y1^2-16*y1*x1-6*y1-4*x1-1
==>          _[4]=10*s^2+6*y1^2-8*y1*x1-y1-2*x1
==>          _[5]=8*r+10*s-2*y1-4*x1-1
E[1][1];
==> _[1]=(512*x^3-1024*x^2*y^2-2560*x^2*y-640*x^2+4096*x*y^3+4864*x*y^2-704*x\
   *y+984*x-4096*y^4+1536*y^3-16*y^2+144*y+289)
string("Taxonomy=", E[1][3][2]);
==> Taxonomy=Normal
// EXAMPLE
// Steiner Deltoid
// 1. Consider the circle x1^2+y1^2-1=0, and a mover point M(x1,y1) on it.
// 2. Consider the triangle A(0,1), B(-1,0), C(1,0).
// 3. Consider lines passing through M perpendicular to two sides of ABC triangle.
// 4. Obtain the envelop of the lines above.
if(defined(R)){kill R;}
ring R=(0,x,y),(x1,y1,x2,y2),lp;
short=0;
ideal C=(x1)^2+(y1)^2-1,
x2+y2-1,
x2-y2-x1+y1;
matrix M[3][3]=x,y,1,x2,y2,1,x1,0,1;
poly F=det(M);
// Curves Family F
F;
==> -x1*y2+(y)*x1+(-y)*x2+(x)*y2
// Conditions C=
C;
==> C[1]=x1^2+y1^2-1
==> C[2]=x2+y2-1
==> C[3]=-x1+y1+x2-y2
envelop(F,C);
==> [1]:
==>    [1]:
==>       _[1]=(x^4+2*x^2*y^2+10*x^2*y-x^2+y^4-6*y^3+12*y^2-8*y)
==>    [2]:
==>       [1]:
==>          _[1]=1
==>    [3]:
==>       [1]:
==>          1
==>       [2]:
==>          Normal
==>       [3]:
==>          _[1]=x2+y2-1
==>          _[2]=y1^2-2*y1*y2+y1+2*y2^2-2*y2
==>          _[3]=x1-y1+2*y2-1
==> [2]:
==>    [1]:
==>       _[1]=(x+y-1)
==>    [2]:
==>       [1]:
==>          _[1]=1
==>    [3]:
==>       [1]:
==>          0
==>       [2]:
==>          Special
==>       [3]:
==>          _[1]=4*y2^3-4*y2^2-y2
==>          _[2]=x2+y2-1
==>          _[3]=y1+2*y2^2-3*y2
==>          _[4]=x1+2*y2^2-y2-1
 | 
 
 |