# Singular

##### 7.5.5.0. charInfo
Procedure from library `dmodapp.lib` (see dmodapp_lib).

Usage:
charInfo(I); I an ideal

Return:
ring (commut.) containing ideals 'charVar','singLoc' and list 'primDec'

Purpose:
computes characteristic variety of I (in the sense of D-module theory),
its singular locus and primary decomposition

Assume:
The basering is the n-th Weyl algebra over a field of characteristic 0
and for all 1<=i<=n the identity var(i+n)*var(i)=var(i)*var(i+1)+1
holds, i.e. the sequence of variables is given by
x(1),...,x(n),D(1),...,D(n), where D(i) is the differential operator
belonging to x(i).

Note:
In the output ring, which is commutative:
- the ideal 'charVar' is the characteristic variety char(I),
- the ideal 'SingLoc' is the singular locus of char(I),
- the list 'primDec' is the primary decomposition of char(I).

Display:
If `printlevel`=1, progress debug messages will be printed,
if `printlevel`>=2, all the debug messages will be printed.

Example:
 ```LIB "dmodapp.lib"; ring r = 0,(x,y),Dp; poly F = x3-y2; printlevel = 0; def A = annfs(F); setring A; // Weyl algebra LD; // the annihilator of F ==> LD[1]=2*x*Dx+3*y*Dy+6 ==> LD[2]=3*x^2*Dy+2*y*Dx ==> LD[3]=9*x*y*Dy^2-4*y*Dx^2+15*x*Dy ==> LD[4]=27*y^2*Dy^3+8*y*Dx^3+135*y*Dy^2+105*Dy def CA = charInfo(LD); setring CA; CA; // commutative ring ==> // coefficients: QQ ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names x y Dx Dy ==> // block 2 : ordering C charVar; // characteristic variety ==> charVar[1]=2*x*Dx+3*y*Dy ==> charVar[2]=3*x^2*Dy+2*y*Dx ==> charVar[3]=9*x*y*Dy^2-4*y*Dx^2 ==> charVar[4]=27*y^2*Dy^3+8*y*Dx^3 singLoc; // singular locus ==> singLoc[1]=y*Dy ==> singLoc[2]=y*Dx ==> singLoc[3]=2*x*Dx-3*y*Dy ==> singLoc[4]=9*x*Dy^2-2*Dx^2 ==> singLoc[5]=3*x^2*Dy-y*Dx ==> singLoc[6]=Dx^3 ==> singLoc[7]=x^3-y^2 primDec; // primary decomposition ==> [1]: ==> [1]: ==> _[1]=Dy ==> _[2]=Dx ==> [2]: ==> _[1]=Dy ==> _[2]=Dx ==> [2]: ==> [1]: ==> _[1]=27*y*Dy^3+8*Dx^3 ==> _[2]=9*x*Dy^2-4*Dx^2 ==> _[3]=2*x*Dx+3*y*Dy ==> _[4]=3*x^2*Dy+2*y*Dx ==> _[5]=x^3-y^2 ==> [2]: ==> _[1]=27*y*Dy^3+8*Dx^3 ==> _[2]=9*x*Dy^2-4*Dx^2 ==> _[3]=2*x*Dx+3*y*Dy ==> _[4]=3*x^2*Dy+2*y*Dx ==> _[5]=x^3-y^2 ==> [3]: ==> [1]: ==> _[1]=y ==> _[2]=x ==> [2]: ==> _[1]=y ==> _[2]=x ```