# Singular

#### D.2.4.25 DifConsLCSets

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

Return:
A list of locally closed sets equivalent to the difference S= A "" B. Lc=[ [1][p1,q1]] [[2][p2,q2]]..],
For obtaining the canonical representation into levels of the constructible A "" B one have to apply ConsLevels and then optatively Levels.

Example:
 ```LIB "grobcov.lib"; if(defined(R)){kill R;} ring R=(0,x,y,z,t),(x1,y1),lp; ideal a1=x; ideal a2=x,y; ideal a3=x,y,z; ideal a4=x,y,z,t; ideal b1=y; ideal b2=y,z; ideal b3=y,z,t; ideal b4=1; list L1=a1,a2,a3,a4; list L2=b1,b2,b3,b4; L1; ==> [1]: ==> _[1]=(x) ==> [2]: ==> _[1]=(x) ==> _[2]=(y) ==> [3]: ==> _[1]=(x) ==> _[2]=(y) ==> _[3]=(z) ==> [4]: ==> _[1]=(x) ==> _[2]=(y) ==> _[3]=(z) ==> _[4]=(t) L2; ==> [1]: ==> _[1]=(y) ==> [2]: ==> _[1]=(y) ==> _[2]=(z) ==> [3]: ==> _[1]=(y) ==> _[2]=(z) ==> _[3]=(t) ==> [4]: ==> _[1]=1 def LL=DifConsLCSets(L1,L2); LL; ==> [1]: ==> [1]: ==> _[1]=(x) ==> [2]: ==> _[1]=(y) ==> _[2]=(x) ==> [2]: ==> [1]: ==> _[1]=(z) ==> _[2]=(y) ==> _[3]=(x) ==> [2]: ==> _[1]=(t) ==> _[2]=(z) ==> _[3]=(y) ==> _[4]=(x) def LLL=ConsLevels(LL); LLL; ==> [1]: ==> _[1]=(x) ==> [2]: ==> _[1]=(y) ==> _[2]=(x) ==> [3]: ==> _[1]=(z) ==> _[2]=(y) ==> _[3]=(x) ==> [4]: ==> _[1]=(t) ==> _[2]=(z) ==> _[3]=(y) ==> _[4]=(x) ==> [5]: ==> _[1]=1 def LLLL=Levels(LLL); LLLL; ==> [1]: ==> [1]: ==> 1 ==> [2]: ==> [1]: ==> _[1]=(x) ==> [2]: ==> _[1]=(y) ==> _[2]=(x) ==> [2]: ==> [1]: ==> 3 ==> [2]: ==> [1]: ==> _[1]=(z) ==> _[2]=(y) ==> _[3]=(x) ==> [2]: ==> _[1]=(t) ==> _[2]=(z) ==> _[3]=(y) ==> _[4]=(x) ```