|
D.4.2.2 module_containment
Procedure from library algebra.lib (see algebra_lib).
- Usage:
- module_containment(p,P,M[,k]); p poly, P ideal, M ideal, k int
P = P[1],...,P[n] generators of a subalgebra of the basering,
M = M[1],...,M[m] generators of a module over the subalgebra K[P]
- Assume:
- ncols(P) = nvars(basering), the P[i] are algebraically independent
- Return:
| - k=0 (or if k is not given), an integer:
1 : if p is contained in the module <M[1],...,M[m]> over K[P]
0 : if p is not contained in <M[1],...,M[m]>
- k=1, a list, say l, of size 2, l[1] integer, l[2] ring:
l[1]=1 : if p is in <M[1],...,M[m]> and then the ring l[2] contains
the polynomial check = h(y(1),...,y(m),z(1),...,z(n)) if
p = h(M[1],...,M[m],P[1],...,P[n])
l[1]=0 : if p is in not in <M[1],...,M[m]>, then l[2] contains the
poly check = h(x,y(1),...,y(m),z(1),...,z(n)) if p satisfies
the nonlinear relation p = h(x,M[1],...,M[m],P[1],...,P[n]) where
x = x(1),...,x(n) denote the variables of the basering
|
- Display:
- the polynomial h(y(1),...,y(m),z(1),...,z(n)) if k=0, resp.
a comment how to access the relation check if k=1, provided
printlevel >= voice+1 (default).
- Theory:
- The ideal of algebraic relations of all the generators p1,...,pn,
s1,...,st given by P and S is computed introducing new variables y(j),
z(i) and the product order: x^a*y^b*z^c > x^d*y^e*z^f if x^a > x^d
with respect to the lp ordering or else if z^c > z^f with respect to
the dp ordering or else if y^b > y^e with respect to the lp ordering
again. p reduces to a polynomial only in the y(j) and z(i), linear in
the z(i) <=> p is contained in the module.
Example:
|