add option to work modulo an ideal
This commit is contained in:
parent
38e7c8af19
commit
e2717632d5
@ -12,3 +12,36 @@ f = imap(s,f);
|
|||||||
f;
|
f;
|
||||||
kbase(std(f));
|
kbase(std(f));
|
||||||
quit;
|
quit;
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
ring r = 0,(x,y),ds;
|
||||||
|
ideal f = x,y2,y3+x2y;
|
||||||
|
def Q = MalgrRing(ideal(0),2,f);
|
||||||
|
setring Q;
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(ideal(x,y));
|
||||||
|
ring r = 0,(x,y),ds;
|
||||||
|
ideal f = x,y2,y3+x2y;
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(f, ideal(x,y));
|
||||||
|
TargetIdeal(f, std(ideal(x,y)));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
TargetIdeal(f, std(ideal(x,y)));
|
||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
ring r = 0,(x,y),ds;
|
||||||
|
ideal f = x,y2,y3+x2y;
|
||||||
|
TargetIdeal(f, std(ideal(x,y)));
|
||||||
|
|||||||
@ -123,6 +123,13 @@ proc AeNormal(ideal f, list #)
|
|||||||
int n = nvars(basering);
|
int n = nvars(basering);
|
||||||
int p = ncols(f);
|
int p = ncols(f);
|
||||||
|
|
||||||
|
int s = size(#);
|
||||||
|
|
||||||
|
if (s > 0)
|
||||||
|
{
|
||||||
|
int k = TargetIdeal(f,std(#[1]));
|
||||||
|
}
|
||||||
|
|
||||||
def Raux = MalgrRing(ideal(0),n,ideal(f[1..n]));
|
def Raux = MalgrRing(ideal(0),n,ideal(f[1..n]));
|
||||||
|
|
||||||
matrix jf[p][n] = jacob(f);
|
matrix jf[p][n] = jacob(f);
|
||||||
@ -133,7 +140,11 @@ proc AeNormal(ideal f, list #)
|
|||||||
|
|
||||||
execute("def f = imap("+RName+",f)");
|
execute("def f = imap("+RName+",f)");
|
||||||
execute("def jf = imap("+RName+",jf)");
|
execute("def jf = imap("+RName+",jf)");
|
||||||
execute("def # = imap("+RName+",#)");
|
|
||||||
|
if (s > 0)
|
||||||
|
{
|
||||||
|
execute("def # = imap("+RName+",#)");
|
||||||
|
}
|
||||||
|
|
||||||
module wf = freemodule(p);
|
module wf = freemodule(p);
|
||||||
int m = ncols(Gens);
|
int m = ncols(Gens);
|
||||||
@ -150,6 +161,11 @@ proc AeNormal(ideal f, list #)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s>0)
|
||||||
|
{
|
||||||
|
wf = wf + freemodule(p)*(f^k);
|
||||||
|
}
|
||||||
|
|
||||||
if (size(#)>0)
|
if (size(#)>0)
|
||||||
{
|
{
|
||||||
jf = jf + #[1]*freemodule(p);
|
jf = jf + #[1]*freemodule(p);
|
||||||
@ -218,6 +234,39 @@ proc NormalOYModule(matrix GOX, matrix GOY, list #)
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
proc TargetIdeal(ideal f, ideal J)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Ideal f should be a finite map.
|
||||||
|
Ideal J should be an ideal in O_X in STD form, such that the radical of J is the maximal ideal.
|
||||||
|
OUTPUT: An integer k such that f^k is contained in J.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int done = 0;
|
||||||
|
int k = 1;
|
||||||
|
|
||||||
|
ideal auxf = 1;
|
||||||
|
|
||||||
|
while (done == 0)
|
||||||
|
{
|
||||||
|
auxf = auxf*f;
|
||||||
|
if (size(reduce(auxf,J,1)) == 0)
|
||||||
|
{
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(k);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
proc GenerateOYModule(matrix GOX, matrix GOY, list #)
|
proc GenerateOYModule(matrix GOX, matrix GOY, list #)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -399,7 +448,6 @@ proc MalgrFormPoly(poly h, list #)
|
|||||||
poly c;
|
poly c;
|
||||||
int nGens = ncols(Gens);
|
int nGens = ncols(Gens);
|
||||||
|
|
||||||
|
|
||||||
// Convert the Malgrange Normal Form of the polynomial to row matrix form.
|
// Convert the Malgrange Normal Form of the polynomial to row matrix form.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -408,6 +456,7 @@ proc MalgrFormPoly(poly h, list #)
|
|||||||
We only need to extract these coefficients and add them to the corresponding component in v.
|
We only need to extract these coefficients and add them to the corresponding component in v.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
matrix v[1][nGens] = 0;
|
matrix v[1][nGens] = 0;
|
||||||
|
|
||||||
for (i=1; i<= nGens-1; i++)
|
for (i=1; i<= nGens-1; i++)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user