|
D.8.2.3 elimpart
Procedure from library presolve.lib (see presolve_lib).
- Usage:
- elimpart(i [,n,e] ); i=ideal, n,e=integers
n : only the first n vars are considered for substitution,
e =0: substitute from linear part of i (same as elimlinearpart)
e!=0: eliminate also by direct substitution
(default: n = nvars(basering), e = 1)
- Return:
- list of 5 objects:
| [1]: ideal obtained by substituting from the first n variables those
from i, which appear in the linear part of i (or, if e!=0, which
can be expressed directly in the remaining vars)
[2]: ideal, variables which have been substituted
[3]: ideal, i-th element defines substitution of i-th var in [2]
[4]: ideal of variables of basering, substituted ones are set to 0
[5]: ideal, describing the map from the basering, say k[x(1..m)], to
itself onto k[..variables from [4]..] and [1] is the image of i
| The ideal i is generated by [1] and [3] in k[x(1..m)], the map [5]
maps [3] to 0, hence induces an isomorphism
| k[x(1..m)]/i -> k[..variables from [4]..]/[1]
|
- Note:
- Applying elimpart to interred(i) may result in more substitutions.
However, interred may be more expansive than elimpart for big ideals
Example:
| LIB "presolve.lib";
ring s=0,(u,x,y,z),dp;
ideal i = xy2-xu4-x+y2,x2y2+z3+zy,y+z2+1,y+u2;
elimpart(i);
==> [1]:
==> _[1]=u2-z2-1
==> _[2]=u12-u2z+z3
==> [2]:
==> _[1]=y
==> _[2]=x
==> [3]:
==> _[1]=u2+y
==> _[2]=-u4+x
==> [4]:
==> _[1]=u
==> _[2]=0
==> _[3]=0
==> _[4]=z
==> [5]:
==> _[1]=u
==> _[2]=u4
==> _[3]=-u2
==> _[4]=z
i = interred(i); i;
==> i[1]=z2+y+1
==> i[2]=y2-x
==> i[3]=u2+y
==> i[4]=x3+z3+yz
elimpart(i);
==> [1]:
==> _[1]=u2-z2-1
==> _[2]=u12-u2z+z3
==> [2]:
==> _[1]=x
==> _[2]=y
==> [3]:
==> _[1]=-y2+x
==> _[2]=u2+y
==> [4]:
==> _[1]=u
==> _[2]=0
==> _[3]=0
==> _[4]=z
==> [5]:
==> _[1]=u
==> _[2]=u4
==> _[3]=-u2
==> _[4]=z
elimpart(i,2);
==> [1]:
==> _[1]=z2+y+1
==> _[2]=u2+y
==> _[3]=y6+z3+yz
==> [2]:
==> _[1]=x
==> [3]:
==> _[1]=-y2+x
==> [4]:
==> _[1]=u
==> _[2]=0
==> _[3]=y
==> _[4]=z
==> [5]:
==> _[1]=u
==> _[2]=y2
==> _[3]=y
==> _[4]=z
|
|