
7.7.5.0. deRhamCohomIdeal
Procedure from library dmodapp.lib (see dmodapp_lib).
 Usage:
 deRhamCohomIdeal (I[,w,eng,k,G]);
I ideal, w optional intvec, eng and k optional ints, G optional ideal
 Return:
 ideal
 Assume:
 The basering is the nth Weyl algebra D over a field of characteristic
zero 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).
Further, assume that I is of special kind, namely let f in K[x] and
consider the module K[x,1/f]f^m, where m is smaller than or equal to
the minimal integer root of the BernsteinSato polynomial of f.
Since this module is known to be a holonomic Dmodule, it has a cyclic
presentation D/I.
 Purpose:
 computes a basis of the nth de Rham cohomology group of the complement
of the hypersurface defined by f
 Note:
 The elements of the basis are of the form f^m*p, where p runs over the
entries of the returned ideal.
If I does not satisfy the assumptions described above, the result might
have no meaning. Note that I can be computed with annfs .
If w is an intvec with exactly n strictly positive entries, w is used
in the computation. Otherwise, and by default, w is set to (1,...,1).
If eng<>0, std is used for Groebner basis computations,
otherwise, and by default, slimgb is used.
Let F(I) denote the Fourier transform of I wrt w.
An integer smaller than or equal to the minimal integer root of the
bfunction of F(I) wrt the weight (w,w) can be specified via the
optional argument k.
The optional argument G is used for specifying a Groebner Basis of F(I)
wrt the weight (w,w), that is, the initial form of G generates the
initial ideal of F(I) wrt the weight (w,w).
Further note, that the assumptions on I, k and G (if given) are not
checked.
 Theory:
 (SST) pp. 232235
 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^3+y^3+z^3;
bfctAnn(F); // BernsteinSato poly of F has minimal integer root 2
==> [1]:
==> _[1]=1
==> _[2]=4/3
==> _[3]=5/3
==> _[4]=2
==> [2]:
==> 2,1,1,1
def W = annRat(1,F^2); // so we compute the annihilator of 1/F^2
setring W; W; // Weyl algebra, contains LD = Ann(1/F^2)
==> // coefficients: QQ
==> // number of vars : 6
==> // block 1 : ordering dp
==> // : names x y z Dx Dy Dz
==> // block 2 : ordering C
==> // noncommutative relations:
==> // Dxx=x*Dx+1
==> // Dyy=y*Dy+1
==> // Dzz=z*Dz+1
LD; // K[x,y,z,1/F]F^(2) is isomorphic to W/LD as Wmodule
==> LD[1]=x*Dx+y*Dy+z*Dz+6
==> LD[2]=z^2*Dyy^2*Dz
==> LD[3]=z^2*Dxx^2*Dz
==> LD[4]=y^2*Dxx^2*Dy
==> LD[5]=x^3*Dz+y^3*Dz+z^3*Dz+6*z^2
==> LD[6]=x^3*Dy+y^3*Dy+y^2*z*Dz+6*y^2
deRhamCohomIdeal(LD); // we see that the Kdim is 2
==> _[1]=x^3*Dx*Dy*Dz
==> _[2]=x*y*z*Dx*Dy*Dz
 See also:
deRhamCohom.
