   : resol0 : Macros in libraries : res-kernel-image

## res-solv

```[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 ::
```

Nobuki Takayama 平成17年2月10日