1 | initial version |

Here is some code which "linearizes" your problem:

```
def polynomial_identity(polys):
monomials = set()
for p in polys:
monomials.update(p.monomials())
base_ring = p.base_ring()
monomial_order = list(monomials)
m = []
for p in polys:
row = []
for monomial in monomial_order:
try:
row.append(base_ring(p.coefficient(monomial)))
except TypeError:
row.append(base_ring(0))
m.append(row)
m = matrix(m)
return m.kernel()
```

The result is a vector space which gives you all of your solutions. Your example

```
sage: polynomial_identity([x^2 + y^2, x*y + x*z, x*y*z])
Vector space of degree 3 and dimension 0 over Rational Field
Basis matrix:
[]
```

shows that (0,0,0) is the only answer. Another example:

```
sage: polynomial_identity([x+y, 2*x+2*y, 3*(x+y)])
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 -1/3]
[ 0 1 -2/3]
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.