- Usage:
`charIdeal M, charIdeal I`

- Outputs:
- an ideal, the characteristic ideal of
*M*

- an ideal, the characteristic ideal of

The characteristic ideal of *M* is the annihilator of *gr(M)* under a good filtration with respect to the order filtration. If *D* is the Weyl algebra **C**`<`*x_1,....,x_n,d_1,...,d_n*`>`, then the order filtration corresponds to the weight vector (0,...,0,1...,1). The characteristic ideal lives in the associated graded ring of *D* with respect to the order filtration, and this is a commutative polynomial ring **C**`[`*x_1,....,x_n,xi_1,...,xi_n*`]` -- here the *xi*'s are the symbols of the *d*'s. The zero locus of the characteristic ideal is equal to the characteristic variety of *D/I*, which is an invariant of a D-module.

The algorithm to compute the characteristic ideal consists of computing the initial ideal of I with respect to the weight vector (0,...,0,1...,1). See the book 'Groebner deformations of hypergeometric differential equations' by Saito-Sturmfels-Takayama (1999) for more details.

i1 : W = QQ[x,y,Dx,Dy, WeylAlgebra => {x=>Dx,y=>Dy}] o1 = W o1 : PolynomialRing |

i2 : I = ideal (x*Dx+2*y*Dy-3, Dx^2-Dy) 2 o2 = ideal (x*Dx + 2y*Dy - 3, Dx - Dy) o2 : Ideal of W |

i3 : charIdeal I 2 o3 = ideal (Dx , x*Dx + 2y*Dy) o3 : Ideal of QQ[x, y, Dx, Dy] |

- Ddim -- dimension of a D-module
- singLocus -- singular locus of a D-module
- holonomicRank -- rank of a D-module

- charIdeal(Ideal)
- charIdeal(Module)