# Singular

#### D.2.4.8 PtoCrep

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

Usage:
PtoCrep(L)
Input L: list [ Comp_1, .. , Comp_s ] where
Comp_i=[p_i,[p_i1,..,p_is_i] ], is
the P-representation of a locally closed set V(N) \ V(M) RETURN: The canonical C-representation of the locally closed set [ P,Q ], a pair of radical ideals with P included in Q, representing the set V(P) \ V(Q)
NOTE: Operates in a ring R=Q[a] (a=parameters)
KEYWORDS: locally closed set, canoncial form
EXAMPLE: PtoCrep; shows an example

Example:
 ```LIB "grobcov.lib"; if(defined(Grobcov::@P)){kill Grobcov::@R; kill Grobcov::@P; kill Grobcov::@RP;} short=0; ring R=0,(x,y,z),lp; // (P,Q) represents a locally closed set ideal P=x^3+x*y^2+x*z^2-25*x; ideal Q=y-4,x*z,x^2-3*x; // Now compute the P-representation= def L=Prep(P,Q); L; ==> [1]: ==> [1]: ==> _[1]=x2+y2+z2-25 ==> [2]: ==> [1]: ==> _[1]=z ==> _[2]=y-4 ==> _[3]=x-3 ==> [2]: ==> _[1]=z-3 ==> _[2]=y-4 ==> _[3]=x ==> [3]: ==> _[1]=z+3 ==> _[2]=y-4 ==> _[3]=x ==> [2]: ==> [1]: ==> _[1]=x ==> [2]: ==> [1]: ==> _[1]=y-4 ==> _[2]=x // Now compute the C-representation= def J=PtoCrep(L); J; ==> [1]: ==> _[1]=x3+xy2+xz2-25x ==> [2]: ==> _[1]=y-4 ==> _[2]=xz ==> _[3]=x2-3x // Now come back recomputing the P-represetation of the C-representation= Prep(J[1],J[2]); ==> [1]: ==> [1]: ==> _[1]=x2+y2+z2-25 ==> [2]: ==> [1]: ==> _[1]=z ==> _[2]=y-4 ==> _[3]=x-3 ==> [2]: ==> _[1]=z+3 ==> _[2]=y-4 ==> _[3]=x ==> [3]: ==> _[1]=z-3 ==> _[2]=y-4 ==> _[3]=x ==> [2]: ==> [1]: ==> _[1]=x ==> [2]: ==> [1]: ==> _[1]=y-4 ==> _[2]=x ```