From dd2cbef15e493a101b1d10367cc9449655e826ae Mon Sep 17 00:00:00 2001 From: Nelynx Date: Fri, 28 Feb 2025 16:35:12 +0100 Subject: [PATCH] changes to work modulo an ideal --- .singularhistory | 347 ++++++++++++++++++++++++----------------------- AeCodPruebas.lib | 33 ++++- checklist.md | 4 +- 3 files changed, 206 insertions(+), 178 deletions(-) diff --git a/.singularhistory b/.singularhistory index f567832..2cfa7f9 100644 --- a/.singularhistory +++ b/.singularhistory @@ -45,184 +45,189 @@ LIB"AeCodPruebas.lib"; ring r = 0,(x,y),ds; ideal f = x,y2,y3+x2y; TargetIdeal(f, std(ideal(x,y))); +ring r = 0,(x,y),ds; +ideal f = x,y2,y3+x2y; LIB"AeCodPruebas.lib"; -ring r = 0,(x),ds; -ideal f = x2+x4,x3; +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))); +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,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(10)); -AeNormal(f,maxideal(6)); -def Q = MalgrRing(ideal(0),1,f); -GF; +AeNormal(f); +LIB"AeCodPruebas.lib"; +AeNormal(f); +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; GF; Gens; setring r; -TargetIdeal(f,std(maxideal(10))); -int k = 5; -matrix jf[2][1] = jacob(f); -print(jf); +ideal w = x+x4,y2; +kbase(std(w)); setring Q; -def f = imap(r,f); -def jf = imap(r,jf); -ideal J = x10; -setring r; -def Q = MalgrRing(ideal(0),1,f); -setring Q; -def f = imap(r,f); -setring r; -quit; -quit; -quit; -c -? -n; -n -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); +GF; +basering; +GF; +reduce(x2, GF); +MalgrFormPoly(x2); +MalgrFormPoly(x2, maxideal(4)); +MalgrFormPoly(x2, maxideal(2)); +MalgrFormPoly(x2, maxideal(5)); +MalgrFormPoly(x2, maxideal(6)); +GF; +reduce(x2,GF); +x2; +X(3) - f[3]; +X(3) - mappingf[3]; +MalgrFormPoly(x2, maxideal(6)); LIB"AeCodPruebas.lib"; -def Q = MalgrRing(ideal(0),1,f); -ring r = 0,(x,y),(dp,c); -ring r = 0,(x,y),dp; -ring R0 = changeord(list(list("(dp,c)",nvars(basering)))); -ring R0 = changeord(list(list("dp,c",nvars(basering)))); -ring R0 = changeord(list("(dp,c)",nvars(basering))); -n -n -p T -n -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 +MalgrFormPoly(x2, maxideal(6)); +LIB"AeCodPruebas.lib"; +MalgrFormPoly(x2, maxideal(6)); +MalgrFormPoly(x2, ideal(x,y)^4); +LIB"AeCodPruebas.lib"; +MalgrFormPoly(x2, ideal(x,y)^4); +print(_); +MalgrFormPoly(x3, ideal(x,y)^4); +MalgrFormPoly(x3, ideal(x,y)^6); +MalgrFormPoly(x3, ideal(x,y)^7); ; +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); diff --git a/AeCodPruebas.lib b/AeCodPruebas.lib index faf67b8..d5ed0d5 100644 --- a/AeCodPruebas.lib +++ b/AeCodPruebas.lib @@ -123,12 +123,15 @@ proc AeNormal(ideal f, list #) int n = nvars(basering); 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])); @@ -141,11 +144,12 @@ proc AeNormal(ideal f, list #) execute("def f = imap("+RName+",f)"); execute("def jf = imap("+RName+",jf)"); + if (s > 0) { execute("def # = imap("+RName+",#)"); } - + module wf = freemodule(p); int m = ncols(Gens); @@ -161,10 +165,12 @@ proc AeNormal(ideal f, list #) } } + /* if (s>0) { wf = wf + freemodule(p)*(f^k); } + */ /* if (size(#)>0) @@ -247,9 +253,11 @@ proc TargetIdeal(ideal f, ideal J) int done = 0; int k = 1; - + ideal auxf = 1; + J = std(J); + while (done == 0) { auxf = auxf*f; @@ -287,14 +295,19 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #) int i; int j; + int s = size(#); + int k = 0; + if (s > 0) + { + k = TargetIdeal(mappingf, #[1]); + } + int m = ncols(Gens); int ny = ncols(GOY); int nx = ncols(GOX); int a = nrows(GOY); - - 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 @@ -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); } @@ -403,9 +421,12 @@ proc MalgrRing(ideal J, int n, ideal f) ideal mappingf = f; export(mappingf); - int dimX = n; - export(dimX); + int dimX = n; + option(noredefine); + export(dimX); + option(redefine); + return(R2); } diff --git a/checklist.md b/checklist.md index 2dc682e..ef69a13 100644 --- a/checklist.md +++ b/checklist.md @@ -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) -- Change the use of the maximal ideal so that it works modulo a power in the target already. \ No newline at end of file +- 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). \ No newline at end of file