changes to work modulo an ideal

This commit is contained in:
Nelynx 2025-02-28 16:35:12 +01:00
parent 05018b7d38
commit dd2cbef15e
3 changed files with 206 additions and 178 deletions

View File

@ -45,184 +45,189 @@ LIB"AeCodPruebas.lib";
ring r = 0,(x,y),ds; ring r = 0,(x,y),ds;
ideal f = x,y2,y3+x2y; ideal f = x,y2,y3+x2y;
TargetIdeal(f, std(ideal(x,y))); TargetIdeal(f, std(ideal(x,y)));
ring r = 0,(x,y),ds;
ideal f = x,y2,y3+x2y;
LIB"AeCodPruebas.lib"; LIB"AeCodPruebas.lib";
ring r = 0,(x),ds; TargetIdeal(f, std(ideal(x,y)));
ideal f = x2+x4,x3; LIB"AeCodPruebas.lib";
TargetIdeal(f, std(ideal(x,y)));
LIB"AeCodPruebas.lib";
TargetIdeal(f, std(ideal(x,y)));
LIB"AeCodPruebas.lib";
TargetIdeal(f, std(ideal(x,y)));
LIB"AeCodPruebas.lib";
TargetIdeal(f, std(ideal(x,y)));
TargetIdeal(f, std(maxideal(3)));
TargetIdeal(f, std(maxideal(5)));
LIB"AeCodPruebas.lib";
basering;
AeNormal(f); AeNormal(f);
AeNormal(f,maxideal(5)); LIB"AeCodPruebas.lib";
AeNormal(f);
;
LIB"AeCodPruebas.lib";
AeNormal(f);
LIB"AeCodPruebas.lib";
AeNormal(f);
;
LIB"AeCodPruebas.lib";
AeNormal(f);
ideal f = x+x4,y2,y3+x2y;
LIB"AeCodPruebas.lib";
ideal f = x+x4,y2,y3+x2y;
AeNormal(f,maxideal(3));
AeNormal(f,maxideal(4)); AeNormal(f,maxideal(4));
AeNormal(f,maxideal(10)); AeNormal(f);
AeNormal(f,maxideal(6)); LIB"AeCodPruebas.lib";
def Q = MalgrRing(ideal(0),1,f); AeNormal(f);
GF; AeNormal(f,maxideal(1));
AeNormal(f,maxideal(2));
AeNormal(f,maxideal(3));
AeNormal(f,maxideal(4));
AeNormal(f,maxideal(7));
AeNormal(f,maxideal(4));
AeNormal(f,maxideal(5));
f;
def Q = MalgrRing(ideal(0),2,f);
setring Q; setring Q;
GF; GF;
Gens; Gens;
setring r; setring r;
TargetIdeal(f,std(maxideal(10))); ideal w = x+x4,y2;
int k = 5; kbase(std(w));
matrix jf[2][1] = jacob(f);
print(jf);
setring Q; setring Q;
def f = imap(r,f); GF;
def jf = imap(r,jf); basering;
ideal J = x10; GF;
setring r; reduce(x2, GF);
def Q = MalgrRing(ideal(0),1,f); MalgrFormPoly(x2);
setring Q; MalgrFormPoly(x2, maxideal(4));
def f = imap(r,f); MalgrFormPoly(x2, maxideal(2));
setring r; MalgrFormPoly(x2, maxideal(5));
quit; MalgrFormPoly(x2, maxideal(6));
quit; GF;
quit; reduce(x2,GF);
c x2;
? X(3) - f[3];
n; X(3) - mappingf[3];
n MalgrFormPoly(x2, maxideal(6));
n
n
p f
?
b
n
n
n
n
p s
n
p k
n
n
n
n
p f
n
p f
n
n
p f
n
n
p wf
n
p h
n
p m
n
n
n
n
n
n
n
n
n
p wf
n
n
n
p wf;
p s
n
n
n
p jf
p wf
p jf
n
n
n
n
n
n
n
n
p NAef
p mk
n
n
n
p mk
p jf
p wf
p GOX
p G0X
p GOX
n
p GOX
p GOY
p print(GOY)
?
p GOY
n
n
n
n
n
nn
n
n
n
n
n
n
n
n
p T
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
p T
p VAX
p R1
?
p basering
p Raux
n
n
n
n
n
n
p T
n
n
ring r = 0,(x),ds;
ideal f = x2+x4,x3;
def Q = MalgrRing(ideal(0),1,f);
LIB"AeCodPruebas.lib"; LIB"AeCodPruebas.lib";
def Q = MalgrRing(ideal(0),1,f); MalgrFormPoly(x2, maxideal(6));
ring r = 0,(x,y),(dp,c); LIB"AeCodPruebas.lib";
ring r = 0,(x,y),dp; MalgrFormPoly(x2, maxideal(6));
ring R0 = changeord(list(list("(dp,c)",nvars(basering)))); MalgrFormPoly(x2, ideal(x,y)^4);
ring R0 = changeord(list(list("dp,c",nvars(basering)))); LIB"AeCodPruebas.lib";
ring R0 = changeord(list("(dp,c)",nvars(basering))); MalgrFormPoly(x2, ideal(x,y)^4);
n print(_);
n MalgrFormPoly(x3, ideal(x,y)^4);
p T MalgrFormPoly(x3, ideal(x,y)^6);
n MalgrFormPoly(x3, ideal(x,y)^7);
p T
n
p T
n
p T
ring r = 0,(x),ds;
LIB"ring.lib";
changeordTo(r,"(dp,c)");
changeordTo(r,"dp");
changeordTo(r,r"dp");
ring r = 0,(x),(dp,c);
basering
; ;
GF;
LIB"AeCodPruebas.lib";
ring r = 0,(x,y),ds;
ideal f = x,y2,y7+x2y;
AeNormal(f);
ideal f = x,y2,y5+x2y;
AeNormal(f);
ring r = 0,(t,x,y),ds;
ideal f = t,x,y3+t2y,(x+y)^4+t3y;
AeNormal(f);
ideal f = t,x,y4+t3y,(x+y)^3+t3y;
AeNormal(f);
ideal f = t,x,y5+t4y,(x+y)^4+t3y;
ideal f = t,x,y4+t3y,(x+y)^3+t2y;
AeNormal(f);
ideal f = t,x,y4+t3y,(x+y)^3+t2y;
AeNormal(f);
ideal f = t,x,y5+t4y,(x+y)^4+t3y;
AeNormal(f);
ideal f = t,x,y4+t3y,(x+y)^5+t4y;
AeNormal(f);
quit;
ring r = 0,(x,y),ds;
ideal f = x,y2,y3+x2y;
AeNormal(f);
LIB"AeCodPruebas.lib";
AeNormal(f);
LIB"AeCodPruebas.lib";
AeNormal(f);
ideal f = x+x4,y2,y3+x2y;
AeNormal(f);
AeNormal(f,maxideal(4));
ideal f = x+x4,y2,y3+x2y;
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
f;
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
f;
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(4));
AeNormal(f,maxideal(6));
AeNormal(f,maxideal(10));
AeNormal(f,maxideal(20));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
dimX
;
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
AeNormal(f,maxideal(10));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(10));
AeNormal(f,maxideal(20));
LIB"AeCodPruebas.lib";
AeNormal(f,maxideal(20));
f;
ideal g = x,xy+y^6+y^9;
AeNormal(g,maxideal(20));
AeNormal(g,maxideal(10));
AeNormal(g,maxideal(12));
AeNormal(f,maxideal(12));
AeNormal(f);
AeNormal(g);
AeNormal(g,maxideal(12));
AeNormal(g,maxideal(20));
AeNormal(g);
AeNormal(g,maxideal(50));
ring r = 0,(x,y),ds;
ring R = 0,(X,Y),ds;
setring r;
map Rr = R,x2,y3;
ideal J = maxideal(20);
setring R;
preimage(r,Rr,J);
setring r;
ideal J = maxideal(50);
setring R;
ideal J = maxideal(50);
preimage(r,Rr,J);
setring r;
ideal J = maxideal(100);
setring R;
preimage(r,Rr,J);
setring r;
map f = R,x2+y3,y5+x7;
J = maxideal(20);
setring R;
preimage(r,f,J);

View File

@ -123,12 +123,15 @@ proc AeNormal(ideal f, list #)
int n = nvars(basering); int n = nvars(basering);
int p = ncols(f); int p = ncols(f);
int s = size(#); int s = size(#);
/*
if (s > 0) if (s > 0)
{ {
int k = TargetIdeal(f,std(#[1])); 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]));
@ -141,11 +144,12 @@ 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)");
if (s > 0) if (s > 0)
{ {
execute("def # = imap("+RName+",#)"); execute("def # = imap("+RName+",#)");
} }
module wf = freemodule(p); module wf = freemodule(p);
int m = ncols(Gens); int m = ncols(Gens);
@ -161,10 +165,12 @@ proc AeNormal(ideal f, list #)
} }
} }
/*
if (s>0) if (s>0)
{ {
wf = wf + freemodule(p)*(f^k); wf = wf + freemodule(p)*(f^k);
} }
*/
/* /*
if (size(#)>0) if (size(#)>0)
@ -247,9 +253,11 @@ proc TargetIdeal(ideal f, ideal J)
int done = 0; int done = 0;
int k = 1; int k = 1;
ideal auxf = 1; ideal auxf = 1;
J = std(J);
while (done == 0) while (done == 0)
{ {
auxf = auxf*f; auxf = auxf*f;
@ -287,14 +295,19 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
int i; int i;
int j; int j;
int s = size(#);
int k = 0;
if (s > 0)
{
k = TargetIdeal(mappingf, #[1]);
}
int m = ncols(Gens); int m = ncols(Gens);
int ny = ncols(GOY); int ny = ncols(GOY);
int nx = ncols(GOX); int nx = ncols(GOX);
int a = nrows(GOY); int a = nrows(GOY);
module M = 0; // This will be module with the same generators but over O_n module M = 0; // This will be module with the same generators but over O_n
matrix col[a][1] = 0; // Auxiliar variable to store the particular vector to be transformed at each step matrix col[a][1] = 0; // Auxiliar variable to store the particular vector to be transformed at each step
@ -327,6 +340,11 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
} }
} }
if (s > 0)
{
M = M + (X(1..dimX)^k)*freemodule(m*a);
}
return(M); return(M);
} }
@ -403,9 +421,12 @@ proc MalgrRing(ideal J, int n, ideal f)
ideal mappingf = f; ideal mappingf = f;
export(mappingf); export(mappingf);
int dimX = n;
export(dimX);
int dimX = n;
option(noredefine);
export(dimX);
option(redefine);
return(R2); return(R2);
} }

View File

@ -65,4 +65,6 @@ If $f(x)=x + x^3$, there is no solution for (3) with polynomial unit.
- In all rings generated: change ordering to (dp/ds,c/C) - In all rings generated: change ordering to (dp/ds,c/C)
- Change the use of the maximal ideal so that it works modulo a power in the target already. - Change the use of the maximal ideal so that it works modulo a power in the target already.
- Do a baby example of why the implementation of the modulo power in the target is not working (try crosscap or Hiroshi example).