# Singular          ##### 7.7.22.0. dmodActionRat
Procedure from library `dmodloc.lib` (see dmodloc_lib).

Usage:
dmodActionRat(id,w); id ideal or poly, f vector

Assume:
The basering is the n-th Weyl algebra W over a field of characteristic 0 and for all 1<=i<=n the identity
var(i+n)*var(i)=var(i)*var(i+1)+1 holds, i.e. the sequence of variables is given by x(1),...,x(n),D(1),...,D(n), where D(i) is the differential operator belonging to x(i).
Further, assume that w has exactly two components, second one not 0, and that w does not contain any D(i).

Return:
same type as id, the result of the natural D-module action of id on the rational function w/w

Example:
 ```LIB "dmodloc.lib"; ring r = 0,(x,y),dp; poly f = 2*x; poly g = y; def A = annRat(f,g); setring A; poly f = imap(r,f); poly g = imap(r,g); vector v = [f,g]; // represents f/g // x and y act by multiplication dmodActionRat(x,v); ==> _=2*x^2*gen(1)+y*gen(2) dmodActionRat(y,v); ==> _=2*x*gen(1)+gen(2) // Dx and Dy act by partial derivation dmodActionRat(Dx,v); ==> _=y*gen(2)+2*gen(1) dmodActionRat(Dy,v); ==> _=y^2*gen(2)-2*x*gen(1) dmodActionRat(x*Dx+y*Dy,v); ==> _=gen(2) setring r; f = 2*x*y; g = x^2 - y^3; def B = annRat(f,g); setring B; poly f = imap(r,f); poly g = imap(r,g); vector v = [f,g]; dmodActionRat(LD,v); // hence LD is indeed the annihilator of f/g ==> _=gen(2) ==> _=gen(2) ==> _=gen(2) ==> _=gen(2) ==> _=gen(2) ```

### Misc 