# Singular

#### D.2.4.13 envelopdg

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

Usage:
envelopdg(L);
The input list L must be the output of the call to
the routine 'envolop' of the family of curves

Return:
The relevant components of the envelop in Dynamic Geometry. 'Normal' and 'Accumulation' components are always considered 'Relevant'. 'Special' components of the envelop outputs three objects in its characterization: 'Special', the antiimage ideal, and the integer 0 or 1, that indicates that the given component is formed (1) or is not formed (0) by curves of the family. Only if yes, 'envelopdg' considers the component as 'Relevant' .

Note:
It must be called to the output of the 'envelop' routine. The basering R, must be of the form Q[a,b,..][x,y,..].

Example:
 ```LIB "grobcov.lib"; // 1. Take a fixed line l: x1-y1=0 and consider // the family F of a lines parallel to l passing through the mover point M // 2. Consider a circle x1^2+x2^2-25, and a mover point M(x1,x2) on it. // 3. Compute the envelop of the family of lines. ring R=(0,x,y),(x1,y1),lp; short=0; poly F=(y-y1)-(x-x1); ideal C=x1^2+y1^2-25; short=0; // Curves Family F= F; ==> x1-y1+(-x+y) // Conditions C= C; ==> C[1]=x1^2+y1^2-25 envelop(F,C); ==> [1]: ==> [1]: ==> _[1]=(x^2-2*x*y+y^2-50) ==> [2]: ==> [1]: ==> _[1]=1 ==> [3]: ==> [1]: ==> Special ==> [2]: ==> 2*y1^2-25,x1+y1 ==> [3]: ==> 1 ==> [4]: ==> 1 envelopdg(envelop(F,C)); ==> [1]: ==> [1]: ==> _[1]=(x^2-2*x*y+y^2-50) ==> [2]: ==> [1]: ==> _[1]=1 ==> [3]: ==> Relevant ==> [4]: ==> 1 ```