D-modules and Cohomology of Varieties

Uli Walther

In this chapter we introduce the reader to some ideas from the world of differential operators. We show how to use these concepts in conjunction with Macaulay 2 to obtain new information about polynomials and their algebraic varieties.

Gröbner bases over polynomial rings have been used for many years in computational algebra, and the other chapters in this book bear witness to this fact. In the mid-eighties some important steps were made in the theory of Gröbner bases in non-commutative rings, notably in rings of differential operators. This chapter is about some of the applications of this theory to problems in commutative algebra and algebraic geometry.

Our interest in rings of differential operators and D-modules stems from the fact that some very interesting objects in algebraic geometry and commutative algebra have a finite module structure over an appropriate ring of differential operators. The prime example is the ring of regular functions on the complement of an affine hypersurface. A more general object is the Čech complex associated to a set of polynomials, and its cohomology, the local cohomology modules of the variety defined by the vanishing of the polynomials. More advanced topics are restriction functors and de Rham cohomology.

With these goals in mind, we shall study applications of Gröbner bases theory in the simplest ring of differential operators, the Weyl algebra, and develop algorithms that compute various invariants associated to a polynomial f. These include the Bernstein-Sato polynomial b_{f}(s), the set of differential operators J(f^{s}) which annihilate the germ of the function f^{s} (where s is a new variable), and the ring of regular functions on the complement of the variety of f.

For a family f_{1}, …, f_{r} of polynomials we study the associated Čech complex as a complex in the category of modules over the Weyl algebra. The algorithms are illustrated with examples. We also give an indication what other invariants associated to polynomials or varieties are known to be computable at this point and list some open problems in the area.

Acknowledgments. It is with great pleasure that I acknowledge the help of A. Leykin, M. Stillman and H. Tsai while writing this chapter. The D-module routines used or mentioned here have all been written by them and I would like to thank them for this marvelous job. I also would like to thank D. Grayson for help on Macaulay 2 and D. Eisenbud and B. Sturmfels for inviting me to contribute to this volume.

1 Introduction

1.1 Local Cohomology – Definitions

Let R be a commutative Noetherian ring (always associative, with identity) and M an R-module. For f ∈ R one defines a Čech complex of R-modules

Č^{•}(f) = (0 → \underbrace{R}_{degree 0} ↪ \underbrace{R[f^{−1}]}_{degree 1} → 0)  (1.1)

where the injection is the natural map sending g ∈ R to g/1 ∈ R[f^{−1}] and “degree” refers to cohomological degree. For a family f_{1}, …, f_{r} ∈ R one defines

Č^{•}(f_{1}, …, f_{r}) = ⨂_{i=1}^{r} Č^{•}(f_{i}),  (1.2)

and for an R-module M one sets

Č^{•}(M; f_{1}, …, f_{r}) = M ⊗_{R} Č^{•}(f_{1}, …, f_{r}).  (1.3)

The i-th (algebraic) local cohomology functor with respect to f_{1}, …, f_{r} is the i-th cohomology functor of Č^{•}(−; f_{1}, …, f_{r}). If I = R · (f_{1}, …, f_{r}) then this functor agrees with the i-th right derived functor of the functor H_{I}^{0}(−) which sends M to the I-torsion ⋃_{k=1}^{∞}(0 :_{M} I^{k}) of M and is denoted by H_{I}^{i}(−). This means in particular, that H_{I}^{•}(−) depends only on the (radical of the) ideal generated by the f_{i}. Local cohomology was introduced by A. Grothendieck [13] as an algebraic analog of (classical) relative cohomology. For instance, if X is a scheme, Y is a closed subscheme and U = X \ Y then there is a long exact sequence

⋯ → H^{i}(X, 𝔉) → H^{i}(U, 𝔉) → H_{Y}^{i+1}(X, 𝔉) → ⋯

for all quasi-coherent sheaves 𝔉 on X. (To make sense of this one has to generalize the definition of local cohomology to be the right derived functor of H_{Y}^{0} (−) : 𝔉 → (U → {f ∈ 𝔉(U) : supp(f) ⊆ Y ∩ U}).) An introduction to algebraic local cohomology theory may be found in [8].

The cohomological dimension of I in R, denoted by cd(R, I), is the smallest integer c such that H_{I}^{i}(M) = 0 for all i > c and all R-modules M. If R is the coordinate ring of an affine variety X and I ⊆ R is the defining ideal of the Zariski closed subset Y ⊆ X then the local cohomological dimension of Y in X is defined as cd(R, I). It is not hard to show that if X is smooth, then the integer dim(X) − cd(R, I) depends only on Y but neither on X nor on the embedding Y ↪ X.

1.2 Motivation

As one sees from the definition of local cohomology, the modules H_{I}^{i}(R) carry information about the sections of the structure sheaf on Zariski open sets, and hence about the topology of these open sets. This is illustrated by the following examples. Let I ⊆ R and c = cd(R, I). Then I cannot be generated by fewer than c elements – in other words, Spec(R)\Var(I) cannot be covered by fewer than c affine open subsets (i.e., Var(I) cannot be cut out by fewer than c hypersurfaces). In fact, no ideal J with the same radical as I will be generated by fewer than c elements, [8].

Let H_{Sing}^{i}(−; ℂ) stand for the i-th singular cohomology functor with complex coefficients. The classical Lefschetz Theorem [12] states that if X ⊆ ℙ_{ℂ}^{n} is a variety in projective n-space and Y a hyperplane section of X such that X \ Y is smooth, then H_{Sing}^{i}(X; ℂ) → H_{Sing}^{i}(Y; ℂ) is an isomorphism for i < dim(X) − 1 and injective for i = dim(X) − 1. The Lefschetz Theorem has generalizations in terms of local cohomology, called Theorems of Barth Type. For example, let Y ⊆ ℙ_{ℂ}^{n} be Zariski closed and I ⊆ R = ℂ[x_{0}, …, x_{n}] the defining ideal of Y. Then H_{Sing}^{i}(ℙ_{ℂ}^{n}; ℂ) → H_{Sing}^{i}(Y; ℂ) is an isomorphism for i < n − cd(R, I) and injective if i = n − cd(R, I) ([16], Theorem III.7.1).

A consequence of the work of Ogus and Hartshorne ([38], 2.2, 2.3 and [16], Theorem IV.3.1) is the following. If I ⊆ R = ℂ[x_{0}, …, x_{n}] is the defining ideal of a complex smooth variety Y ⊆ ℙ_{ℂ}^{n} then, for i < n − codim(Y),

dim_{ℂ} soc_{R}(H_{𝔪}^{0}(H_{I}^{n−i}(R))) = dim_{ℂ} H_{x}^{i}(Ỹ; ℂ)

where H_{x}^{i}(Ỹ; ℂ) stands for the i-th singular cohomology group of the affine cone Ỹ over Y with support in the vertex x of Ỹ and with coefficients in ℂ (and soc_{R}(M) denotes the socle (0 :_{M} (x_{0}, …, x_{n})) ⊆ M for any R-module M), [25]. These iterated local cohomology modules have a special structure (cf. Subsection 4.3).

Local cohomology relates to the connectedness of the underlying spaces as is shown by the following facts. If Y is a complete intersection of positive dimension in ℙ_{ℂ}^{n}, then Y cannot be disconnected by the removal of closed subsets of codimension 2 in Y or higher, [7]. This is a consequence of the so-called Hartshorne-Lichtenbaum vanishing theorem, see [8].

In a similar spirit one can show that if (A, 𝔪) is a complete local domain of dimension n and f_{1}, …, f_{r} are elements of the maximal ideal with r + 2 ≤ n, then Var(f_{1}, …, f_{r}) \ {𝔪} is connected, [7].

In fact, as we will discuss to some extent in Section 5, over the complex numbers the complex Č^{•}(R; f_{1}, …, f_{r}) for R = ℂ[x_{1}, …, x_{n}] determines the Betti numbers dim_{ℂ}(H_{Sing}^{i}(ℂ^{n} \ Var(f_{1}, …, f_{r}); ℂ)).

1.3 The Master Plan

The cohomological dimension has been studied by many authors. For an extensive list of references and some open questions we recommend to consult the very nice survey article [17].

It turns out that for the determination of cd(R, I) it is in fact enough to find a test to decide whether or not the local cohomology module H_{I}^{i}(R) = 0 for given i, R, I. This is because H_{I}^{i}(R) = 0 for all i > c implies cd(R, I) ≤ c (see [14], Section 1).

Unfortunately, calculations are complicated by the fact that H_{I}^{i}(M) is rarely finitely generated as R-module, even for very nice R and M. In this chapter we show how in an important class of examples one may still carry out explicit computations, by enlarging R.

We shall assume that I ⊆ R_{n} = K[x_{1}, …, x_{n}] where K is a computable field containing the rational numbers. (By a computable field we mean a subfield K of ℂ such that K is described by a finite set of data and for which addition, subtraction, multiplication and division as well as the test whether the result of any of these operations is zero in the field can be executed by the Turing machine. For example, K could be ℚ[\sqrt{2}] stored as a 2-dimensional vector space over ℚ with an appropriate multiplication table.)

The ring of K-linear differential operators D(R, K) of the commutative K-algebra R is defined inductively: one sets D_{0}(R, K) = R, and for i > 0 defines

D_{i}(R, K) = {P ∈ Hom_{K}(R, R) : P r − rP ∈ D_{i−1}(R, K) for all r ∈ R} .

Here, r ∈ R is interpreted as the endomorphism of R that multiplies by r.

The local cohomology modules H_{I}^{i}(R_{n}) have a natural structure of finitely generated left D(R_{n}, K)-modules (see for example [20,25]). The basic reason for this finiteness is that in this case R_{n}[f^{−1}] is a cyclic D(R_{n}, K)-module, generated by f^{a} for ℤ ∋ a ≪ 0 (compare [5]):

R_{n}[f^{−1}] = D(R_{n}, K) • f^{a}.  (1.4)

Using this finiteness we employ the theory of Gröbner bases in D(R_{n}, K) to develop algorithms that give a presentation of H_{I}^{i}(R_{n}) and H_{𝔪}^{i}(H_{I}^{j}(R_{n})) for all triples i, j ∈ ℕ, I ⊆ R_{n} in terms of generators and relations over D(R_{n}, K) (where 𝔪 = R_{n} · (x_{1}, …, x_{n})), see Section 4. This also leads to an algorithm for the computation of the invariants

λ_{i,j}(R_{n}/I) = dim_{K} soc_{R_{n}}(H_{𝔪}^{i}(H_{I}^{n−j}(R_{n})))

introduced in [25].

At the basis for the computation of local cohomology are algorithms that compute the localization of a D(R_{n}, K)-module at a hypersurface f ∈ R_{n}. That means, if the left module M = D(R_{n}, K)^{d}/L is given by means of a finite number of generators for the left module L ⊆ D(R_{n}, K)^{d} then we want to compute a finite number of generators for the left module L′ ⊆ D(R_{n}, K)^{d′} which satisfies

D(R_{n}, K)^{d′}/L′ ≅ (D(R_{n}, K)^{d}/L) ⊗_{R_{n}} R_{n}[f^{−1}],

which we do in Section 3.

Let L be a left ideal of D(R_{n}, K). The computation of the localization of M = D(R_{n}, K)/L at f ∈ R_{n} is closely related to the D(R_{n}, K)[s]-module M_{f} generated by

\overline{1} ⊗ 1 ⊗ f^{s} ∈ M ⊗_{R_{n}} R_{n}[f^{−1}, s] ⊗ f^{s}  (1.5)

and the minimal polynomial b_{f}(s) of s on the quotient of M_{f} by its submodule M_{f} ·f generated over D(R_{n}, K)[s] by \overline{1}⊗f ⊗f^{s}, cf. Section 3. Algorithms for the computation of these objects have been established by T. Oaku in a sequence of papers [31–33].

Astonishingly, the roots of b_{f}(s) prescribe the exponents a that can be used in the isomorphism (1.4) between R_{n}[f^{−1}] and the D(R_{n}, K)-module generated by f^{a}. Moreover, any good exponent a can be used to transform M_{f} into M ⊗ R_{n}[f^{−1}] by a suitable “plugging in” procedure.

Thus the strategy for the computation of local cohomology will be to compute M_{f} and a good a for each f ∈ {f_{1}, …, f_{r}}, and then assemble the Čech complex.

1.4 Outline of the Chapter

The next section is devoted to a short introduction of results on the Weyl algebra D(R_{n}, K) and D-modules as they apply to our work. We start with some remarks on the theory of Gröbner bases in the Weyl algebra.

In Section 3 we investigate Bernstein-Sato polynomials, localizations and the Čech complex. The purpose of that section is to find a presentation of M ⊗ R_{n}[f^{−1}] as a cyclic D(R_{n}, K)-module if M = D(R_{n}, K)/L is a given holonomic D-module (for a definition and some properties of holonomic modules, see Subsection 2.3 below).

In Section 4 we describe algorithms that for arbitrary i, j, k, I determine the structure of H_{I}^{k}(R), H_{𝔪}^{i}(H_{I}^{j}(R)) and find λ_{i,j}(R/I). The final section is devoted to comments on implementations, efficiency, discussions of other topics, and open problems.

2 The Weyl Algebra and Gröbner Bases

D-modules, that is, rings or sheaves of differential operators and modules over these, have been around for several decades and played prominent roles in representation theory, some parts of analysis and in algebraic geometry. The founding fathers of the theory are M. Sato, M. Kashiwara, T. Kawai, J. Bernstein, and A. Beilinson. The area has also benefited much from the work of P. Deligne, J.-E. Björk, J.-E. Roos, B. Malgrange and Z. Mebkhout. The more computational aspects of the theory have been initiated by T. Oaku and N. Takayama.

The simplest example of a ring of differential operators is given by the Weyl algebra, the ring of K-linear differential operators on R_{n}. In characteristic zero, this is a finitely generated K-algebra that resembles the ring of polynomials in 2n variables but fails to be commutative.

2.1 Notation

Throughout we shall use the following notation: K will denote a computable field of characteristic zero and R_{n} = K[x_{1}, …, x_{n}] the ring of polynomials over K in n variables. The K-linear differential operators on R_{n} are then the elements of

D_{n} = K⟨x_{1}, ∂_{1}, …, x_{n}, ∂_{n}⟩,

the n-th Weyl algebra over K, where the symbol x_{i} denotes the operator “multiply by x_{i}” and ∂_{i} denotes the operator “take partial derivative with respect to x_{i}”. We therefore have in D_{n} the relations

x_{i}x_{j} = x_{j}x_{i} for all 1 ≤ i, j ≤ n,
∂_{i}∂_{j} = ∂_{j}∂_{i} for all 1 ≤ i, j ≤ n,
x_{i}∂_{j} = ∂_{j}x_{i} for all 1 ≤ i ≠ j ≤ n,
and x_{i}∂_{i} + 1 = ∂_{i}x_{i} for all 1 ≤ i ≤ n.

The last relation is nothing but the product (or Leibniz) rule, xf′ +f = (xf)′. We shall use multi-index notation: x^{α}∂^{β} denotes the monomial

x_{1}^{α_{1}} ⋯ x_{n}^{α_{n}} · ∂_{1}^{β_{1}} ⋯ ∂_{n}^{β_{n}}

and |α| = α_{1} + ⋯ + α_{n}.

In order to keep the product ∂_{i}x_{i} ∈ D_{n} and the application of ∂_{i} ∈ D_{n} to x_{i} ∈ R_{n} apart, we shall write ∂_{i} • (g) to mean the result of the action of ∂_{i} on g ∈ R_{n}. So for example, ∂_{i}x_{i} = x_{i}∂_{i} + 1 ∈ D_{n} but ∂_{i} • x_{i} = 1 ∈ R_{n}. The action of D_{n} on R_{n} takes precedence over the multiplication in R_{n} (and is of course compatible with the multiplication in D_{n}), so for example ∂_{2} • (x_{1})x_{2} = 0 · x_{2} = 0 ∈ R_{n}.

The symbol 𝔪 will stand for the maximal ideal R_{n} · (x_{1}, …, x_{n}) of R_{n}, Δ will denote the maximal left ideal D_{n} · (∂_{1}, …, ∂_{n}) of D_{n} and I will stand for the ideal R_{n} · (f_{1}, …, f_{r}) in R_{n}. Every D_{n}-module becomes an R_{n}-module via the embedding R_{n} ↪ D_{n} as D_{0}(R_{n}, K).

All tensor products in this chapter will be over R_{n} and all D_{n}-modules (resp. ideals) will be left modules (resp. left ideals) unless specified otherwise.

2.2 Gröbner Bases in D_{n}

This subsection is a severely shortened version of Chapter 1 in [40] (and we strongly recommend that the reader take a look at this book). The purpose is to see how Gröbner basis theory applies to the Weyl algebra.

The elements in D_{n} allow a normally ordered expression. Namely, if P ∈ D_{n} then we can write it as

P = ∑_{(α,β)∈E} c_{α,β}x^{α}∂^{β}

where E is a finite subset of ℕ^{2n}. Thus, as K-vector spaces there is an isomorphism

Ψ : K[x, ξ] → D_{n}

(with ξ = ξ_{1}, …, ξ_{n}) sending x^{α}ξ^{β} to x^{α}∂^{β}. We will assume that every P ∈ D_{n} is normally ordered.

We shall say that (u, v) ∈ ℝ^{2n} is a weight vector for D_{n} if u + v ≥ 0, that is u_{i} + v_{i} ≥ 0 for all 1 ≤ i ≤ n. We set the weight of the monomial x^{α}∂^{β} under (u, v) to be u · α + v · β (scalar product). The weight of an operator is then the maximum of the weights of the nonzero monomials appearing in the normally ordered expression of P. If (u, v) is a weight vector for D_{n}, there is an associated graded ring gr_{(u,v)}(D_{n}) with

gr_{(u,v)}^{r}(D_{n}) = \frac{\{P ∈ D_{n} : w(P) ≤ r\}}{\{P ∈ D_{n} : w(P) < r\}}.

So gr_{(u,v)}(D_{n}) is the K-algebra on the symbols {x_{i} : 1 ≤ i ≤ n} ∪ {∂_{i} : u_{i} + v_{i} = 0} ∪ {ξ_{i} : u_{i} + v_{i} > 0}. Here all variables commute with each other except ∂_{i} and x_{i} for which the Leibniz rule holds.

Each P ∈ D_{n} has an initial form or symbol in_{(u,v)}(P) in gr_{(u,v)}(D_{n}) defined by taking all monomials in the normally ordered expression for P that have maximal weight, and replacing all ∂_{i} with u_{i} + v_{i} > 0 by the corresponding ξ_{i}.

The inequality u_{i} + v_{i} ≥ 0 is needed to assure that the product of the initial forms of two operators equals the initial form of their product: one would not want to have in(∂_{i} · x_{i}) = in(x_{i} · ∂_{i} + 1) = 1.

A weight of particular importance is −u = v = (1, …, 1), or more generally −u = v = (1, …, 1, 0, …, 0). In these cases gr_{(u,v)}(D_{n}) ≅ D_{n}. On the other hand, if u + v is componentwise positive, then gr_{(u,v)}(D_{n}) is commutative (compare the initial forms of ∂_{i}x_{i} and x_{i}∂_{i}) and isomorphic to the polynomial ring in 2n variables corresponding to the symbols of x_{1}, …, x_{n}, ∂_{1}, …, ∂_{n}.

If L is a left ideal in D_{n} we write in_{(u,v)}(L) for {in_{(u,v)}(P) : P ∈ L}. This is a left ideal in gr_{(u,v)}(D_{n}). If G ⊂ L is a finite set we call it a (u, v)- Gröbner basis if the left ideal of gr_{(u,v)}(D_{n}) generated by the initial forms of the elements of G agrees with in_{(u,v)}(L).

A multiplicative monomial order on D_{n} is a total order ≺ on the normally ordered monomials such that

1. 1 ≺ x_{i}∂_{i} for all i, and

2. x^{α}∂^{β} ≺ x^{α′}∂^{β′} implies x^{α+α′′}∂^{β+β′′} ≺ x^{α′+α′′}∂^{β′+β′′} for all α′′, β′′ ∈ ℕ^{n}.

A multiplicative monomial order is a term order if 1 is the (unique) smallest monomial. Multiplicative monomial orders, and more specifically term orders, clearly abound.

Multiplicative monomial orders (and hence term orders) allow the construction of initial forms just like weight vectors. Now, however, the initial forms are always monomials, and always elements of K[x, ξ] (due to the total order requirement on ≺). One defines Gröbner bases for multiplicative monomial orders analogously to the weight vector case.

For our algorithms we have need to compute weight vector Gröbner bases, and this can be done as follows. Suppose (u, v) is a weight vector on D_{n} and ≺ a term order. Define a multiplicative monomial order ≺_{(u,v)} as follows:

x^{α}∂^{β} ≺_{(u,v)} x^{α′}∂^{β′} ⇔ [(α − α′) · u + (β − β′) · v < 0] or

[(α − α′) · u + (β − β′) · v = 0 and x^{α}∂^{β} ≺ x^{α′}∂^{β′}] .

Note that ≺_{(u,v)} is a term order precisely when (u, v) is componentwise nonnegative.

Theorem 2.1 ([40], Theorem 1.1.6.). Let L be a left ideal in D_{n}, (u, v) a weight vector for D_{n}, ≺ a term order and G a Gröbner basis for L with respect to ≺_{(u,v)}. Then

1. G is a Gröbner basis for L with respect to (u, v).

2. in_{(u,v)}(G) is a Gröbner basis for in_{(u,v)}(L) with respect to ≺. ⊓ ⊔

We end this subsection with the remarks that Gröbner bases with respect to multiplicative monomial orders can be computed using the Buchberger algorithm adapted to the non-commutative situation (thus, Gröbner bases with respect to weight vectors are computable according to the theorem), and that the computation of syzygies, kernels, intersections and preimages in D_{n} works essentially as in the commutative algebra K[x, ξ]. For precise statements of the algorithms we refer the reader to [40].

2.3 D-modules

A good introduction to D-modules are the book by J.-E. Björk, [5], the nice introduction [9] by S. Coutinho, and the lecture notes by J. Bernstein [4]. In this subsection we list some properties of localizations of R_{n} that are important for module-finiteness over D_{n}. Most of this section is taken from Section 1 in [5].

Let f ∈ R_{n}. Then the R_{n}-module R_{n}[f^{−1}] has a structure as left D_{n}- module via the extension of the action •:

x_{i} • (\frac{g}{f^{k}}) = \frac{x_{i}g}{f^{k}} , ∂_{i} • (\frac{g}{f^{k}}) = \frac{∂_{i} • (g)f − k∂_{i} • (f)g}{f^{k+1}} .

This may be thought of as a special case of localizing a D_{n}-module: if M is a D_{n}-module and f ∈ R_{n} then M ⊗_{R_{n}} R_{n}[f^{−1}] becomes a D_{n}-module via the product rule

x_{i} • (m ⊗ \frac{g}{f^{k}}) = m ⊗ (\frac{x_{i}g}{f^{k}}), ∂_{i} • (m ⊗ \frac{g}{f^{k}}) = m ⊗ ∂_{i} • (\frac{g}{f^{k}}) + ∂_{i}m ⊗ \frac{g}{f^{k}} .

Of particular interest are the holonomic modules which are those finitely generated D_{n}-modules M for which Ext_{D_{n}}^{j}(M, D_{n}) vanishes unless j = n. This innocent looking definition has surprising consequences, some of which we discuss now.

The holonomic modules form a full Abelian subcategory of the category of left D_{n}-modules, closed under the formation of subquotients. Our standard example of a holonomic module is

R_{n} = D_{n}/Δ.

This equality may require some thought – it pictures R_{n} as a D_{n}-module generated by 1 ∈ R_{n}. It is particularly noteworthy that not all elements of R_{n} are killed by Δ – quite impossible if D_{n} were commutative.

Holonomic modules are always cyclic and of finite length over D_{n}. These fundamental properties are consequences of the Bernstein inequality. To understand this inequality we associate with the D_{n}-module M = D_{n}/L the Hilbert function q_{L}(k) with values in the integers which counts for each k ∈ ℕ the number of monomials x^{α}∂^{β} with |α| + |β| ≤ k whose cosets in M are Klinearly independent. The filtration k ↦ K · {x^{α}∂^{β} mod L : |α| + |β| ≤ k} is called the Bernstein filtration. The Bernstein inequality states that q_{L}(k) is either identically zero (in which case M = 0) or asymptotically a polynomial in k of degree between n and 2n. This degree is called the dimension of M. A holonomic module is one of dimension n, the minimal possible value for a nonzero module.

This characterization of holonomicity can be used quite easily to check with Macaulay 2 that R_{n} is holonomic. Namely, let’s say n = 3. Start a Macaulay 2 session with

    i1 : load "D-modules.m2"
    i2 : D = QQ[x,y,z,Dx,Dy,Dz, WeylAlgebra => {x=>Dx, y=>Dy, z=>Dz}]
    o2 = D
    o2 : PolynomialRing
    i3 : Delta = ideal(Dx,Dy,Dz)
    o3 = ideal (Dx, Dy, Dz)
    o3 : Ideal of D

The first of these commands loads the D-module library by A. Leykin, M. Stillman and H. Tsai, [23]. The second line defines the base ring D_{3} = ℚ⟨x, y, z, ∂_{x}, ∂_{y}, ∂_{z}⟩, while the third command defines the D_{3}-module D_{3}/Δ ≅ R_{3}.

As one can see, Macaulay 2 thinks of D as a ring of polynomials. This is using the vector space isomorphism Ψ from Subsection 2.2. Of course, two elements are multiplied according to the Leibniz rule. To see how Macaulay 2 uses the map Ψ, we enter the following expression.

    i4 : (Dx * x)^2
          2  2
    o4 = x Dx  + 3x*Dx + 1
    o4 : D

All Weyl algebra ideals and modules are by default left ideals and left modules in Macaulay 2.

If we don’t explicitly specify a monomial ordering to be used in the Weyl algebra, then Macaulay 2 uses graded reverse lex (GRevLex), as we can see by examining the options of the ring.

    i5 : options D
    o5 = OptionTable{Adjust => identity                        }
                     Degrees => {{1}, {1}, {1}, {1}, {1}, {1}}
                     Inverses => false
                     MonomialOrder => GRevLex
                     MonomialSize => 8
                     NewMonomialOrder =>
                     Repair => identity
                     SkewCommutative => false
                     VariableBaseName =>
                     VariableOrder =>
                     Variables => {x, y, z, Dx, Dy, Dz}
                     Weights => {}
                     WeylAlgebra => {x => Dx, y => Dy, z => Dz}
    o5 : OptionTable

To compute the initial ideal of Δ with respect to the weight that associates 1 to each ∂ and to each variable, execute

    i6 : DeltaBern = inw(Delta,{1,1,1,1,1,1})
    o6 = ideal (Dz, Dy, Dx)
    o6 : Ideal of QQ [x, y, z, Dx, Dy, Dz]

The command inw can be used with any weight vector for D_{n} as second argument. One notes that the output is not an ideal in a Weyl algebra any more, but in a ring of polynomials, as it should. The dimension of R_{3}, which is the dimension of the variety associated to DeltaBern, is computed by

    i7 : dim DeltaBern
    o7 = 3

As this is equal to n = 3, the ideal Δ is holonomic.

Let R_{n}[f^{−1}, s]⊗f^{s} be the free R_{n}[f^{−1}, s]-module generated by the symbol f^{s}. Using the action • of D_{n} on R_{n}[f^{−1}, s] we define an action • of D_{n}[s] on R_{n}[f^{−1}, s] ⊗ f^{s} by setting

s • (\frac{g(x, s)}{f^{k}} ⊗ f^{s}) = \frac{sg(x, s)}{f^{k}} ⊗ f^{s},
x_{i} • (\frac{g(x, s)}{f^{k}} ⊗ f^{s}) = \frac{x_{i}g(x, s)}{f^{k}} ⊗ f^{s},
∂_{i} • (\frac{g(x, s)}{f^{k}} ⊗ f^{s}) = (∂_{i} • (\frac{g(x, s)}{f^{k}}) + s∂_{i} • (f) · \frac{g(x, s)}{f^{k+1}}) ⊗ f^{s}.

The last rule justifies the choice for the symbol of the generator.

Writing M = D_{n}/L and denoting by \overline{1} the coset of 1 ∈ D_{n} in M, this action extends to an action of D_{n}[s] on

M_{f}^{L} = D_{n}[s] • (\overline{1} ⊗ 1 ⊗ f^{s}) ⊆ M ⊗_{R_{n}} (R_{n}[f^{−1}, s] ⊗ f^{s})  (2.1)

by the product rule for all left D_{n}-modules M. The interesting bit about M_{f}^{L} is the following fact. If M = D_{n}/L is holonomic then there is a nonzero polynomial b(s) in K[s] and an operator P (s) ∈ D_{n}[s] such that

P (s) • (\overline{1} ⊗ f ⊗ f^{s}) = \overline{1} ⊗ b(s) ⊗ f^{s}  (2.2)

in M_{f}^{L}. This entertaining equality, often written as

P (s) (\overline{1} ⊗ f^{s+1}) = \overline{b(s)} ⊗ f^{s},

says that P (s) is roughly equal to division by f. The unique monic polynomial that divides all other polynomials b(s) satisfying an identity of this type is called the Bernstein (or also Bernstein-Sato) polynomial of L and f and denoted by b_{f}^{L}(s). Any operator P (s) that satisfies (2.2) with b(s) = b_{f}(s) we shall call a Bernstein operator and refer to the roots of b_{f}^{L}(s) as Bernstein roots of f on D_{n}/L. It is clear from (2.2) and the definitions that b_{f}^{L}(s) is the minimal polynomial of s on the quotient of M_{f}^{L} by D_{n}[s] • (\overline{1} ⊗ f ⊗ f^{s}).

The Bernstein roots of the polynomial f are somewhat mysterious, but related to other algebro-geometric invariants as, for example, the monodromy of f (see [29]), the Igusa zeta function (see [24]), and the log-canonical threshold (see [21]). For a long time it was also unclear how to compute b_{f}(s) for given f. In [53] many interesting examples of Bernstein-Sato polynomials are worked out by hand, while in [1,6,28,41] algorithms were given that compute b_{f}(s) under certain conditions on f. The general algorithm we are going to explain was given by T. Oaku. Here is a classical example.

Example 2.2. Let f = ∑_{i=1}^{n} x_{i}^{2} and M = R_{n} with L = Δ. One can check that

∑_{i=1}^{n} ∂_{i}^{2} • (\overline{1} ⊗ 1 ⊗ f^{s+1}) = \overline{1} ⊗ 4(s + 1)(\frac{n}{2} + s) ⊗ f^{s}

and hence that \frac{1}{4} ∑_{i=1}^{n} ∂_{i}^{2} is a Bernstein operator while the Bernstein roots of f are −1 and −n/2 and the Bernstein polynomial is (s + 1)(s + \frac{n}{2}).

Example 2.3. Although in the previous example the Bernstein operator looked a lot like the polynomial f, this is not often the case and it is usually hard to guess Bernstein operators. For example, one has

(\frac{1}{27} ∂_{y}^{3} + \frac{y}{6} ∂_{x}^{2}∂_{y} + \frac{x}{8}∂_{x}^{3}) (x^{2} + y^{3})^{s+1} = (s + \frac{5}{6})(s + 1)(s + \frac{7}{6})(x^{2} + y^{3})^{s}.

In the case of non-quasi-homogeneous polynomials, there is usually no resemblance between f and any Bernstein operator.

A very important property of holonomic modules is the (somewhat counterintuitive) fact that any localization of a holonomic module M = D_{n}/L at a single element (and hence at any finite number of elements) of R_{n} is holonomic ([5], 1.5.9) and in particular cyclic over D_{n}, generated by \overline{1} ⊗ f^{a} for sufficiently small a ∈ ℤ. As a special case we note that localizations of R_{n} are holonomic, and hence finitely generated over D_{n}. Coming back to the Čech complex we see that the complex Č^{•}(M; f_{1}, …, f_{r}) consists of holonomic D_{n}-modules whenever M is holonomic.

As a consequence, local cohomology modules of R_{n} are D_{n}-modules and in fact holonomic. To see this it suffices to know that the maps in the Čech complex are D_{n}-linear, which we will explain in Section 4. Since the category of holonomic D_{n}-modules and their D_{n}-linear maps is closed under subquotients, holonomicity of H_{I}^{k}(R_{n}) follows.

For similar reasons, H_{𝔪}^{i}(H_{I}^{j}(R_{n})) is holonomic for i, j ∈ ℕ (since H_{I}^{j}(R_{n}) is holonomic). These modules, investigated in Subsections 4.2 and 4.3, are rather special R_{n}-modules and seem to carry some very interesting information about Var(I), see [10,52].

The fact that R_{n} is holonomic and every localization of a holonomic module is as well, provides motivation for us to study this class of modules. There are, however, more occasions where holonomic modules show up. One such situation arises in the study of linear partial differential equations. More specifically, the so-called GKZ-systems (which we will meet again in the final chapter) provide a very interesting class of objects with fascinating combinatorial and analytic properties [40].

3 Bernstein-Sato Polynomials and Localization

We mentioned in the introduction that for the computation of local cohomology the following is an important algorithmic problem to solve.

Problem 3.1. Given f ∈ R_{n} and a left ideal L ⊆ D_{n} such that M = D_{n}/L is holonomic, compute the structure of the module D_{n}/L ⊗ R_{n}[f^{−1}] in terms of generators and relations.

This section is about solving Problem 3.1.

3.1 The Line of Attack

Recall for a given D_{n}-module M = D_{n}/L the action of D_{n}[s] on the tensor product M ⊗_{R_{n}} (R_{n}[f^{−1}, s]⊗f^{s}) from Subsection 2.3. We begin with defining an ideal of operators:

Definition 3.2. Let J^{L}(f^{s}) stand for the ideal in D_{n}[s] that kills \overline{1}⊗1⊗f^{s} ∈ (D_{n}/L) ⊗_{R_{n}} R_{n}[f^{−1}, s] ⊗ f^{s}.

It turns out that it is very useful to know this ideal. If L = Δ then there are some obvious candidates for generators of J^{L}(f^{s}). For example, there are f∂_{i} − ∂_{i} • (f)s for all i. However, unless the affine hypersurface defined by f = 0 is smooth, these will not generate J^{Δ}(f^{s}). For a more general L, there is a similar set of (somewhat less) obvious candidates, but again finding all elements of J^{Δ}(f^{s}) is far from elementary, even for smooth f.

In order to find J^{L}(f^{s}), we will consider the module (D_{n}/L)⊗R_{n}[f^{−1}, s]⊗ f^{s} over the ring D_{n+1} = D_{n}⟨t, ∂_{t}⟩ by defining an appropriate action of t and ∂_{t} on it. It is then not hard to compute the ideal J_{n+1}^{L}(f^{s}) ⊆ D_{n+1} consisting of all operators that kill \overline{1} ⊗ 1 ⊗ f^{s}, see Lemma 3.5. In Proposition 3.6 we will then explain how to compute J^{L}(f^{s}) from J_{n+1}^{L}(f^{s}).

This construction gives an answer to the question of determining a presentation of D_{n} • (\overline{1} ⊗ f^{a}) for “most” a ∈ K, which we make precise as follows.

Definition 3.3. We say that a property depending on a ∈ K^{m} holds for a in very general position, if there is a countable set of hypersurfaces in K^{m} such that the property holds for all a not on any of the exceptional hypersurfaces.

It will turn out that for a ∈ K in very general position J^{L}(f^{s}) “is” the annihilator for f^{a}: we shall very explicitly identify a countable number of exceptional values in K such that if a is not equal to one of them, then J^{L}(f^{s}) evaluates under s ↦ a to the annihilator inside D_{n} of \overline{1} ⊗ f^{a}.

For a ∈ ℤ we have of course D_{n} • (\overline{1} ⊗ f^{a}) ⊆ M ⊗ R_{n}[f^{−1}] but the inclusion may be strict (e.g., for L = Δ and a = 0). Proposition 3.11 shows how (D_{n}/L) ⊗ R_{n}[f^{−1}] and J^{L}(f^{s}) are related.

3.2 Undetermined Exponents

Consider D_{n+1} = D_{n}⟨t, ∂_{t}⟩, the Weyl algebra in x_{1}, …, x_{n} and the new variable t. B. Malgrange [29] has defined an action • of D_{n+1} on (D_{n}/L) ⊗ R_{n}[f^{−1}, s]⊗f^{s} as follows. We require that x_{i} acts as multiplication on the first factor, and for the other variables we set (with \overline{P} ∈ D_{n}/L and g(x, s) ∈ R_{n}[s])

∂_{i} • (\overline{P} ⊗ \frac{g(x, s)}{f^{k}} ⊗ f^{s}) = (\overline{P} ⊗ (∂_{i} • (\frac{g(x, s)}{f^{k}}) + \frac{s∂_{i} • (f)g(x, s)}{f^{k+1}})

+ \overline{∂_{i}P} ⊗ \frac{g(x, s)}{f^{k}}) ⊗ f^{s},

t • (\overline{P} ⊗ \frac{g(x, s)}{f^{k}} ⊗ f^{s}) = \overline{P} ⊗ \frac{g(x, s + 1)f}{f^{k}} ⊗ f^{s},
∂_{t} • (\overline{P} ⊗ \frac{g(x, s)}{f^{k}} ⊗ f^{s}) = \overline{P} ⊗ \frac{−sg(x, s − 1)}{f^{k+1}} ⊗ f^{s}.

One checks that this actually defines a left D_{n+1}-module structure (i.e., ∂_{t}t acts like t∂_{t} + 1) and that −∂_{t}t acts as multiplication by s.

Definition 3.4. We denote by J_{n+1}^{L}(f^{s}) the ideal in D_{n+1} that annihilates the element \overline{1} ⊗ 1 ⊗ f^{s} in (D_{n}/L) ⊗ R_{n}[f^{−1}, s] ⊗ f^{s} with D_{n+1} acting as defined above. Then we have an induced morphism of D_{n+1}-modules D_{n+1}/J_{n+1}^{L}(f^{s}) → (D_{n}/L) ⊗ R_{n}[f^{−1}, s] ⊗ f^{s} sending P + J_{n+1}^{L}(f^{s}) to P • (\overline{1} ⊗ 1 ⊗ f^{s}).

We say that an ideal L ⊆ D_{n} is f-saturated if f · P ∈ L implies P ∈ L and we say that D_{n}/L is f-torsion free if L is f-saturated. R_{n} and all its localizations are examples of f-torsion free modules for arbitrary f.

The following lemma is a modification of Lemma 4.1 in [29] where the special case L = D_{n} · (∂_{1}, …, ∂_{n}), D_{n}/L = R_{n} is considered (compare also [47]).

Lemma 3.5. Suppose that L = D_{n} · (P_{1}, …, P_{r}) is f-saturated. With the above definitions, J_{n+1}^{L}(f^{s}) is the ideal generated by f − t together with the images of the P_{j} under the automorphism ϕ of D_{n+1} induced by x_{i} ↦ x_{i} for all i, and t ↦ t − f.

Proof. The automorphism sends ∂_{i} to ∂_{i}+∂_{i}•(f)∂_{t} and ∂_{t} to ∂_{t}. So if we write P_{j} as a polynomial P_{j}(∂_{1}, …, ∂_{n}) in the ∂_{i} with coefficients in K[x_{1}, …, x_{n}], then

ϕ(P_{j}) = P_{j}(∂_{1} + ∂_{1} • (f)∂_{t}, …, ∂_{n} + ∂_{n} • (f)∂_{t}).

One checks that (∂_{i} + ∂_{i} • (f)∂_{t}) • (\overline{Q} ⊗ 1 ⊗ f^{s}) = \overline{∂_{i}Q} ⊗ 1 ⊗ f^{s} for all Q ∈ D_{n+1}, so that ϕ(P_{j}(∂_{1}, …, ∂_{n}))•(\overline{1}⊗1⊗f^{s}) = \overline{P_{j}(∂_{1}, …, ∂_{n})}⊗1⊗f^{s} = 0. By definition, f • (\overline{1} ⊗ 1 ⊗ f^{s}) = t • (\overline{1} ⊗ 1 ⊗ f^{s}). So t − f ∈ J_{n+1}^{L}(f^{s}) and ϕ(P_{j}) ∈ J_{n+1}^{L}(f^{s}) for j = 1, …, r.

Conversely let P • (\overline{1} ⊗ 1 ⊗ f^{s}) = 0. The proof that P ∈ ϕ(J_{n+1}^{L} + D_{n+1} · t) relies on an elimination idea and has some Gröbner basis flavor. We have to show that P ∈ D_{n+1} · (ϕ(P_{1}), …, ϕ(P_{r}), t − f). We may assume, that P does not contain any power of t since we can eliminate t using f − t. Now rewrite P in terms of ∂_{t} and the ∂_{i} + ∂_{i} • (f)∂_{t}. Say, P = ∑_{α,β} ∂_{t}^{α}x^{β}Q_{α,β}(∂_{1} + ∂_{1} • (f)∂_{t}, …, ∂_{n} + ∂_{n} • (f)∂_{t}), where the Q_{α,β} ∈ K[y_{1}, …, y_{n}] are polynomial expressions. Then

P • (\overline{1} ⊗ 1 ⊗ f^{s}) = ∑_{α,β} ∂_{t}^{α} • (\overline{x^{β}Q_{α,β}(∂_{1}, …, ∂_{n})} ⊗ 1 ⊗ f^{s}).

Let \overline{α} be the largest α ∈ ℕ for which there is a nonzero Q_{α,β} occurring in P = ∑_{α,β} ∂_{t}^{α}x^{β}Q_{α,β}(∂_{1} + ∂_{1} • (f)∂_{t}, …, ∂_{n} + ∂_{n} • (f)∂_{t}). We show that the sum of terms that contain ∂\overline{α} ; t is in D_{n+1} ·ϕ(L) as follows. In order for P •(\overline{1}⊗ 1⊗f^{s}) to vanish, the sum of terms with the highest s-power, namely s\overline{α}, must vanish. Hence ∑_{β} x^{β}Q_{\overline{α},β}(∂_{1}, …, ∂_{n}) ⊗ (−1/f)\overline{α} ⊗ f^{s} ∈ L ⊗ R_{n}[f^{−1}, s] ⊗ f^{s} as R_{n}[f^{−1}, s] is R_{n}[s]-flat. It follows that ∑_{β} x^{β}Q_{\overline{α},β}(∂_{1}, …, ∂_{n}) ∈ L (L is

f-saturated!) and hence ∑_{β} ∂\overline{α} ; tx^{β}Q_{\overline{α},β}(∂_{1} + ∂_{1} • (f)∂_{t}, …, ∂_{n} + ∂_{n} • (f)∂_{t}) ∈

D_{n+1} · ϕ(L) as announced.

So by the first part, P −∑_{β} ∂\overline{α} ; tx^{β}Q_{\overline{α},β}(∂_{1} +∂_{1} •(f)∂_{t}, …, ∂_{n} +∂_{n} •(f)∂_{t})

kills \overline{1} ⊗ 1 ⊗ f^{s}, but is of smaller degree in ∂_{t} than P was.

The claim follows by induction on \overline{α}. ⊓ ⊔

If we identify D_{n}[−∂_{t}t] with D_{n}[s] then J_{n+1}^{L}(f^{s}) ∩ D_{n}[−∂_{t}t] is identified with J^{L}(f^{s}) since, as we observed earlier, −∂_{t}t multiplies by s on M_{f}^{L}. As we pointed out in the beginning, the crux of our algorithms is to calculate J^{L}(f^{s}) = J_{n+1}^{L}(f^{s}) ∩ D_{n}[s]. We shall deal with this computation now.

In Theorem 19 of [33], T. Oaku showed how to construct a generating set for J^{L}(f^{s}) in the case L = D_{n} · (∂_{1}, …, ∂_{n}). Using his ideas we explain how one may calculate J ∩ D_{n}[−∂_{t}t] whenever J ⊆ D_{n+1} is any given ideal, and as a corollary develop an algorithm that for f-saturated D_{n}/L computes J^{L}(f^{s}) = J_{n+1}^{L}(f^{s}) ∩ D_{n}[−∂_{t}t].

We first review some work of Oaku. On D_{n+1} we define the weight vector w by w(t) = 1, w(∂_{t}) = −1, w(x_{i}) = w(∂_{i}) = 0 and we extend it to D_{n+1}[y_{1}, y_{2}] by w(y_{1}) = −w(y_{2}) = 1. If P = ∑_{i} P_{i} ∈ D_{n+1}[y_{1}, y_{2}] and all P_{i} are monomials, then we will write (P)^{h} for the operator ∑_{i} P_{i} · y_{1}^{d_{i}} where d_{i} = max_{j}(w(P_{j})) − w(P_{i}) and call it the y_{1}-homogenization of P.

Note that the Buchberger algorithm preserves homogeneity in the following sense: if a set of generators for an ideal is given and these generators are homogeneous with respect to the weight above, then any new generator for the ideal constructed with the classical Buchberger algorithm will also be homogeneous. (This is a consequence of the facts that the y_{i} commute with all other variables and that ∂_{t}t = t∂_{t} + 1 is homogeneous of weight zero.) This homogeneity is very important for the following result of Oaku:

Proposition 3.6. Let J = D_{n+1} · (Q_{1}, …, Q_{r}). Let I be the left ideal in D_{n+1}[y_{1}] generated by the y_{1}-homogenizations (Q_{i})^{h} of the Q_{i}, relative to the weight w above, and set Ĩ = D_{n+1}[y_{1}, y_{2}] · (I, 1 − y_{1}y_{2}). Let G be a Gröbner basis for Ĩ under a monomial order that eliminates y_{1}, y_{2}. For each P ∈ G ∩ D_{n+1} set P′ = t^{−w(P)}P if w(P) < 0 and P′ = ∂_{t}^{w(P)}P if w(P) ≥ 0. Set G_{0} = {P′ : P ∈ G∩D_{n+1}}. Then G_{0} ⊆ D_{n}[−∂_{t}t] generates J ∩D_{n}[−∂_{t}t].

Proof. This is in essence Theorem 18 of [33]. (See the remarks in Subsection 2.2 on how to compute such Gröbner bases.) ⊓ ⊔

As a corollary to this proposition we obtain an algorithm for the computation of J^{Δ}(f^{s}):

Algorithm 3.7 (Parametric Annihilator). Input: f ∈ R_{n}; L ⊆ D_{n} such that L is f-saturated. Output: Generators for J^{L}(f^{s}).

1. For each generator Q_{i} of D_{n+1} · (L, t) compute the image ϕ(Q_{i}) under x_{i} ↦ x_{i}, t ↦ t − f, ∂_{i} ↦ ∂_{i} + ∂_{i} • (f)∂_{t}, ∂_{t} ↦ ∂_{t}.

2. Homogenize all ϕ(Q_{i}) with respect to the new variable y_{1} relative to the weight w introduced before Proposition 3.6.

3. Compute a Gröbner basis for the ideal

D_{n+1}[y_{1}, y_{2}] · ((ϕ(Q_{1}))^{h}, …, (ϕ(Q_{r}))^{h}, 1 − y_{1}y_{2})

in D_{n+1}[y_{1}, y_{2}] using an order that eliminates y_{1}, y_{2}.

4. Select the operators {P_{j}}_{1}^{b} in this basis which do not contain y_{1}, y_{2}.

5. For each P_{j}, 1 ≤ j ≤ b, if w(P_{j}) > 0 replace P_{j} by P′_{j} = ∂_{t}^{w(P_{j})}P_{j}. Otherwise replace P_{j} by P′_{j} = t^{−w(P_{j})}P_{j}.

6. Return the new operators {P′_{j}}_{1}^{b}.

End.

The output will be operators in D_{n}[−∂_{t}t] which is naturally identified with D_{n}[s] (including the action on M_{f}^{L}). This algorithm is in effect Proposition 7.1 of [32].

In Macaulay 2, one can compute the parametric annihilator ideal (for R_{n} = Δ) by the command AnnFs:

    i8 : D = QQ[x,y,z,w,Dx,Dy,Dz,Dw,
                WeylAlgebra => {x=>Dx, y=>Dy, z=>Dz, w=>Dw}];
    i9 : f = x^2+y^2+z^2+w^2
          2    2    2    2
    o9 = x  + y  + z  + w
    o9 : D
    i10 : AnnFs(f)

⋯

    o10 = ideal (w*Dz - z*Dw, w*Dy - y*Dw, z*Dy - y*Dz, w*Dx - x*Dw, z*Dx · · ·

⋯

    o10 : Ideal of QQ [x, y, z, w, Dx, Dy, Dz, Dw, $s, WeylAlgebra => {x = · · ·

If we want to compute J^{L}(f^{s}) for more general L, we have to use the com-

mand AnnIFs:
    i11 : L=ideal(x,y,Dz,Dw)
    o11 = ideal (x, y, Dz, Dw)
    o11 : Ideal of D
    i12 : AnnIFs(L,f)
                                    1        1
    o12 = ideal (y, x, w*Dz - z*Dw, -*z*Dz + -*w*Dw - $s)
                                    2        2
    o12 : Ideal of QQ [x, y, z, w, Dx, Dy, Dz, Dw, $s, WeylAlgebra => {x = · · ·

It should be emphasized that saturatedness of L with respect to f is a must

for AnnIFs.

3.3 The Bernstein-Sato Polynomial

Knowing J^{L}(f^{s}) allows us to get our hands on the Bernstein-Sato polynomial of f on M:

Corollary 3.8. Suppose L is a holonomic ideal in D_{n} (i.e., D_{n}/L is holonomic). The Bernstein polynomial b_{f}^{L}(s) of f on (D_{n}/L) satisfies

(b_{f}^{L}(s)) = (D_{n}[s] · (J^{L}(f^{s}), f)) ∩ K[s].  (3.1)

Moreover, if L is f-saturated then b_{f}^{L}(s) can be computed with Gröbner basis computations.

Proof. By definition of b_{f}^{L}(s) we have (b_{f}^{L}(s) − P_{f}^{L}(s) · f) • (\overline{1} ⊗ 1 ⊗ f^{s}) = 0 for a suitable P_{f}^{L}(s) ∈ D_{n}[s]. Hence b_{f}^{L}(s) is in K[s] and in D_{n}[s](J^{L}(f^{s}), f). Conversely, if b(s) is in this intersection then b(s) satisfies an equality of the type of (2.2) and hence is a multiple of b_{f}^{L}(s).

If we use an elimination order for which {x_{i}, ∂_{i}}_{1}^{n} ≫ s in D_{n}[s], then if J^{L}(f^{s}) is known, b_{f}^{L}(s) will be (up to a scalar factor) the unique element in the reduced Gröbner basis for D_{n}[s] · (J^{L}(f^{s}), f) that contains no x_{i} nor ∂_{i}. Since we assume L to be f-saturated, J^{L}(f^{s}) can be computed according to Proposition 3.6. ⊓ ⊔

We therefore arrive at the following algorithm for the Bernstein-Sato polynomial [31].

Algorithm 3.9 (Bernstein-Sato polynomial). Input: f ∈ R_{n}; L ⊆ D_{n} such that D_{n}/L is holonomic and f-torsion free. Output: The Bernstein polynomial b_{f}^{L}(s).

1. Determine J^{L}(f^{s}) following Algorithm 3.7.

2. Find a reduced Gröbner basis for the ideal J^{L}(f^{s}) + D_{n}[s] · f using an elimination order for x and ∂.

3. Pick the unique element b(s) ∈ K[s] contained in that basis and return it.

End.

We illustrate the algorithm with two examples. We first recall f which was defined at the end of the previous subsection.

    i13 : f
           2    2    2    2
    o13 = x  + y  + z  + w
    o13 : D

Now we compute the Bernstein-Sato polynomial.

    i14 : globalBFunction(f)
            2
    o14 = $s  + 3$s + 2
    o14 : QQ [$s]

The routine globalBFunction computes the Bernstein-Sato polynomial of f on R_{n}. We also take a look at the Bernstein-Sato polynomial of a cubic:

    i15 : g=x^3+y^3+z^3+w^3
           3    3    3    3
    o15 = x  + y  + z  + w
    o15 : D
    i16 : factorBFunction globalBFunction(g)
                        7       8               4       5
    o16 = ($s + 1)($s + -)($s + -)($s + 2)($s + -)($s + -)
                        3       3               3       3
    o16 : Product

In Macaulay 2 one can also find b_{f}^{L}(s) for more general L. We will see in the following remark what the appropriate commands are.

Remark 3.10. It is clear that s + 1 is always a factor of any Bernstein-Sato polynomial on R_{n}, but this is not necessarily the case if L ≠ Δ. For example, b_{f}^{L}(s) = s for n = 1, f = x and L = x∂_{x} + 1 (in which case D_{1}/L ≅ R_{1}[x^{−1}], generated by 1/x). In particular, it is not true that the roots of b_{f}^{L}(s) are negative for general holonomic L.

If L is equal to Δ, and if f is nice, then the Bernstein roots are all between −n and 0 [46]. But for general f very little is known besides a famous theorem of Kashiwara that states that b_{f}^{Δ}(s) factors over ℚ [19] and all roots are negative.

For L arbitrary, the situation is more complicated. The Bernstein-Sato polynomial of any polynomial f on the D_{n}-module generated by \overline{1} ⊗ f^{a} with a ∈ K is related to that of f on D_{n}/L by a simple shift, and so the Bernstein roots of f on the D_{n}-module generated by the function germ f^{a}, a ∈ K, are still all in K by [19]. Localizing other modules however can easily lead to nonrational roots. As an example, consider

    i17 : D1 = QQ[x,Dx,WeylAlgebra => {x=>Dx}];
    i18 : I1 = ideal((x*Dx)^2+1)
                 2  2
    o18 = ideal(x Dx  + x*Dx + 1)
    o18 : Ideal of D1

This is input defined over the rationals. Even localizing D_{1}/I_{1} at a very simple f leads to nonrational roots:

    i19 : f1 = x;
    i20 : b=globalB(I1, f1)
                                       2
    o20 = HashTable{Boperator => - x*Dx  + 2Dx*$s + Dx}
                                     2
                    Bpolynomial => $s  + 2$s + 2
    o20 : HashTable

The routine globalB is to be used if a Bernstein-Sato polynomial is suspected to fail to factor over ℚ. If b_{f}^{L}(s) does factor over ℚ, one can also use the routine DlocalizeAll to be discussed below. It would be very interesting to determine rules that govern the splitting field of b_{f}^{L}(s) in general.

3.4 Specializing Exponents

In this subsection we investigate the result of substituting a ∈ K for s in J^{L}(f^{s}). Recall that the Bernstein polynomial b_{f}^{L}(s) will exist (i.e., be nonzero) if D_{n}/L is holonomic. As outlined in the previous subsection, b_{f}^{L}(s) can be computed if D_{n}/L is holonomic and f-torsion free. The following proposition (Proposition 7.3 in [32], see also Proposition 6.2 in [19]) shows that replacing s by an exponent in very general position leads to a solution of the localization problem.

Proposition 3.11. If L is holonomic and a ∈ K is such that no element of {a−1, a−2, …} is a Bernstein root of f on L then we have D_{n}-isomorphisms

(D_{n}/L)⊗_{R_{n}}(R_{n}[f^{−1}] ⊗ f^{a}) ≅ (D_{n}[s]/J^{L}(f^{s})) |_{s=a} ≅ D_{n}•(\overline{1}⊗1⊗f^{a}). (3.2)

⊓ ⊔

One notes in particular that if any a ∈ ℤ satisfies the conditions of the proposition, then so does every integer smaller than a. This motivates the following Definition 3.12. The stable integral exponent of f on L is the smallest integral root of b_{f}^{L}(s), and denoted a_{f}^{L}.

In terms of this definition,

(D_{n}/J^{L}(f^{s})) |_{s=a_{f}^{L}} ≅ (D_{n}/L) ⊗_{R_{n}} R_{n}[f^{−1}],

and the presentation corresponds to the generator \overline{1} ⊗ f^{a_{f}^{L}}. If L = Δ then Kashiwara’s result tells us that b_{f}^{L}(s) will factor over the rationals, and thus it is very easy to find the stable integral exponent. If we localize a more general module, the roots may not even be K-rational anymore as we saw at the end of the previous subsection.

The following lemma deals with the question of finding the smallest integer root of a polynomial. We let |s| denote the complex absolute value.

Lemma 3.13. Suppose that in the situation of Corollary 3.8,

b_{f}^{L}(s) = s^{d} + b_{d−1}s^{d−1} + ⋯ + b_{0},

and define B = max_{i}{|b_{i}|^{1/(d−i)}}. The smallest integer root of b_{f}^{L}(s) is an integer between −2B and 2B. If in particular L = D_{n} ·(∂_{1}, …, ∂_{n}), it suffices to check the integers between −b_{d−1} and −1.

Proof. Suppose |s_{0}| = 2Bρ where B is as defined above and ρ > 1. Assume also that s_{0} is a root of b_{f}^{L}(s). We find

(2Bρ)^{d} = |s_{0}|^{d} = | − ∑_{i=0}^{d−1} b_{i}s_{0}^{i}| ≤ ∑_{i=0}^{d−1} B^{d−i}|s_{0}|^{i}

= B^{d} ∑_{i=0}^{d−1}(2ρ)^{i} ≤ B^{d}((2ρ)^{d} − 1),

using ρ ≥ 1. By contradiction, s_{0} is not a root.

The final claim is a consequence of Kashiwara’s work [19] where he proves that if L = D_{n} · (∂_{1}, …, ∂_{n}) then all roots of b_{f}^{L}(s) are rational and negative, and hence −b_{n−1} is a lower bound for each single root. ⊓ ⊔

Combining Proposition 3.11 with Algorithms 3.7 and 3.9 we therefore obtain

Algorithm 3.14 (Localization). Input: f ∈ R_{n}; L ⊆ D_{n} such that D_{n}/L is holonomic and f-torsion free. Output: Generators for an ideal J such that (D_{n}/L) ⊗_{R_{n}} R_{n}[f^{−1}] ≅ D_{n}/J.

1. Determine J^{L}(f^{s}) following Algorithm 3.7.

2. Find the Bernstein polynomial b_{f}^{L}(s) using Algorithm 3.9.

3. Find the smallest integer root a of b_{f}^{L}(s).

4. Replace s by a in all generators for J^{L}(f^{s}) and return these generators.

End.

Algorithms 3.9 and 3.14 are Theorems 6.14 and Proposition 7.3 in [32].

Example 3.15. For f = x^{2}+y^{2}+z^{2}+w^{2}, we found a stable integral exponent of −2 in the previous subsection. To compute the annihilator of f^{−2} using Macaulay 2, we use the command Dlocalize which automatically uses the stable integral exponent. We first change the current ring back to the ring D which we used in the previous subsection:

    i21 : use D
    o21 = D
    o21 : PolynomialRing

Here is the module to be localized.

    i22 : R = (D^1/ideal(Dx,Dy,Dz,Dw))
    o22 = cokernel | Dx Dy Dz Dw |
                                 1
    o22 : D-module, quotient of D

The localization then is obtained by running

    i23 : ann2 = relations Dlocalize(R,f)
    o23 = | wDz-zDw wDy-yDw zDy-yDz wDx-xDw zDx-xDz yDx-xDy xDx+yDy+zDz+wD · · ·
                  1       10
    o23 : Matrix D  <--- D

The output ann2 is a 1 × 10 matrix whose entries generate ann_{D_{4}}(f^{−2}).

Remark 3.16. The computation of the annihilator of f^{a} for values of a such that a − k is a Bernstein root for some k ∈ ℕ^{+} can be achieved by an appropriate syzygy computation. For example, we saw above that the Bernstein-Sato polynomial of f = x^{2} + y^{2} + z^{2} + w^{2} on R_{4} is (s + 1)(s + 2). So evaluation of J^{L}(f^{s}) at −1 does not necessarily yield ann_{D_{4}}(f^{−1}), as will be documented in the next remark. On the other hand, evaluation at −2 gives ann_{D_{4}}(f^{−2}). It is not hard to see that ann_{D_{4}}(f^{−1}) = {P ∈ D_{n} : P f ∈ ann_{D_{n}}(f^{−2})} because D_{4} • f^{−1} = D_{4}f • f^{−2} ⊆ D_{4} • f^{−2}. So we set:

    i24 : F = matrix{{f}}
    o24 = | x2+y2+z2+w2 |
                  1       1
    o24 : Matrix D  <--- D

To find ann_{D_{4}}(f^{−1}), we use the command modulo which computes relations: modulo(M,N) computes for two matrices M, N the set of (vectors of) operators P such that P · M ⊆ im(N).

    i25 : ann1 = gb modulo(F,ann2)
    o25 = {2} | wDz-zDw wDy-yDw zDy-yDz Dx^2+Dy^2+Dz^2+Dw^2 wDx-xDw zDx-xD · · ·
    o25 : GroebnerBasis

The generator ∂_{2}^{2}+∂_{y}^{2}+∂_{z}^{2}+∂_{w}^{2} is particularly interesting. To see the quotient of D_{4} • f^{−2} by D_{4} • f^{−1} we execute

    i26 : gb((ideal ann2) + (ideal F))
    o26 = | w z y x |
    o26 : GroebnerBasis

which shows that D_{4} • f^{−2} is an extension of D_{4}/D_{4}(x, y, z, w) by D_{4} • f^{−1}. This is not surprising, since (0, 0, 0, 0) is the only singularity of f and hence the difference between D_{4}•f^{−2} and D_{4}•f^{−1} must be supported at the origin.

It is perhaps interesting to note that for a more complicated (but still irreducible) polynomial f the quotient (D_{n} • f^{a})/(D_{n} • f^{a+1}) can be a nonsimple nonzero D_{n}-module. For example, let f = x^{3} + y^{3} + z^{3} + w^{3} and a = a_{f}^{Δ} = −2. A computation similar to the quadric case above shows that here (D_{n} • f^{a})/(D_{n} • f^{a+1}) is a (x, y, z, w)-torsion module (supported at the singular locus of f) isomorphic to (D_{4}/D_{4} · (x, y, z, w))^{6}. The socle elements of the quotient are the degree 2 polynomials in x, y, z, w.

Example 3.17. Here we show how with Macaulay 2 one can get more information from the localization procedure.

    i27 : D = QQ[x,y,z,Dx,Dy,Dz, WeylAlgebra => {x=>Dx, y=>Dy, z=>Dz}];
    i28 : Delta = ideal(Dx,Dy,Dz);
    o28 : Ideal of D

We now define a polynomial and compute the localization of R_{3} at the polynomial.

    i29 : f=x^3+y^3+z^3;
    i30 : I1=DlocalizeAll(D^1/Delta,f,Strategy=>Oaku)
                                    1        1        1             2  · · ·
    o30 = HashTable{annFS => ideal (-*x*Dx + -*y*Dy + -*z*Dz - $s, z Dy - · · ·
                                    3        3        3
                                         2      5       4
                    Bfunction => ($s + 1) ($s + -)($s + -)($s + 2)
                                                3       3
                                  2       3         2       4      1   2 · · ·
                    Boperator => --*y*z*Dx Dy*Dz - --*y*z*Dy Dz + ---*z Dx · · ·
                                 81                81             243  · · ·
                    GeneratorPower => -2
                    LocMap => | x6+2x3y3+y6+2x3z3+2y3z3+z6 |
                    LocModule => cokernel | 1/3xDx+1/3yDy+1/3zDz+2 z2Dy-y2 · · ·
    o30 : HashTable
    i31 : I2=DlocalizeAll(D^1/Delta,f)

    o31 = HashTable{GeneratorPower => -2  · · ·
                                              2        2      2       1
                    IntegrateBfunction => ($s) ($s + 1) ($s + -)($s + -)
                                                              3       3
                    LocMap => | x6+2x3y3+y6+2x3z3+2y3z3+z6 |
                    LocModule => cokernel | xDx+yDy+zDz+6 z2Dy-y2Dz z2Dx-x · · ·
    o31 : HashTable

The last two commands both compute the localization of R_{3} at f but follow different localization algorithms. The former uses our Algorithm 3.14 while the latter follows [37].

The output of the command DlocalizeAll is a hashtable, because it contains a variety of data that pertain to the map R_{n} ↪ R_{n}[f^{−1}]. LocMap gives the element that induces the map on the D_{n}-module level (by right multiplication). LocModule gives the localized module as cokernel of the displayed matrix. Bfunction is the Bernstein-Sato polynomial and annFS the generic annihilator J^{L}(f^{s}). Boperator displays a Bernstein operator and the stable integral exponent is stored in GeneratorPower.

Algorithm 3.14 requires the ideal L to be f-saturated. This property is not checked by Macaulay 2, so the user needs to make sure it holds. For example, this is always the case if D_{n}/L is a localization of R_{n}. One can check the saturation property in Macaulay 2, but it is a rather involved computation. This difficulty can be circumvented by omitting the option Strategy=>Oaku, in which case the localization algorithm of [37] is used. In terms of complexity, using the Oaku strategy is much better behaved.

One can address the entries of a hashtable. For example, executing

    i32 : I1.LocModule
    o32 = cokernel | 1/3xDx+1/3yDy+1/3zDz+2 z2Dy-y2Dz z2Dx-x2Dz y2Dx-x2Dy |
                                 1
    o32 : D-module, quotient of D

one can see that R_{3}[f^{−1}] is isomorphic to the cokernel of the LocModule entry which (for either localization method) is

D_{3}/ D_{3} · ( x∂_{x} + y∂_{y} + z∂_{z} + 6, z^{2}∂_{y} − y^{2}∂_{z}, x^{3}∂_{y} + y^{3}∂_{y} + y^{2}z∂_{z} + 6y^{2},
z^{2}∂_{x} − x^{2}∂_{z}, y^{2}∂_{x} − x^{2}∂_{y}, x^{3}∂_{z} + y^{3}∂_{z} + z^{3}∂_{z} + 6z^{2}).

The first line of the hashtable I1 shows that R_{3}[f^{−1}] is generated by f^{−2} over D_{3}, while I1.LocMap shows that the natural inclusion D_{3}/Δ = R_{3} ↪ R_{3}[f^{−1}] = D_{3}/J^{Δ}(f^{s})|_{s=a_{f}^{Δ}} is given by right multiplication by f^{2}, shown as the third entry of the hashtable I1. It is perhaps useful to point out that the fourth entry of hashtable I2 is a relative of the Bernstein-Sato polynomial of f, and is used for the computation of the so-called restriction functor (compare with [35,48]).

Remark 3.18. Plugging in bad values a for s (such that a−k is a Bernstein root for some k ∈ ℕ^{+}) can have unexpected results. Consider the case n = 1, f = x. Then J^{Δ}(f^{s}) = D_{1} · (s + 1 − ∂_{1}x_{1}). Hence b_{f}^{Δ}(s) = s + 1 and −1 is the unique Bernstein root. According to Proposition 3.11,

(D_{1}[s]/J^{Δ}(f^{s})) |_{s=a} ≅ R_{1}[x_{1}^{−1}] ⊗ x_{1}^{a} ≅ D_{1} • x_{1}^{a}

for all a ∈ K \ ℕ. For a ∈ ℕ^{+}, we also have D_{1}[s]/J^{Δ}(f^{s})|_{s=a} ≅ D_{1} • x^{a}, but this is of course not R_{1}[x_{1}^{−1}] but just R_{1}.

For a = 0 however, (D_{1}[s]/J^{Δ}(f^{s})) |_{s=a} has x_{1}-torsion! It equals in fact what is called the Fourier transform of R_{1}[x_{1}^{−1}] and fits into an exact sequence

0 → H_{x_{1}}^{1}(R_{1}) → F(R_{1}[x_{1}^{−1}]) → R_{1} → 0.

Remark 3.19. If D_{n}/L is holonomic but has f-torsion, then (D_{n}/L) ⊗ R_{n}[f^{−1}] and ((D_{n}/L)/H_{(f)}^{0}(D_{n}/L)) ⊗ R_{n}[f^{−1}] are of course isomorphic. So if we knew how to find M/H_{f}^{0}(M) for holonomic modules M, our localization algorithm could be generalized to all holonomic modules. There are two different approaches to the problem of f-torsion, presented in [35] and in [43,44]. The former is based on homological methods and restriction to the diagonal while the latter aims at direct computation of those P ∈ D_{n} for which f^{k}P ∈ L for some k.

There is also another direct method for localizing M = D_{n}/L at f that works in the situation where the nonholonomic locus of M is contained in the variety of f (irrespective of torsion). It was proved by Kashiwara, that M[f^{−1}] is then holonomic, and in [37] an algorithm based on integration is given that computes a presentation for it.

4 Local Cohomology Computations

The purpose of this section is to present algorithms that compute for given i, j, k ∈ ℕ, I ⊆ R_{n} the structure of the local cohomology modules H_{I}^{k}(R_{n}) and H_{𝔪}^{i}(H_{I}^{j}(R_{n})), and the invariants λ_{i,j}(R_{n}/I) associated to I. In particular, the algorithms detect the vanishing of local cohomology modules.

4.1 Local Cohomology

We will first describe an algorithm that takes a finite set of polynomials {f_{1}, …, f_{r}} ⊂ R_{n} and returns a presentation of H_{I}^{k}(R_{n}) where I = R_{n} · (f_{1}, …, f_{r}). In particular, if H_{I}^{k}(R_{n}) is zero, then the algorithm will return the zero presentation.

Definition 4.1. Let Θ_{k}^{r} be the set of k-element subsets of {1, …, r} and for θ ∈ Θ_{k}^{r} write F_{θ} for the product ∏_{i∈θ} f_{i}.

Consider the Čech complex Č^{•} = Č^{•}(f_{1}, …, f_{r}) associated to f_{1}, …, f_{r} in R_{n},

0 → R_{n} → ⨁_{θ∈Θ_{1}^{r}} R_{n}[F_{θ}^{−1}] → ⨁_{θ∈Θ_{2}^{r}} R_{n}[F_{θ}^{−1}] → ⋯ → R_{n}[(f_{1} ⋯ f_{r})^{−1}] → 0.

(4.1)

Its k-th cohomology group is H_{I}^{k}(R_{n}). The map

M_{k} : (Č^{k} = ⨁_{θ∈Θ_{k}^{r}} R_{n}[F_{θ}^{−1}]) → ( ⨁_{θ′∈Θ_{k+1}^{r}} R_{n}[F_{θ′}^{−1}] = Č^{k+1}) (4.2)

is the sum of maps

R_{n}[(f_{i_{1}} ⋯ f_{i_{k}})^{−1}] → R_{n}[(f_{j_{1}} ⋯ f_{j_{k+1}})^{−1}]  (4.3)

which are zero if \{i_{1}, …, i_{k}\} ⊈ \{j_{1}, …, j_{k+1}\}, or send \frac{1}{1} to \frac{1}{1} (up to sign). With D_{n}/Δ ≅ R_{n}, identify R_{n}[(f_{i_{1}} ⋯ f_{i_{k}})^{−1}] with D_{n}/J^{Δ}((f_{i_{1}} ⋯ f_{i_{k}})^{s})|_{s=a} and R_{n}[(f_{j_{1}} ⋯ f_{j_{k+1}})^{−1}] with D_{n}/J^{Δ}((f_{j_{1}} ⋯ f_{j_{k+1}})^{s})|_{s=a′} where a, a′ are sufficiently small integers. By Proposition 3.11 we may assume that a = a′ ≤ 0. Then the map (4.3) is in the nonzero case multiplication from the right by (f_{l})^{−a} where l = {j_{1}, …, j_{k+1}}\{i_{1}, …, i_{k}}, again up to sign. For example, consider the inclusion

D_{2}/D_{2} · (∂_{x}x, ∂_{y}) = R_{2}[x^{−1}] ↪ R_{2}[(xy)^{−1}] = D_{2}/D_{2} · (∂_{x}x, ∂_{y}y).

Since \frac{1}{x} = \frac{y}{xy}, the inclusion on the level of D_{2}-modules maps P + ann(x^{−1}) to P y + ann((xy)^{−1}).

It follows that the matrix representing the map Č^{k} → Č^{k+1} in terms of D_{n}-modules is very easy to write down once the annihilator ideals and Bernstein polynomials for all k- and (k+1)-fold products of the f_{i} are known: the entries are 0 or ±f_{l}^{−a} where f_{l} is the new factor. These considerations give the following

Algorithm 4.2 (Local cohomology). Input: f_{1}, …, f_{r} ∈ R_{n}; k ∈ ℕ. Output: H_{I}^{k}(R_{n}) in terms of generators and relations as finitely generated D_{n}-module where I = R_{n} · (f_{1}, …, f_{r}).

1. Compute the annihilator ideal J^{Δ}((F_{θ})^{s}) and the Bernstein polynomial b_{F_{θ}}^{Δ}(s) for all (k−1)-, k- and (k+1)-fold products F_{θ} of f_{1}, …, f_{r} following Algorithms 3.7 and 3.9 (so θ runs through Θ_{k−1}^{r} ∪ Θ_{k}^{r} ∪ Θ_{k+1}^{r}).

2. Compute the stable integral exponents a_{F_{θ}}^{Δ}, let a be their minimum and replace s by a in all the annihilator ideals.

3. Compute the two matrices M_{k−1}, M_{k} representing the D_{n}-linear maps Č^{k−1} → Č^{k} and Č^{k} → Č^{k+1} as explained above.

4. Compute a Gröbner basis G for the kernel of the composition

⨁_{θ∈Θ_{k}^{r}} D_{n} → → ⨁_{θ∈Θ_{k}^{r}} D_{n}/J^{Δ}(F_{θ}^{s})|_{s=a} ⟶^{M_{k}} ⨁_{θ′∈Θ_{k+1}^{r}} D_{n}/J^{Δ}(F_{θ′}^{s})|_{s=a}.

5. Compute a Gröbner basis G_{0} for the preimage in ⨁_{θ∈Θ_{k}^{r}} D_{n} of the module

im(M_{k−1}) ⊆ ⨁_{θ∈Θ_{k}^{r}} D_{n}/J^{Δ}((F_{θ})^{s})|_{s=a} ← ← ⨁_{θ∈Θ_{k}^{r}} D_{n}

under the indicated projection.

6. Compute the remainders of all elements of G with respect to G_{0}.

7. Return these remainders and G_{0}. End.

The nonzero elements of G generate the quotient G/G_{0} ≅ H_{I}^{k}(R_{n}) so that in particular H_{I}^{k}(R_{n}) = 0 if and only if all returned remainders are zero.

Example 4.3. Let I be the ideal in R_{6} = K[x, y, z, u, v, w] that is generated by the 2 × 2 minors f, g, h of the matrix ( \begin{matrix}x & y & z \\ u & v & w \end{matrix} ). Then H_{I}^{i}(R_{6}) = 0 for i < 2 and H_{I}^{2}(R_{6}) ≠ 0 because I is a height 2 prime, and H_{I}^{i}(R_{6}) = 0 for i > 3 because I is 3-generated, so the only open case is H_{I}^{3}(R_{6}). This module in fact does not vanish, and our algorithm provides a proof of this fact by direct calculation. The Macaulay 2 commands are as follows.

    i33 : D= QQ[x,y,z,u,v,w,Dx,Dy,Dz,Du,Dv,Dw, WeylAlgebra =>
                    {x=>Dx, y=>Dy, z=>Dz, u=>Du, v=>Dv, w=>Dw}];
    i34 : Delta=ideal(Dx,Dy,Dz,Du,Dv,Dw);
    o34 : Ideal of D
    i35 : R=D^1/Delta;
    i36 : f=x*v-u*y;
    i37 : g=x*w-u*z;
    i38 : h=y*w-v*z;

These commands define the relevant rings and polynomials. The following three compute the localization of R_{6} at f:

    i39 : Rf=DlocalizeAll(R,f,Strategy => Oaku)
    o39 = HashTable{annFS => ideal (Dw, Dz, x*Du + y*Dv, y*Dy - u*Du, x*Dy · · ·
                    Bfunction => ($s + 1)($s + 2)
                    Boperator => - Dy*Du + Dx*Dv
                    GeneratorPower => -2
                    LocMap => | y2u2-2xyuv+x2v2 |
                    LocModule => cokernel | Dw Dz xDu+yDv yDy-uDu xDy+uDv · · ·
    o39 : HashTable

of R_{6}[f^{−1}] at g:

i40 : Rfg=DlocalizeAll(Rf.LocModule,g, Strategy => Oaku)

⋯

o40 = HashTable{annFS => ideal (Dz*Dv - Dy*Dw, x*Du + y*Dv + z*Dw, z*D · · ·
                Bfunction => ($s + 1)($s)
                Boperator => - Dz*Du + Dx*Dw
                GeneratorPower => -1
                LocMap => | -zu+xw |
                LocModule => cokernel | DzDv-DyDw xDu+yDv+zDw zDz-uDu- · · ·
o40 : HashTable

and of R_{6}[(fg)^{−1}] at h:

i41 : Rfgh=DlocalizeAll(Rfg.LocModule,h, Strategy => Oaku)

⋯

o41 = HashTable{annFS => ideal (x*Du + y*Dv + z*Dw, z*Dz - u*Du - v*Dv · · ·
                Bfunction => ($s - 1)($s + 1)
                Boperator => - Dz*Dv + Dy*Dw
                GeneratorPower => -1
                LocMap => | -zv+yw |
                LocModule => cokernel | xDu+yDv+zDw zDz-uDu-vDv-2 yDy- · · ·
o41 : HashTable

From the output of these commands one sees that R_{6}[(fgh)^{−1}] is generated by 1/f^{2}gh. This follows from considering the stable integral exponents of the three localization procedures, encoded in the hashtable entry stored under the key GeneratorPower: for example,

i42 : Rf.GeneratorPower
o42 = -2

shows that the generator for R_{6}[f^{−1}] is f^{−2}. Now we compute the annihilator of H_{I}^{3}(R_{6}). From the Čech complex it follows that H_{I}^{3}(R_{6}) is the quotient of the output of Rfgh.LocModule (isomorphic to R_{6}[(fgh)^{−1}]) by the submodules generated by f^{2}, g and h. (These submodules represent R_{6}[(gh)^{−1}], R_{6}[(fh)^{−1}] and R_{6}[(fg)^{−1}] respectively.)

i43 : Jfgh=ideal relations Rfgh.LocModule;
o43 : Ideal of D

i44 : JH3=Jfgh+ideal(f^2,g,h);
o44 : Ideal of D

i45 : JH3gb=gb JH3
o45 = | w z uDu+vDv+wDw+4 xDu+yDv+zDw yDy-uDu-wDw-1 xDy+uDv uDx+vDy+wD · · ·
o45 : GroebnerBasis

So JH3 is the ideal of D_{3} generated by

w, z, u∂_{u} + v∂_{v} + w∂_{w} + 4, x∂_{u} + y∂_{v} + z∂_{w}, y∂_{y} − u∂_{u} − w∂_{w} − 1,

x∂_{y} + u∂_{v}, u∂_{x} + v∂_{y} + w∂_{z}, y∂_{x} + v∂_{u}, x∂_{x} − v∂_{v} − w∂_{w} − 1,

v^{2}, uv, yv, u^{2}, yu + xv, xu, y^{2}, xy,
x^{2}, xv∂_{v} + 2x, v∂_{y}∂_{u} + w∂_{z}∂_{u} − v∂_{x}∂_{v} − w∂_{x}∂_{w} − 3∂_{x}

which form a Gröbner basis. This proves that H_{I}^{3}(R) ≠ 0, because 1 is not in the Gröbner basis of JH3. (There are also algebraic and topological proofs to this account. Due to Hochster, and Bruns and Schwänzl, they are quite ingenious and work only in rather special situations.)

From our output one can see that H_{I}^{3}(R_{6}) is (x, y, z, u, v, w)-torsion as JH3 contains (x, y, z, u, v, w)^{2}. The following sequence of commands defines a procedure testmTorsion which as the name suggests tests a module D_{n}/L for being 𝔪-torsion. We first replace the generators of L with a Gröbner basis. Then we pick the elements of the Gröbner basis not using any ∂_{i}. If now the left over polynomials define an ideal of dimension 0 in R_{n}, the ideal was 𝔪-torsion and otherwise not.

    i46 : testmTorsion = method();
    i47 : testmTorsion Ideal := (L) -> (
               LL = ideal generators gb L;
               n = numgens (ring (LL)) // 2;
               LLL = ideal select(first entries gens LL, f->(
                         l = apply(listForm f, t->drop(t#0,n));
                         all(l, t->t==toList(n:0))
                         ));
               if dim inw(LLL,toList(apply(1..2*n,t -> 1))) == n
               then true
               else false);

If we apply testmTorsion to JH3 we obtain

    i48 : testmTorsion(JH3)
    o48 = true

Further inspection shows that the ideal JH3 is in fact the annihilator of the fraction f/(wzx^{2}y^{2}u^{2}v^{2}) in R_{6}[(xyzuvw)^{−1}]/R_{6} ≅ D_{6}/D_{6} · (x, y, z, u, v, w), and that the fraction generates D_{6}/D_{6}·(x_{1}, …, x_{6}). Since D_{6}/D_{6}·(x_{1}, …, x_{6}) is isomorphic to E_{R_{6}}(R_{6}/R_{6} · (x_{1}, …, x_{6})), the injective hull of R_{6}/R_{6} · (x_{1}, …, x_{6}) = K in the category of R_{6}-modules, we conclude that H_{I}^{3}(R_{6}) ≅ E_{R_{6}}(K). (In the next subsection we will display a way to use Macaulay 2 to find the length of an 𝔪-torsion module.)

In contrast, let I be defined as generated by the three minors, but this time over a field of finite characteristic. Then H_{I}^{3}(R_{6}) is zero because Peskine and Szpiro proved using the Frobenius functor [39] that R_{6}/I Cohen-Macaulay implies that H_{I}^{k}(R_{6}) is nonzero only if k = codim(I).

Also opposite to the above example, but in any characteristic, is the following calculation. Let I be the ideal in K[x, y, z, w] describing the twisted cubic: I = R_{4} · (f, g, h) with f = xz − y^{2}, g = yw − z^{2}, h = xw − yz. The projective variety V_{2} defined by I is isomorphic to the projective line. It is of interest to determine whether V_{2} and other Veronese embeddings of the projective line are complete intersections. The set-theoretic complete intersection property can occasionally be ruled out with local cohomology techniques: if V is of codimension c in the affine variety X and H_{I(V)}^{c+k}(O(X)) ≠ 0 for any positive k then V cannot be a set-theoretic complete intersection. In the case of the twisted cubic, it turns out hat H_{I}^{3}(R_{4}) = 0 as can be seen from the following computation:

    i49 : D=QQ[x,y,z,w,Dx,Dy,Dz,Dw,WeylAlgebra => {x=>Dx, y=>Dy, z=>Dz,
          w=>Dw}];
    i50 : f=y^2-x*z;
    i51 : g=z^2-y*w;
    i52 : h=x*w-y*z;
    i53 : Delta=ideal(Dx,Dy,Dz,Dw);
    o53 : Ideal of D
    i54 : R=D^1/Delta;
    i55 : Rf=DlocalizeAll(R,f,Strategy => Oaku)

1 ⋯

    o55 = HashTable{annFS => ideal (Dw, x*Dy + 2y*Dz, y*Dx + -*z*Dy, x*Dx · · ·

2 ⋯

                                       3
                    Bfunction => ($s + -)($s + 1)
                                       2
                                 1   2
                    Boperator => -*Dy  - Dx*Dz
                                 4
                    GeneratorPower => -1
                    LocMap => | y2-xz |
                    LocModule => cokernel | Dw xDy+2yDz yDx+1/2zDy xDx-zDz · · ·
    o55 : HashTable
    i56 : Rfg=DlocalizeAll(Rf.LocModule,g, Strategy => Oaku);
    i57 : Rfgh=DlocalizeAll(Rfg.LocModule,h, Strategy => Oaku);
    i58 : Ifgh=ideal relations Rfgh.LocModule;
    o58 : Ideal of D
    i59 : IH3=Ifgh+ideal(f,g,h);
    o59 : Ideal of D
    i60 : IH3gb=gb IH3
    o60 = | 1 |
    o60 : GroebnerBasis

It follows that we cannot conclude from local cohomological considerations that V_{2} is not a set-theoretic complete intersection. This is not an accident but typical, as the second vanishing theorem of Hartshorne, Speiser, Huneke and Lyubeznik shows [14,15,18]: if a homogeneous ideal I ⊆ R_{n} describes an geometrically connected projective variety of positive dimension then H_{I}^{n−1}(R_{n}) = H_{I}^{n}(R_{n}) = 0.

4.2 Iterated Local Cohomology

Recall that 𝔪 = R_{n} · (x_{1}, …, x_{n}). As a second application of Gröbner basis computations over the Weyl algebra we show now how to compute the 𝔪torsion modules H_{𝔪}^{i}(H_{I}^{j}(R_{n})). Note that we cannot apply Lemma 3.5 to D_{n}/L = H_{I}^{j}(R_{n}) since H_{I}^{j}(R_{n}) may well contain some torsion.

Č^{j}(R_{n}; f_{1}, …, f_{r}) denotes the j-th module in the Čech complex to R_{n} and {f_{1}, …, f_{r}}. Let Č^{•,•} be the double complex

Č^{i,j} = Č^{i}(R_{n}; x_{1}, …, x_{n}) ⊗_{R_{n}} Č^{j}(R_{n}; f_{1}, …, f_{r}),

with vertical maps ϕ^{•,•} induced by the identity on the first factor and the usual Čech maps on the second, and horizontal maps ξ^{•,•} induced by the Čech maps on the first factor and the identity on the second. Now Č^{i,j} is a direct sum of modules R_{n}[g^{−1}] where g = x_{α_{1}} ⋯ x_{α_{i}} ·f_{β_{1}} ⋯ f_{β_{j}}. So the whole double complex can be rewritten in terms of D_{n}-modules and D_{n}-linear maps using Algorithm 3.14:

\xymatrix{Č^{i−1,j+1} \ar[r]^{ξ^{i−1,j+1}} & Č^{i,j+1} \ar[r]^{ξ^{i,j+1}} & Č^{i+1,j+1} \\ Č^{i−1,j} \ar[r]^{ξ^{i−1,j}} \ar[u]_{ϕ^{i−1,j}} & Č^{i,j} \ar[r]^{ξ^{i,j}} \ar[u]_{ϕ^{i,j}} & Č^{i+1,j} \ar[u]_{ϕ^{i+1,j}} \\ Č^{i−1,j−1} \ar[r]^{ξ^{i−1,j−1}} \ar[u]_{ϕ^{i−1,j−1}} & Č^{i,j−1} \ar[r]^{ξ^{i,j−1}} \ar[u]_{ϕ^{i,j−1}} & Č^{i+1,j−1} \ar[u]_{ϕ^{i+1,j−1}}}

Since Č^{i}(R_{n}; x_{1}, …, x_{n}) is R_{n}-flat, the column cohomology of Č^{•,•} at (i, j) is Č^{i}(R_{n}; x_{1}, …, x_{n}) ⊗_{R_{n}} H_{I}^{j}(R_{n}) and the induced horizontal maps in the j-th row are simply the maps in the Čech complex Č^{•}(H_{I}^{j}(R_{n}); x_{1}, …, x_{n}). It follows that the row cohomology of the column cohomology at (i_{0}, j_{0}) is H_{𝔪}^{i_{0}}(H_{I}^{j_{0}}(R_{n})), the object of our interest.

We have, denoting by X_{θ′} in analogy to F_{θ} the product ∏_{i∈θ′} x_{i}, the following

Algorithm 4.4 (Iterated local cohomology). Input: f_{1}, …, f_{r} ∈ R_{n}; i_{0}, j_{0} ∈ ℕ. Output: H_{𝔪}^{i_{0}}(H_{I}^{j_{0}}(R_{n})) in terms of generators and relations as finitely generated D_{n}-module where I = R_{n} · (f_{1}, …, f_{r}).

1. For i = i_{0} − 1, i_{0}, i_{0} + 1 and j = j_{0} − 1, j_{0}, j_{0} + 1 compute the annihilators J^{Δ}((F_{θ} ·X_{θ′})^{s}), Bernstein polynomials b_{F_{θ}·X_{θ′}}^{Δ} (s), and stable integral exponents a_{F_{θ}·X_{θ′}}^{Δ} of F_{θ} · X_{θ′} where θ ∈ Θ_{j}^{r}, θ′ ∈ Θ_{i}^{n}.

2. Let a be the minimum of all a_{F_{θ}·X_{θ′}}^{Δ} and replace s by a in all the annihilators computed in the previous step.

3. Compute the matrices to the D_{n}-linear maps ϕ^{i,j} : Č^{i,j} → Č^{i,j+1} and ξ^{k,l} : Č^{k,l} → Č^{k+1,l}, for (i, j) ∈ {(i_{0}, j_{0}), (i_{0} + 1, j_{0} − 1), (i_{0}, j_{0} − 1), (i_{0} − 1, j_{0})} and (k, l) ∈ {(i_{0}, j_{0}), (i_{0} − 1, j_{0})}.

4. Compute a Gröbner basis G for the module

D_{n} · G = ker(ϕ^{i_{0},j_{0}}) ∩ [(ξ^{i_{0},j_{0}})^{−1}(im(ϕ^{i_{0}+1,j_{0}−1}))] + im(ϕ^{i_{0},j_{0}−1})

and a Gröbner basis G_{0} for the module

D_{n} · G_{0} = ξ^{i_{0}−1,j_{0}}(ker(ϕ^{i_{0}−1,j_{0}})) + im(ϕ^{i_{0},j_{0}−1}).

5. Compute the remainders of all elements of G with respect to G_{0}.

6. Return these remainders together with G_{0}.

End.

Note that (D_{n} · G)/(D_{n} · G_{0}) is isomorphic to

\frac{ker (\frac{ker(ϕ^{i_{0},j_{0}})}{im(ϕ^{i_{0},j_{0}−1})} ⟶^{ξ^{i_{0},j_{0}}} \frac{ker(ϕ^{i_{0}+1,j_{0}})}{im(ϕ^{i_{0}+1,j_{0}−1})})}{ξ^{i_{0}−1,j_{0}} (\frac{ker(ϕ^{i_{0}−1,j_{0}})}{im(ϕ^{i_{0}−1,j_{0}−1})})} ≅ H_{𝔪}^{i_{0}}(H_{I}^{j_{0}}(R_{n})).

The elements of G will be generators for H_{𝔪}^{i_{0}}(H_{I}^{j_{0}}(R_{n})) and the elements of G_{0} generate the extra relations that are not syzygies.

The algorithm can of course be modified to compute any iterated local cohomology group H_{J}^{j}(H_{I}^{i}(R_{n})) for J ⊇ I by replacing the generators x_{1}, …, x_{n} for 𝔪 by those for J. Moreover, the iteration depth can also be increased by considering “tricomplexes” etc. instead of bicomplexes.

Again we would like to point out that with the methods of [35] or [37] one could actually compute first H_{I}^{i}(R_{n}) and from that H_{J}^{j}(H_{I}^{i}(R_{n})), but probably that is quite a bit more complex a computation.

4.3 Computation of Lyubeznik Numbers

G. Lyubeznik proved in [25] that if K is a field, R = K[x_{1}, …, x_{n}], I ⊆ R, 𝔪 = R · (x_{1}, …, x_{n}) and A = R/I then λ_{i,j}(A) = dim_{K} soc_{R} H_{𝔪}^{i}(H_{I}^{n−j}(R)) is invariant under change of presentation of A. In other words, it only depends on A and i, j but not the projection R → → A. Lyubeznik proved that H_{𝔪}^{i}(H_{I}^{j}(R_{n})) is in fact an injective 𝔪-torsion R_{n}-module of finite socle dimension λ_{i,n−j}(A) and so isomorphic to (E_{R_{n}}(K))^{λ_{i,n−j}(A)} where E_{R_{n}}(K) is the injective hull of K over R_{n}. We are now in a position to compute these invariants of R_{n}/I in characteristic zero..

Algorithm 4.5 (Lyubeznik numbers). Input: f_{1}, …, f_{r} ∈ R_{n}; i, j ∈ ℕ. Output: λ_{i,n−j}(R_{n}/R_{n} · (f_{1}, …, f_{r})).

1. Using Algorithm 4.4 find g_{1}, …, g_{l} ∈ D_{n}^{d} and h_{1}, …, h_{e} ∈ D_{n}^{d} such that H_{𝔪}^{i}(H_{I}^{j}(R_{n})) is isomorphic to D_{n} · (g_{1}, …, g_{l}) modulo H = D_{n} · (h_{1}, …, h_{e}).

2. Assume that after a suitable renumeration g_{1} is not in H. If such a g_{1} cannot be chosen, quit.

3. Find a monomial m ∈ R_{n} such that m · g_{1} ∉ H but x_{i}mg_{1} ∈ H for all x_{i}.

4. Replace H by D_{n}mg_{1} + H and reenter at Step 2.

5. Return λ_{i,n−j}(R_{n}/I), the number of times Step 3 was executed.

End.

The reason that this works is as follows. We know that (D_{n} · g_{1} + H)/H is 𝔪-torsion (as H_{𝔪}^{i}(H_{I}^{j}(R_{n})) is) and so it is possible (with trial and error, or a suitable syzygy computation) to find the monomial m in Step 3. The element mg_{1} mod H ∈ D_{n}/H has annihilator equal to 𝔪 over R_{n} and therefore generates a D_{n}-module isomorphic to D_{n}/D_{n} · 𝔪 ≅ E_{R_{n}}(K). The injection

(D_{n} · mg_{1} + H)/H ↪ (D_{n} · (g_{1}, …, g_{l}) + H)/H

splits as map of R_{n}-modules because E_{R_{n}}(K) is injective and so the cokernel D_{n} · (g_{1}, …, g_{l})/D_{n} · (mg_{1}, h_{1}, …, h_{e}) is isomorphic to (E_{R_{n}}(K))^{λ_{i,n−j}(A)−1}.

Reduction of the g_{i} with respect to a Gröbner basis of the new relation module and repetition will lead to the determination of λ_{i,n−j}(A).

Assume that D_{n}/L is an 𝔪-torsion module. For example, we could have D_{n}/L ≅ H_{𝔪}^{i}(H_{I}^{j}(R_{n})). Here is a procedure that finds by trial and error the monomial socle element m of Step 3 in Algorithm 4.4.

    i61 : findSocle = method();
    i62 : findSocle(Ideal, RingElement):= (L,P) -> (
               createDpairs(ring(L));
               v=(ring L).dpairVars#0;
               myflag = true;
               while myflag do (
                    w = apply(v,temp -> temp*P % L);
                    if all(w,temp -> temp == 0) then myflag = false
                    else (
                         p = position(w, temp -> temp != 0);
                         P = v#p * P;)
                    );
               P);

For example, if we want to apply this socle search to the ideal JH3 describing H_{I}^{3}(R_{6}) of Example 4.3 we do

    i63 : D = ring JH3
    o63 = D
    o63 : PolynomialRing

(as D was most recently the differential operators on ℚ[x, y, z, w])

    i64 : findSocle(JH3,1_D)
    o64 = x*v
    o64 : D

One can then repeat the socle search and kill the newly found element as suggested in the explanation above:

    i65 : findLength = method();
    i66 : findLength Ideal := (I) -> (
               l = 0;
               while I != ideal 1_(ring I) do (
                    l = l + 1;
                    s = findSocle(I,1_(ring I));
                    I = I + ideal s;);
               l);

Applied to JH3 of the previous subsection this yields

    i67 : findLength JH3
    o67 = 1

and hence JH3 does indeed describe a module isomorphic to E_{R_{6}}(K).

5 Implementation, Examples, Questions

5.1 Implementations and Optimizing

The Algorithms 3.7, 3.9 and 3.14 have first been implemented by T. Oaku and N. Takayama using the package Kan [42] which is a postscript language for computations in the Weyl algebra and in polynomial rings. In Macaulay 2 Algorithms 3.7, 3.9 and 3.14 as well as Algorithm 4.2 have been implemented by A. Leykin, M. Stillman and H. Tsai. They additionally implemented a wealth of D-module routines that relate to topics which we cannot all cover in this chapter. These include homomorphisms between holonomic modules and extension functors, restriction functors to linear subspaces, integration (de Rham) functors to quotient spaces and others. For further theoretical information the reader is referred to [35,34,36,40,45,48,50,51].

Computation of Gröbner bases in many variables is in general a time and space consuming enterprise. In commutative polynomial rings the worst case performance for the number of elements in reduced Gröbner bases is doubly exponential in the number of variables and the degrees of the generators. In the (relatively) small Example 4.3 above R_{6} is of dimension 6, so that the intermediate ring D_{n+1}[y_{1}, y_{2}] contains 16 variables. In view of these facts the following idea has proved useful.

The general context in which Lemma 3.5 and Proposition 3.11 were stated allows successive localization of R_{n}[(fg)^{−1}] in the following way. First one computes R_{n}[f^{−1}] according to Algorithm 3.14 as quotient D_{n}/J^{Δ}(f^{s})|_{s=a}, ℤ ∋ a ≪ 0. Then R_{n}[(fg)^{−1}] may be computed using Algorithm 3.14 again since R_{n}[(fg)^{−1}] ≅ R_{n}[g^{−1}] ⊗_{R_{n}} D_{n}/J^{Δ}(f^{s})|_{s=a}. (Note that all localizations of R_{n} are automatically f-torsion free for f ∈ R_{n} so that Algorithm 3.14 can be used.) This process may be iterated for products with any finite number of factors. Of course the exponents for the various factors might be different. This requires some care when setting up the Čech complex. In particular one needs to make sure that the maps Č^{k} → Č^{k+1} can be made explicit using the f_{i}. (In our Example 4.3, this is precisely how we proceeded when we found

Rfgh.)

Remark 5.1. One might hope that for all holonomic fg-torsion free modules M = D_{n}/L we have (with M ⊗ R_{n}[g^{−1}] ≅ D_{n}/L′):

a_{f}^{L} = min{s ∈ ℤ : b_{f}^{L}(s) = 0} ≤ min{s ∈ ℤ : b_{f}^{L′}(s) = 0} = a_{f}^{L′}. (5.1)

This hope is unfounded. Let R_{5} = K[x_{1}, …, x_{5}], f = x_{1}^{2} + x_{2}^{2} + x_{3}^{2} + x_{4}^{2} + x_{5}^{2}. One may check that then b_{f}^{Δ}(s) = (s+1)(s+5/2). Hence R_{5}[f^{−1}] = D_{5} •f^{−1}, let L = ker(D_{5} → D_{5} • f^{−1}). Set g = x_{1}. Then b_{g}^{Δ}(s) = s + 1, let L′ = ker(D_{5} → D_{5} • g^{−1}).

Then b_{f}^{L′}(s) = (s + 1)(s + 2)(s + 5/2) and b_{g}^{L}(s) = (s + 1)(s + 3) because of the following computations.

    i68 : erase symbol x; erase symbol Dx;

These two commands essentially clear the history of the variables x and Dx and make them available for future computations.

    i70 : D = QQ[x_1..x_5, Dx_1..Dx_5, WeylAlgebra =>
               apply(toList(1..5), i -> x_i => Dx_i)];
    i71 : f = x_1^2 + x_2^2 + x_3^2 + x_4^2 +x_5^2;
    i72 : g = x_1;
    i73 : R = D^1/ideal(Dx_1,Dx_2,Dx_3,Dx_4,Dx_5);

As usual, these commands defined the base ring, two polynomials and the D_{5}-module R_{5}. Now we compute the respective localizations.

    i74 : Rf =DlocalizeAll(R,f,Strategy => Oaku);
    i75 : Bf = Rf.Bfunction
                5
    o75 = ($s + -)($s + 1)
                2
    o75 : Product
    i76 : Rfg = DlocalizeAll(Rf.LocModule,g,Strategy => Oaku);
    i77 : Bfg = Rfg.Bfunction
    o77 = ($s + 1)($s + 3)
    o77 : Product
    i78 : Rg = DlocalizeAll(R,g,Strategy => Oaku);

    i79 : Bg = Rg.Bfunction
    o79 = ($s + 1)
    o79 : Product
    i80 : Rgf = DlocalizeAll(Rg.LocModule,f,Strategy => Oaku);
    i81 : Bgf = Rgf.Bfunction
                                5
    o81 = ($s + 2)($s + 1)($s + -)
                                2
    o81 : Product

The output shows that R_{n}[(fg)^{−1}] is generated by f^{−2}g^{−1} or f^{−1}g^{−3} but not by f^{−1}g^{−2} and in particular not by f^{−1}g^{−1}. This can be seen from the various Bernstein-Sato polynomials: as for example the smallest integral root of Bf is −1 and that of Bfg is −3, R_{3}[f^{−1}] is generated by f^{−1} and R_{3}[(fg)^{−1}] by f^{−1}g^{−3}. This example not only disproves the above inequality (5.1) but also shows the inequality to be wrong if ℤ is replaced by ℝ (as −3 < min(−5/2, −1)).

Nonetheless, localizing R_{n}[(fg)^{−1}] as (R_{n}[f^{−1}])[g^{−1}] is heuristically advantageous, apparently for two reasons. For one, it allows the exponents of the various factors to be distinct which is useful for the subsequent cohomology computation: it helps to keep the degrees of the maps small. So in Example 4.3 we can write R_{6}[(fg)^{−1}] as D_{6} •(f^{−1}g^{−2}) instead of D_{6} •(fg)^{−2}. Secondly, since the computation of Gröbner bases is potentially doubly exponential it seems to be advantageous to break a big problem (localization at a product) into several “easy” problems (successive localization).

An interesting case of this behavior is our Example 4.3. If we compute R_{n}[(fgh)^{−1}] as ((R_{n}[f^{−1}])[g^{−1}])[h^{−1}], the calculation uses approximately 6MB and lasts a few seconds using Macaulay 2. If one tries to localize R_{n} at the product of the three generators at once, Macaulay 2 runs out of memory on all machines the author has tried this computation on.

5.2 Projects for the Future

This is a list of theoretical and implementational questions that the author finds important and interesting.

Prime Characteristic. In [26], G. Lyubeznik gave an algorithm for deciding whether or not H_{I}^{i}(R) = 0 for any given I ⊆ R = K[x_{1}, …, x_{n}] where K is a computable field of positive characteristic. His algorithm is built on entirely different methods than the ones used in this chapter and relies on the Frobenius functor. The implementation of this algorithm would be quite worthwhile.

Ambient Spaces Different from 𝔸_{K}^{n}. If A equals K[x_{1}, …, x_{n}], I ⊆ A, X = Spec(A) and Y = Spec(A/I), knowledge of H_{I}^{i}(A) for all i ∈ ℕ answers of course the question about the local cohomological dimension of Y in X. If W ⊆ X is a smooth variety containing Y then Algorithm 4.2 for the computation of H_{I}^{i}(A) also leads to a determination of the local cohomological dimension of Y in W. Namely, if J stands for the defining ideal of W in X so that R = A/J is the affine coordinate ring of W and if we set c = ht(J), then it can be shown that H_{I}^{i−c}(R) = Hom_{A}(R, H_{I}^{i}(A)) for all i ∈ ℕ. As H_{I}^{i}(A) is I-torsion (and hence J-torsion), Hom_{A}(R, H_{I}^{i}(A)) is zero if and only if H_{I}^{i}(A) = 0. It follows that the local cohomological dimension of Y in W equals cd(A, I)−c and in fact {i ∈ ℕ : H_{I}^{i}(A) ≠ 0} = {i ∈ ℕ : H_{I}^{i−c}(R) ≠ 0}.

If however W = Spec(R) is not smooth, no algorithms for the computation of either H_{I}^{i}(R) or cd(R, I) are known, irrespective of the characteristic of the base field. It would be very interesting to have even partial ideas for computations in that case.

De Rham Cohomology. In [35,48] algorithms are given to compute de Rham (in this case equal to singular) cohomology of complements of complex affine hypersurfaces and more general varieties. In [51] an algorithm is given to compute the multiplicative (cup product) structure, and in [50] the computation of the de Rham cohomology of open and closed sets in projective space is explained. Some of these algorithms have been implemented while others are still waiting.

For example, de Rham cohomology of complements of hypersurfaces, and partially the cup product routine, are implemented.

Example 5.2. Let f = x^{3}+y^{3}+z^{3} in R_{3}. One can compute with Macaulay 2 the de Rham cohomology of the complement of Var(f), and it turns out that the cohomology in degrees 0 and 1 is 1-dimensional, in degrees 3 and 4 2dimensional and zero otherwise – here is the input:

    i82 : erase symbol x;

Once x gets used as a subscripted variable, it’s hard to use it as a nonsubscripted variable. So let’s just erase it.

    i83 : R = QQ[x,y,z];
    i84 : f=x^3+y^3+z^3;
    i85 : H=deRhamAll(f);
H is a hashtable with the entries Bfunction, LocalizeMap, VResolution,
TransferCycles, PreCycles, OmegaRes and CohomologyGroups. For exam-

ple, we have

    i86 : H.CohomologyGroups
                           1
    o86 = HashTable{0 => QQ }
                           1
                    1 => QQ

                           2
                    2 => QQ
                           2
                    3 => QQ
    o86 : HashTable

showing that the dimensions are as claimed above. One can also extract information on the generator of R_{3}[f^{−1}] used to represent the cohomology classes by

    i87 : H.LocalizeMap
    o87 = | $x_1^6+2$x_1^3$x_2^3+$x_2^6+2$x_1^3$x_3^3+2$x_2^3$x_3^3+$x_3^6 |
    o87 : Matrix

which proves that the generator in question is f^{−2}. The cohomology classes that Macaulay 2 computes are differential forms:

    i88 : H.TransferCycles
    o88 = HashTable{0 => | -1/12$x_1^4$x_2^3$D_1-1/3$x_1$x_2^6$D_1-1/12$x_· · ·
                    1 => | 2/3$x_1^5+2/3$x_1^2$x_2^3+2/3$x_1^2$x_3^3  |
                         | -2/3$x_1^3$x_2^2-2/3$x_2^5-2/3$x_2^2$x_3^3 |
                         | 2/3$x_1^3$x_3^2+2/3$x_2^3$x_3^2+2/3$x_3^5  |
                    2 => | 48$x_1$x_2$x_3^2 600$x_3^4     |
                         | 48$x_1$x_2^2$x_3 600$x_2$x_3^3 |
                         | 48$x_1^2$x_2$x_3 600$x_1$x_3^3 |
                    3 => | -$x_1$x_2$x_3 -$x_3^3 |
    o88 : HashTable

So, for example, the left column of the three rows that correspond to H_{dR}^{2}(ℂ^{3}\ Var(f), ℂ) represent the form (xyz(48zdxdy + 48ydzdx + 48xdydz))/f^{2}. If we apply the above elements of D_{3} to f^{−2} and equip the results with appropriate differentials one arrives (after dropping unnecessary integral factors) at the results displayed in the table in Figure 1. In terms of de Rham cohomology, the cup product is given by the wedge product of differential forms. So from the table one reads off the cup product relations o∪t_{1} = d_{1}, o∪t_{2} = d_{2}, o ∪ o = 0, and that e operates as the identity.

For more involved examples, and the algorithms in [50], an actual implementation would be necessary since paper and pen are insufficient tools then.

Remark 5.3. The reader should be warned: if f^{−a} generates R_{n}[f^{−1}] over D_{n}, then it is not necessarily the case that each de Rham cohomology class of U = ℂ^{n} \ Var(f) can be written as a form with a pole of order at most a. A counterexample is given by f = (x^{3} + y^{3} + xy)xy, where H_{dR}^{1}(U; ℂ) has a class that requires a third order pole, although −2 is the smallest integral Bernstein root of f on R_{2}.

Hom and Ext. In [36,44,45] algorithms are explained that compute homomorphisms between holonomic systems. In particular, rational and polynomial solutions can be found because, for example, a polynomial solution to the

Group Dimension  Generators
H_{dR}^{0}  1  e := \frac{f^{2}}{f^{2}}
H_{dR}^{1}  1  o := \frac{(x^{2}dx − y^{2}dy + z^{2}dz)f}{f^{2}}
H_{dR}^{2}  2  t_{1} := \frac{xyz(zdxdy + ydzdx + xdydz)}{f^{2}}

t_{2} := \frac{(zdxdy + ydzdx + xdydz)z^{3}}{f^{2}}

H_{dR}^{3}  2  d_{1} := \frac{xyzdxdydz}{f^{2}}

d_{2} := \frac{z^{3}dxdydz}{f^{2}}

Fig. 1.

system {P_{1}, …, P_{r}} ∈ D_{n} corresponds to an element of Hom_{D_{n}}(D_{n}/I, R_{n}) where I = D_{n} · (P_{1}, …, P_{r}).

Example 5.4. Consider the GKZ system in 2 variables associated to the matrix (1, 2) ∈ ℤ^{1×2} and the parameter vector (5) ∈ ℂ^{1}. Named after Gelfand-Kapranov-Zelevinski [11], this is the following system of differential equations:

(x∂_{x} + y∂_{y}) • f = 5f,
(∂_{x}^{2} − ∂_{y}) • f = 0.

With Macaulay 2 one can solve systems of this sort as follows:

    i89 : I = gkz(matrix{{1,2}}, {5})
                  2
    o89 = ideal (D  - D , x D  + 2x D  - 5)
                  1    2   1 1     2 2
    o89 : Ideal of QQ [x , x , D , D , WeylAlgebra => {x  => D , x  => D }]
                        1   2   1   2                   1     1   2     2

This is a simple command to set up the GKZ-ideal associated to a matrix and a parameter vector. The polynomial solutions are obtained by

    i90 : PolySols I
            5      3          2
    o90 = {x  + 20x x  + 60x x }
            1      1 2      1 2
    o90 : List

This means that there is exactly one polynomial solution to the given GKZ-system, and it is

x^{5} + 20x^{3}y + 60xy^{2}.

The algorithm for Hom_{D_{n}}(M, N) is implemented and can be used to check whether two given D-modules are isomorphic. Moreover, there are algorithms (not implemented yet) to compute the ring structure of End_{D}(M) for a given D-module M of finite holonomic rank which can be used to split a given holonomic module into its direct summands. Perhaps an adaptation of these methods can be used to construct Jordan-Hölder sequences for holonomic D-modules.

Finiteness and Stratifications. Lyubeznik pointed out in [27] the following curious fact.

Theorem 5.5. Let P (n, d; K) denote the set of polynomials of degree at most d in at most n variables over the field K of characteristic zero. Let B(n, d; K) denote the set of Bernstein-Sato polynomials

B(n, d; K) = {b_{f}(s) : f ∈ P (n, d; K)}.

Then B(n, d; K) is finite. ⊓ ⊔

So P (n, d; K) has a finite decomposition into strata with constant Bernstein-Sato polynomial. A. Leykin proved in [22] that this decomposition is independent of K and computable in the sense that membership in each stratum can be tested by the vanishing of a finite set of algorithmically computable polynomials over ℚ in the coefficients of the given polynomial in P (n, d; K). In particular, the stratification is algebraic and for each K induced by base change from ℚ to K. It makes thus sense to define B(n, d) which is the finite set of Bernstein polynomials that can occur for f ∈ P (n, d; K) (where K is in fact irrelevant).

Example 5.6. Consider P (2, 2; K), the set of quadratic binary forms over K. With Macaulay 2, Leykin showed that there are precisely 4 different Bernstein polynomials possible:

• b_{f}(s) = 1 iff f ∈ V_{1} = V′_{1} \ V′′_{1}, where V′_{1} = V (a_{1,1}, a_{0,1}, a_{0,2}, a_{1,0}, a_{2,0}), while V′′_{1} = V (a_{0,0})

• b_{f}(s) = s + 1 iff f ∈ V_{2} = (V′_{2} \ V′′_{2}) ∪ (V′_{3} \ V′′_{3}), where V′_{2} = V (0), V′′_{2} = V (γ_{1}), V′_{3} = V (γ_{2}, γ_{3}, γ_{4}), V′′_{3} = V (γ_{3}, γ_{4}, γ_{5}, γ_{6}, γ_{7}, γ_{8}),

• b_{f}(s) = (s + 1)^{2} iff f ∈ V′_{4} \ V′′_{4}, where V′_{4} = V (γ_{1}), V′′_{4} = V (γ_{2}, γ_{3}, γ_{4}),

• b_{f}(s) = (s + 1)(s + \frac{1}{2}) iff f ∈ V′_{5} \ V′′_{5}, where V′_{5} = V (γ_{3}, γ_{4}, γ_{5}, γ_{6}, γ_{7}, γ_{8}), V′′_{5} = V (a_{1,1}, a_{0,1}, a_{0,2}, a_{1,0}, a_{2,0}).

Here we have used the abbreviations

• γ_{1} = a_{0,2}a_{1,0}^{2} − a_{0,1}a_{1,0}a_{1,1} + a_{0,0}a_{1,1}^{2} + a_{0,1}^{2}a_{2,0} − 4a_{0,0}a_{0,2}a_{2,0},

• γ_{2} = 2a_{0,2}a_{1,0} − a_{0,1}a_{1,1},

• γ_{3} = a_{1,0}a_{1,1} − 2a_{0,1}a_{2,0},

• γ_{4} = a_{1,1}^{2} − 4a_{0,2}a_{2,0}, • γ_{5} = 2a_{0,2}a_{1,0} − a_{0,1}a_{1,1},

• γ_{6} = a_{0,1}^{2} − 4a_{0,0}a_{0,2},

• γ_{7} = a_{0,1}a_{1,0} − 2a_{0,0}a_{1,1},

• γ_{8} = a_{1,0}^{2} − 4a_{0,0}a_{2,0}.

Similarly, Leykin shows that there are 9 possible Bernstein polynomials for f ∈ B(2, 3; K):

B(2, 3) = \{ (s + 1)^{2}(s + \frac{2}{3})(s + \frac{4}{3}), (s + 1)^{2}(s + \frac{1}{2}), (s + 1), 1,

(s + 1)(s + \frac{2}{3})(s + \frac{1}{3}), (s + 1)^{2}, (s + 1)(s + \frac{1}{2}),

(s + 1)(s + \frac{7}{6})(s + \frac{5}{6}), (s + 1)^{2}(s + \frac{3}{4})(s + \frac{5}{4})\} .

It would be very interesting to study the nature of the stratification in larger cases, and its restriction to hyperplane arrangements.

A generalization of this stratification result is obtained in [49]. There it is shown that there is an algorithm to give P (n, d; K) an algebraic stratification defined over ℚ such that the algebraic de Rham cohomology groups of the complement of Var(f) do not vary on the stratum in a rather strong sense. Again, the study and explicit computation of this stratification should be very interesting.

Hodge Numbers. If Y is a projective variety in ℙ_{ℂ}^{n} then algorithms outlined in [50] show how to compute the dimensions not only of the de Rham cohomology groups of ℙ_{ℂ}^{n} \ Y but also of Y itself. Suppose now that Y is in fact a smooth projective variety. An interesting set of invariants are the Hodge numbers, defined by h^{p,q} = dim H^{p}(Y, Ω^{q}), where Ω^{q} denotes the sheaf of ℂ-linear differential q-forms with coefficients in O_{Y}. At present we do not know how to compute them. Of course there is a spectral sequence H^{p}(Y, Ω^{q}) ⇒ H_{dR}^{p+q}(Y, ℂ) and we know the abutment (or at least its dimensions), but the technique for computing the abutment does not seem to be usable to compute the E^{1} term because on an affine patch H^{p}(Y, Ω^{q}) is either zero or an infinite dimensional vector space.

Hodge structures and Bernstein-Sato polynomials are related as is for example shown in [46].

5.3 Epilogue

In this chapter we have only touched a few highlights of the theory of computations in D-modules, most of them related to homology and topology. Despite this we hardly touched on the topics of integration and restriction, which are the D-module versions of a pushforward and pullback, [20,30,35,48].

A very different aspect of D-modules is discussed in [40] where at the center of investigations is the combinatorics of solutions of hypergeometric differential equations. The combinatorial structure is used to find series solutions for the differential equations which are polynomial in certain logarithmic functions and power series with respect to the variables.

Combinatorial elements can also be found in the work of Assi, Castro and Granger, see [2,3], on Gröbner fans in rings of differential operators. An important (open) question in this direction is the determination of the set of ideals in D_{n} that are initial ideals under some weight.

Algorithmic D-module theory promises to be an active area of research for many years to come, and to have interesting applications to various other parts of mathematics.

References

1. A.G. Aleksandrov and V.L. Kistlerov: Computer method in calculating bfunctions of non-isolated singularities. Contemp. Math., 131:319–335, 1992.

2. A. Assi, F.J. Castro-Jiménez, and M. Granger: How to calculate the slopes of a D-module.. Compositio Math., 104(2):107–123, 1996.

3. A. Assi, F.J. Castro-Jiménez, and M. Granger: The Gröbner fan of an A_{n}- module.. J. Pure Appl. Algebra, 150(1):27–39, 2000.

4. J. Bernstein: Lecture notes on the theory of D-modules. Unpublished.

5. J.-E. Björk: Rings of Differential Operators. North Holland, New York, 1979.

6. J. Briançon, M. Granger, Ph. Maisonobe, and M. Miniconi: Algorithme de calcul du polynôme de Bernstein: cas nondégénéré. Ann. Inst. Fourier, 39:553– 610, 1989.

7. M. Brodmann and J. Rung: Local cohomology and the connectedness dimension in algebraic varieties. Comment. Math. Helvetici, 61:481–490, 1986.

8. M.P. Brodmann and R.Y. Sharp: Local Cohomology: an algebraic introduction with geometric applications.. Cambridge Studies in Advanced Mathematics, 60. Cambridge University Press, 1998.

9. S.C. Coutinho: A primer of algebraic D-modules. London Mathematical Society Student Texts 33. Cambridge University Press, Cambridge, 1995.

10. R. Garcia and C. Sabbah: Topological computation of local cohomology multiplicities. Coll. Math., XLIX(2-3):317–324, 1998.

11. I. Gelfand, M. Kapranov, and A. Zelevinski: Discriminants, resultants, and multidimensional determinants. Mathematics: Theory & Applications. Birkhäuser Boston, Inc., Boston, MA, 1994.

12. P. Griffiths and J. Harris: Principles of Algebraic Geometry. A Wiley Interscience Publication. WILEY and Sons, 1978.

13. R. Hartshorne: Local Cohomology. A seminar given by A. Grothendieck, volume 41 of Lecture Notes in Mathematics. Springer Verlag, 1967.

14. R. Hartshorne: Cohomological Dimension of Algebraic Varieties. Ann. Math., 88:403–450, 1968.

15. R. Hartshorne and R. Speiser: Local cohomological dimension in characteristic p. Ann. Math.(2), 105:45–79, 1977.

16. Robin Hartshorne: On the De Rham cohomology of algebraic varieties. Inst. Hautes Études Sci. Publ. Math., 45:5–99, 1975.

17. C. Huneke: Problems on local cohomology. Res. Notes Math., 2:93–108, 1992.

18. C. Huneke and G. Lyubeznik: On the vanishing of local cohomology modules. Invent. Math., 102:73–93, 1990.

19. M. Kashiwara: B-functions and holonomic systems, rationality of B-functions.. Invent. Math., 38:33–53, 1976.

20. M. Kashiwara: On the holonomic systems of linear partial differential equations, II. Invent. Math., 49:121–135, 1978.

21. J. Kollár: Singularities of pairs, in Algebraic Geometry, Santa Cruz, 1995. Proc. Symp. Pure Math. Amer. Math. Soc., 62:221–287, 1997.

22. A. Leykin: Towards a definitive computation of Bernstein-Sato polynomials. math.AG/0003155^{1}, 2000.

23. A. Leykin, M. Stillman, and H. Tsai: The D-module package for Macaulay 2. http://www.math.umn.edu/˜ leykin/.

24. François Loeser: Fonctions d’Igusa p-adiques, polynômes de Bernstein, et polyèdres de Newton. J. Reine Angew. Math., 412:75–96, 1990.

25. G. Lyubeznik: Finiteness Properties of Local Cohomology Modules: an Application of D-modules to Commutative Algebra. Invent. Math., 113:41–55, 1993.

26. G. Lyubeznik: F -modules: applications to local cohomology and D-modules in characteristic p > 0. Journal für die Reine und Angewandte Mathematik, 491:65–130, 1997.

27. G. Lyubeznik: On Bernstein-Sato polynomials. Proc. Amer. Math. Soc., 125(7):1941–1944, 1997.

28. Ph. Maisonobe: D-modules: an overview towards effectivity, in: E. Tournier, ed., Computer Algebra and Differential Equations. London Math. Soc. Lecture Note Ser., 193, Cambridge Univ. Press, Cambridge, pages 21–55, 1994.

29. B. Malgrange: Le polynôme de Bernstein d’une singularité isolée. Lecture Notes in Mathematics, Springer Verlag, 459:98–119, 1975.

30. Z. Mebkhout: Le formalisme des six opérations de Grothendieck pour les D_{X}- modules cohérents.. Travaux en Cours. Hermann, Paris, 1989.

31. T. Oaku: An algorithm for computing B-functions. Duke Math. Journal, 87:115–132, 1997.

32. T. Oaku: Algorithms for b-functions, restrictions, and algebraic local cohomology groups of D-modules. Advances in Appl. Math., 19:61–105, 1997.

33. T. Oaku: Algorithms for the b-function and D-modules associated with a polynomial. J. Pure Appl. Algebra, 117-118:495–518, 1997.

34. T. Oaku and N. Takayama: An algorithm for de Rham cohomology groups of the complement of an affine variety via D-module computation. J. Pure Appl. Algebra, 139:201–233, 1999.

35. T. Oaku and N. Takayama: Algorithms for D-modules – restriction, tensor product, localization and local cohomology groups. Journal of Pure and Applied Algebra, 156(2-3):267–308, February 2001.

36. T. Oaku, N. Takayama, and H. Tsai: Polynomial and rational solutions of holonomic systems. math.AG/0001064, 1999.

37. T. Oaku, N. Takayama, and U. Walther: A localization algorithm for Dmodules. J. Symb. Comp., 29(4/5):721–728, May 2000.

1 The webpage http://xxx.lanl.gov/ is a page designed for the storage of preprints, and allows posting and downloading free of charge.

38. A. Ogus: Local cohomological dimension of algebraic varieties. Ann. Math. (2), 98:327–365, 1973.

39. C. Peskine and L. Szpiro: Dimension projective finie et cohomologie locale. Inst. Hautes Études Sci. Publ. Math., 42:47–119, 1973.

40. M. Saito, B. Sturmfels, and N. Takayama: Gröbner deformations of hypergeometric differential equations. Algorithms and Computation in Mathematics, 6. Springer Verlag, 1999.

41. M. Sato, M. Kashiwara, T. Kimura, and T. Oshima: Micro-local analysis of prehomogeneous vector spaces. Inv. Math., 62:117–179, 1980.

42. N. Takayama: Kan: A system for computation in algebraic analysis. Source code available at www.math.kobe-u.ac.jp/KAN. Version 1 (1991), Version 2 (1994), the latest Version is 2.990914 (1999).

43. H. Tsai: Weyl closure, torsion, and local cohomology of D-modules. Preprint, 1999.

44. H. Tsai: Algorithms for algebraic analysis. Thesis, University of California at Berkeley, 2000.

45. H. Tsai and U. Walther: Computing homomorphisms between holonomic Dmodules. math.RA/0007139, 2000.

46. A. Varchenko: Asymptotic Hodge structure in the vanishing cohomology. Math. USSR Izvestija, 18(3):469–512, 1982.

47. U. Walther: Algorithmic Computation of Local Cohomology Modules and the Local Cohomological Dimension of Algebraic Varieties. J. Pure Appl. Algebra, 139:303–321, 1999.

48. U. Walther: Algorithmic Computation of de Rham Cohomology of Complements of Complex Affine Varieties. J. Symb. Comp., 29(4/5):795–839, May 2000.

49. U. Walther: Homotopy Type, Stratifications and Gröbner bases. In preparation, 2000.

50. U. Walther: Cohomology with Rational Coefficients of Complex Varieties. Contemp. Math., to appear.

51. U. Walther: The Cup Product Structure for Complements of Complex Affine Varieties. J. Pure Appl. Algebra, to appear.

52. U. Walther: On the Lyubeznik numbers of a local ring. Proc. Amer. Math. Soc., to appear.

53. T. Yano: On the theory of b-functions. Publ. RIMS, Kyoto Univ., 14:111–202,

Index

(u, v)-Gröbner basis 7 D-modules 8 D_{n}-modules 6 D_{n+1} 13 J^{L}(f^{s}), algorithm for

16 R_{n} as a D_{n}-module 9 Θ_{k}^{r} 24 in_{(u,v)}(L) 7 b_{f}^{L}(s) 11 y_{1}-homogenization 15

action 9, 13 action (of a differential

operator) 6, 8, 10, 11

Bernstein (Bernstein-Sato) polynomial 11

Bernstein filtration 9 Bernstein inequality 9 Bernstein operator 11 Bernstein polynomial, algorithm for 17 Bernstein root 11

Čech complex 2

cohomological dimension

2 computable field 4

dimension (of a D-module) 9

holonomic module 9

initial form 7

Lefschetz Theorem 3 Leibniz rule 6 local cohomological dimension 2 local cohomology 2

– algorithm for 25, 30 – iterated 30 localization

– algorithm for 20 Lyubeznik numbers 32

monomial order on D_{n} 7

normally ordered expression 7

product rule 9, 11

f-saturated 14

symbol 7

term order on D_{n} 8 f-torsion free 14

weight 7

weight vector 15

weight vector for D_{n} 7 Weyl algebra 6