
D.2.4.14 envelop
Procedure from library grobcov.lib (see grobcov_lib).
 Usage:
 envelop(poly F,ideal C[,options]);
poly F must represent the family of hypersurfaces 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 hypersurfaces of F, that are considered as
parameters of the parametric ring. (u_1,..,u_m) are
the parameteres of the hypersurfaces, 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 Prepresentation of
the component.
Concerning tax: (see help for locus)
For normalpoint components is
tax=[d,taxonomy,antiimage], being
d=dimension of the antiimage
taxonomy="Normal" or "Special"
antiimage=values of the mover corresponding
to the component
For nonnormalpoint 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.
"antiimage", a: by default a=1 and the antiimage 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.
Example:
 LIB "grobcov.lib";
// Steiner Deltoid
// 1. Consider the circle x1^2+y1^21=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)^21,
x2+y21,
x2y2x1+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^21
==> C[2]=x2+y21
==> C[3]=x1+y1+x2y2
envelop(F,C);
==> [1]:
==> [1]:
==> _[1]=(x^4+2*x^2*y^2+10*x^2*yx^2+y^46*y^3+12*y^28*y)
==> [2]:
==> [1]:
==> _[1]=1
==> [3]:
==> [1]:
==> 1
==> [2]:
==> Normal
==> [3]:
==> _[1]=x2+y21
==> [2]:
==> [1]:
==> _[1]=(x+y1)
==> [2]:
==> [1]:
==> _[1]=1
==> [3]:
==> [1]:
==> 0
==> [2]:
==> Special
==> [3]:
==> _[1]=4*y2^34*y2^2y2
==> _[2]=x2+y21

