##### 7.5.5.0. annPoly

Procedure from library `dmodapp.lib` (see dmodapp_lib).

Usage:
  annPoly(f); f a poly

Return:
  ring (a Weyl algebra) containing an ideal 'LD'

Purpose:
  compute the complete annihilator ideal of f in the corresponding
  Weyl algebra

Assume:
  basering is commutative and over a field of characteristic 0

Note:
  Activate the output ring with the `setring` command.
  In the output ring, the ideal 'LD' (in Groebner basis) is the
  annihilator.

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,z),dp;
    poly f = x^2*z - y^3;
    def A = annPoly(f);
    setring A;    // A is the 3rd Weyl algebra in 6 variables
    LD;           // the Groebner basis of annihilator
    ==> LD[1]=Dz^2
    ==> LD[2]=Dy*Dz
    ==> LD[3]=Dx*Dy
    ==> LD[4]=y*Dy+3*z*Dz-3
    ==> LD[5]=x*Dx-2*z*Dz
    ==> LD[6]=z*Dx*Dz-Dx
    ==> LD[7]=Dy^3+3*Dx^2*Dz
    ==> LD[8]=x*Dy^2+3*y*Dx*Dz
    ==> LD[9]=x^2*Dy+3*y^2*Dz
    ==> LD[10]=Dx^3
    ==> LD[11]=3*y*Dx^2+z*Dy^2
    ==> LD[12]=3*y^2*Dx+2*x*z*Dy
    ==> LD[13]=y^3*Dz-x^2*z*Dz+x^2
    gkdim(LD);    // must be 3 = 6/2, since A/LD is holonomic module
    ==> 3
    NF(Dy^4, LD); // must be 0 since Dy^4 clearly annihilates f
    ==> 0
    poly f = imap(r,f);
    NF(LD*f,std(ideal(Dx,Dy,Dz))); // must be zero if LD indeed annihilates f
    ==> _[1]=0
    ==> _[2]=0
    ==> _[3]=0
    ==> _[4]=0
    ==> _[5]=0
    ==> _[6]=0
    ==> _[7]=0
    ==> _[8]=0
    ==> _[9]=0
    ==> _[10]=0
    ==> _[11]=0
    ==> _[12]=0
    ==> _[13]=0

See also: annRat.

User manual for Singular version 4.4.1, 2025, generated by texi2html.