[M d] res-solv [c' r] M : matrix, d, c' : vectors, r : scalar(integer) c:=c'/r is a solutions of Sum[c_i M_i] = d where c_i is the i-th element of the vector c and M_i is the i-th row vector of M. If there is no solution, then res-solv returns null. Note that M and d are not treated as an element of the homogenized Weyl algebra. If M or d contains the homogenization variable h, it automatically set to 1. If you need to use h, use the command res-solv-h [M d rng] res-solv [c' r] rng is a ring object. res-solv extracts variables names from rng, but defines a new ring. Example 1: [(x,y) ring_of_differential_operators [[(x) -1 (Dx) 1]] weight_vector 0] define_ring [ [ [(x Dx + 2).] [ (Dx (x Dx + 3) - (x Dx + 2) (x Dx -4)).]] [(1).]] res-solv :: Example 2: [ [ (x Dx + 2). (Dx (x Dx + 3) - (x Dx + 2) (x Dx -4)).] (1).] res-solv :: Example 3: [ [[(x Dx + 2). (0).] [(Dx+3). (x^3).] [(3). (x).] [(Dx (x Dx + 3) - (x Dx + 2) (x Dx -4)). (0).]] [(1). (0).]] res-solv :: Example 4: [[ (x*Dx+h^2). (Dx^2+x*h).] [(x^2+h^2). (h Dx + x^2).]] /ff set [[ (x^2 Dx + x h^2). (Dx^3).]] /gg set [ff gg ff mul 0 get ] res-solv-h :: res*solv and res*solv*h accept string inputs, too. For example, [[ [ [(x Dx + 2)] [ (Dx (x Dx + 3) - (x Dx + 2) (x Dx -4))]] [(1)]] (x)] res*solv ::