|
A.3.12 Algebraic dependence
Let
149#149, 481#481, ...,
482#482.We want to check whether
-
481#481, ..., 483#483are algebraically dependent.
Let
484#484.Then
485#485are the algebraic relations between
481#481, ..., 483#483.
-
486#486.
486#486if and only if the normal form of
149#149 with respect to
251#251 and a
block ordering with respect to
487#487 and
488#488 with 489#489is in
490#490.
Both questions can be answered using the following procedure. If the
second argument is zero, it checks for algebraic dependence and returns
the ideal of relations between the generators of the given ideal.
Otherwise it checks for subring membership and returns the normal form
of the second argument with respect to the ideal I.
| proc algebraicDep(ideal J, poly g)
{
def R=basering; // give a name to the basering
int n=size(J);
int k=nvars(R);
int i;
intvec v;
// construction of the new ring:
// construct a weight vector
v[n+k]=0; // gives a zero vector of length n+k
for(i=1;i<=k;i++)
{
v[i]=1;
}
string orde="(a("+string(v)+"),dp);";
string ri="ring Rhelp=("+charstr(R)+"),
("+varstr(R)+",Y(1.."+string(n)+")),"+orde;
// ring definition as a string
execute(ri); // execution of the string
// construction of the new ideal I=(J[1]-Y(1),...,J[n]-Y(n))
ideal I=imap(R,J);
for(i=1;i<=n;i++)
{
I[i]=I[i]-var(k+i);
}
poly g=imap(R,g);
if(g==0)
{
// construction of the ideal of relations by elimination
poly el=var(1);
for(i=2;i<=k;i++)
{
el=el*var(i);
}
ideal KK=eliminate(I,el);
keepring(Rhelp);
return(KK);
}
// reduction of g with respect to I
ideal KK=reduce(g,std(I));
keepring(Rhelp);
return(KK);
}
// applications of the procedure
ring r=0,(x,y,z),dp;
ideal i=xz,yz;
algebraicDep(i,0);
==> _[1]=0
// Note: after call of algebraicDep(), the basering is Rhelp.
setring r; kill Rhelp;
ideal j=xy+z2,z2+y2,x2y2-2xy3+y4;
algebraicDep(j,0);
==> _[1]=Y(1)^2-2*Y(1)*Y(2)+Y(2)^2-Y(3)
setring r; kill Rhelp;
poly g=y2z2-xz;
algebraicDep(i,g);
==> _[1]=Y(2)^2-Y(1)
// this shows that g is contained in i.
setring r; kill Rhelp;
algebraicDep(j,g);
==> _[1]=-z^4+z^2*Y(2)-x*z
// this shows that g is contained in j.
|
|