- Usage:
`DHom(M,N), DHom(M,N,w), DHom(I,J)`

- Outputs:
- a hash table, a basis of D-homomorphisms between holonomic D-modules
*M*and*N*

- a hash table, a basis of D-homomorphisms between holonomic D-modules

The set of D-homomorphisms between two holonomic modules *M* and *N* is a finite-dimensional vector space over the ground field. Since a homomorphism is defined by where it sends a set of generators, the output of this command is a list of matrices whose columns correspond to the images of the generators of *M*. Here the generators of *M* are determined from its presentation by generators and relations.

The procedure calls Drestriction, which uses *w* if specified.

The algorithm used appears in the paper 'Computing homomorphisms between holonomic D-modules' by Tsai-Walther(2000). The method is to combine isomorphisms of Bjork and Kashiwara with the restriction algorithm.

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

i2 : M = W^1/ideal(D-1) o2 = cokernel | D-1 | 1 o2 : W-module, quotient of W |

i3 : N = W^1/ideal((D-1)^2) o3 = cokernel | D2-2D+1 | 1 o3 : W-module, quotient of W |

i4 : DHom(M,N) o4 = {| -xD+x+1 |, | -D+1 |} o4 : List |

Input modules *M*, *N*, *D/I* and *D/J* should be holonomic.

- DExt -- Ext groups between holonomic modules
- Drestriction -- restriction modules of a D-module

- DHom(Ideal,Ideal)
- DHom(Module,Module)
- DHom(Module,Module,List)