# Singular          ##### 7.5.20.0. ratSol
Procedure from library `dmodloc.lib` (see dmodloc_lib).

Usage:
ratSol(I); I ideal

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).
Moreover, assume that I is holonomic.

Return:
module, a basis of the rational solutions to the given system of linear PDEs with polynomial coefficients, encoded via I Note that each entry has two components, the first one standing for the enumerator, the second one for the denominator.

Remarks:
Reference: (OTT), Algorithm 3.10

Note:
If printlevel=1, progress debug messages will be printed, if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "dmodloc.lib"; ring r = 0,(x,y,Dx,Dy),dp; def W = Weyl(); setring W; poly tx,ty = x*Dx, y*Dy; ideal I = // Appel F1 with parameters (3,-1,1,1) is a solution tx*(tx+ty)-x*(tx+ty+3)*(tx-1), ty*(tx+ty)-y*(tx+ty+3)*(ty+1); module M = ratSol(I); // We obtain a basis of the rational solutions to I represented by a // module / matrix with two rows. // Each column of the matrix represents a rational function, where // the first row correspond to the enumerator and the second row to // the denominator. print(M); ==> x-y, x, ==> y^4-3*y^3+3*y^2-y,y ``` 