Compare commits

...

12 Commits
main ... main

Author SHA1 Message Date
4968507824 add notes on the theory 2025-07-08 09:46:01 +02:00
46145a40ee changes to DP test 2025-07-08 09:44:08 +02:00
6c7682073d add first version of finite determinacy calculations 2025-05-13 16:14:12 +01:00
Nelynx
8d435326a9 remove undesired bound 2025-03-26 20:27:53 +01:00
Nelynx
34d6393207 work modulo maxideal always 2025-03-26 18:53:35 +01:00
Nelynx
af26d3cb59 add correct multiplication by units 2025-03-24 15:31:51 +01:00
Nelynx
06957fc5fe fix the multiplication by unit in the source thing 2025-03-13 14:32:14 +01:00
Nelynx
09ec067dc0 add changes to work in local 2025-03-13 10:35:48 +01:00
Nelynx
363ed7f644 add missing row to table 2025-03-10 09:00:02 +01:00
Nelynx
edec7c9b39 add tex file 2025-03-07 10:01:19 +01:00
Nelynx
04028fb3df add Matthias notes 2025-03-07 09:54:38 +01:00
Nelynx
dd2cbef15e changes to work modulo an ideal 2025-02-28 16:35:12 +01:00
17 changed files with 2129 additions and 278 deletions

View File

@ -1,228 +0,0 @@
ring r = 0,(x,y),ds;
ideal f = x,xy+y6+y9;
kbase(std(f));
ring s = 0,(x,y),dp;
ideal f = x,xy+y6+y9
;
kbase(std(f));
ideal f = x,xy+y6+y8+y9;
kbase(std(f));
setring r;
f = imap(s,f);
f;
kbase(std(f));
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)));
LIB"AeCodPruebas.lib";
ring r = 0,(x),ds;
ideal f = x2+x4,x3;
AeNormal(f);
AeNormal(f,maxideal(5));
AeNormal(f,maxideal(4));
AeNormal(f,maxideal(10));
AeNormal(f,maxideal(6));
def Q = MalgrRing(ideal(0),1,f);
GF;
setring Q;
GF;
Gens;
setring r;
TargetIdeal(f,std(maxideal(10)));
int k = 5;
matrix jf[2][1] = jacob(f);
print(jf);
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);
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
;

View File

@ -1,3 +1,6 @@
{
"C_Cpp.errorSquiggles": "disabled"
"C_Cpp.errorSquiggles": "disabled",
"files.associations": {
"*.lib": "cpp"
}
}

View File

@ -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)
@ -180,6 +186,125 @@ proc AeNormal(ideal f, list #)
return(NAef);
}
proc AeDeterminacyTestDP(ideal f)
{
/*
f: Cn -> Cp is a map-germ with p >= n
*/
int i;
int n = nvars(basering);
int p = ncols(f);
matrix jf[p][n] = jacob(f);
module tkef = module(jf) + f*freemodule(p);
tkef = std(tkef);
int tkemax = 0;
module tkefmodk = tkef + maxideal(tkemax + 1)*freemodule(p);
tkefmodk = std(tkefmodk);
module freemax = freemodule(p);
module auxtke = reduce(freemax, tkefmodk);
while (size(auxtke) != 0)
{
tkemax++;
freemax = maxideal(tkemax)*freemodule(p);
tkefmodk = tkef + maxideal(tkemax + 1)*freemodule(p);
auxtke = reduce(freemax, std(tkefmodk));
}
// tkemax; //
def Raux = MalgrRing(ideal(0),n,ideal(f[1..n]));
string RName=nameof(basering);
setring Raux;
execute("def f = imap("+RName+",f)");
execute("def jf = imap("+RName+",jf)");
module wf = freemodule(p);
int m = ncols(Gens);
// Take into account that not all of these powers might be necessary
// deppending on the power of the maximal that is contained.
// print("wf=");wf;//
if (p > n)
{
ideal h = ideal(f[(n+1)..p]);
//print("h=");h;//
for (i=1; i <= m-1; i++)
{
wf = wf + (freemodule(p) * (h)^i);
//print("wf=");wf;//
}
}
int bool_maxi_contained = 0;
int maxi_power = 0;
module mktheta = freemodule(p);
module mk1theta = (mappingf^tkemax)*freemodule(p);
//module TAef = GenerateOYModule(jf, wf, #);
module TAef;
module Tmktheta;
module Tmk1theta;
module auxmod;
module TAefmodmk1;
while (bool_maxi_contained == 0)
{
maxi_power; //
mktheta = freemodule(p)*(maxOX^maxi_power);
mk1theta = freemodule(p)*(maxOX^(maxi_power+tkemax));
Tmktheta = GenerateOYModule(mktheta, 0, maxOX^(maxi_power+tkemax));
//Tmk1theta = GenerateOYModule(mk1theta, 0, maxOX^(maxi_power+tkemax));
TAef = GenerateOYModule(jf, wf, maxOX^(maxi_power+tkemax));
//Tmk1theta;//
//TAefmodmk1 = std(Tmk1theta + TAef);
TAefmodmk1 = std(TAef);
i = 1;
//Tmk1theta;
bool_maxi_contained = 1;
while (bool_maxi_contained == 1 && i <= size(Tmktheta))
{
if (reduce(Tmktheta[i], TAefmodmk1) != 0)
{
bool_maxi_contained = 0;
}
i++;
}
if (bool_maxi_contained == 0)
{
maxi_power = maxi_power + 1;
}
}
/*
int maxi_power = 1;
ideal mpfmax = std(mappingf^maxi_power_target);
while (size(reduce(maxOX^maxi_power, mpfmax))!=0)
{
maxi_power = maxi_power +1;
}
*/
return(maxi_power+tkemax);
}
//////////////////////////////////////////////////////////////////////////////
proc NormalOYModule(matrix GOX, matrix GOY, list #)
@ -203,6 +328,15 @@ proc NormalOYModule(matrix GOX, matrix GOY, list #)
int m = ncols(Gens);
module T = GenerateOYModule(GOX, GOY, #);
//basering;//
/*
for (i=1; i<= ncols(T); i++)
{
print(MalgrFormToOX(VectorToMatrix(T[i], a, m)));
"---";
//print("NOX = "); print(NOX); //
}
*/
int nx = nvars(basering) - p;
@ -210,28 +344,39 @@ proc NormalOYModule(matrix GOX, matrix GOY, list #)
for (i=1; i<= nx; i++)
{
V = V + ideal(var(i));
V = V + ideal(var(p+i));
}
//print(V);//
//T;//
T = T + freemodule(a*m) * V; // This should be done by switching to a new ring with only X(1..p)
//print(T);
T = std(T);
module N = kbase(std(T));
int CodimT = ncols(N);
int CodimT = vdim(T);
//print("vector N[1] ="); VectorToMatrix(N[1],a,m);//
def NOX = MalgrFormToOX(VectorToMatrix(N[1], a, m));
//print("NOX = "); print(NOX); //
for (i=2; i<= CodimT; i++)
if (CodimT >-1)
{
NOX = concat(NOX,MalgrFormToOX(VectorToMatrix(N[i], a, m)));
//print("NOX = "); print(NOX); //
}
module N = kbase(T);
return(NOX);
//print("vector N[1] ="); VectorToMatrix(N[1],a,m);//
def NOX = MalgrFormToOX(VectorToMatrix(N[1], a, m));
//print("NOX = "); print(NOX); //
for (i=2; i<= CodimT; i++)
{
NOX = concat(NOX,MalgrFormToOX(VectorToMatrix(N[i], a, m)));
//print("NOX = "); print(NOX); //
}
return(NOX);
}
else
{
return(-1);
}
}
//////////////////////////////////////////////////////////////////////////////
@ -247,12 +392,14 @@ proc TargetIdeal(ideal f, ideal J)
int done = 0;
int k = 1;
ideal auxf = 1;
J = std(J);
while (done == 0)
{
auxf = auxf*f;
auxf = auxf*f; /// Change to last thing in the loop so that auxf can also be 1 (only if J = 1 but still a case)
if (size(reduce(auxf,J,1)) == 0)
{
done = 1;
@ -287,13 +434,27 @@ 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);
if (size(module(GOY)) != 0)
{
int a = nrows(GOY);
}
else
{
int a = nrows(GOX);
}
module M = 0; // This will be module with the same generators but over O_n
@ -304,10 +465,29 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
// Convert GOY to an O_n - module
int flag_unit = 0;
matrix auxcol;
for (i=1; i<= ny; i++)
{
col = submat(GOY,intvec(1..a),intvec(i)); // Pick the next generator in GOY
M = M + MatrixToVector(MalgrFormVect(col, #)); // Convert to GOX
if (GOY[i]!=0)
{
col = submat(GOY,intvec(1..a),intvec(i)); // Pick the next generator in GOY
if (s>0)
{
M = M + MatrixToVector(MalgrFormVect(col, #[1])); // Convert to GOX
}
else
{
auxcol = MalgrFormVect(col);
M = M + MatrixToVector(auxcol); // Convert to GOX
if (MalgrFormToOX(auxcol) != col and flag_unit == 0)
{
print("Warning: a unit has been used for the MalgrForm of the target module. Computations might not be accurate.");
flag_unit = 1;
}
}
}
}
// Convert GOX to an O_n -module
@ -320,13 +500,30 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
for (i=1; i <= nx; i++)
{
col = submat(GOX,intvec(1..a),intvec(i)); // Pick the next generator in GOX
for (j=1; j<= m; j++)
if (GOX[i]!=0)
{
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col, #)); // Compute each product of col times an element of Gens
col = submat(GOX,intvec(1..a),intvec(i)); // Pick the next generator in GOX
for (j=1; j<= m; j++)
{
if (s>0)
{
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col, #[1])); // Convert to GOX
}
else
{
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col));
}
}
}
}
/*
if (s > 0)
{
M = M + (ideal(X(1..dimX))^k)*freemodule(m*a);
}
//(ideal(X(1..dimX))^k)*freemodule(m*a);;//
*/
return(M);
}
@ -350,18 +547,23 @@ proc MalgrRing(ideal J, int n, ideal f)
ideal Gens = kbase(std(w+J)); // This is the set of generators of O_X as O_n-module.
int nGens = ncols(Gens);
ideal maxOX = maxideal(1); // pick maximal ideal from source in case we need to work modulo something
// Create a ring with generators as variables and target variables.
ring R0 = changeord(list(list("dp",nvars(basering)))); // Change ordering of basering to global. In local, computations fail since one of the generators of Gens is always a constant.
ring R0 = changeord(list(list("ds",nvars(basering)))); // Change ordering of basering to global. In local, computations fail since one of the generators of Gens is always a constant.
// ¿To Do: let user choose the local ordering?
/*
string vaG ="G(";
def R1=extendring(nGens,vaG,"dp",1); // Add G variables so that G(i) corresponds to the i-th generator of Gens.
setring R1;
*/
string vaX="X(";
def R2=extendring(p, vaX,"dp",1); // Add X variables so that X(j) corresponds to the j-th component of f.
def R2=extendring(p, vaX,"ds"); // Add X variables so that X(j) corresponds to the j-th component of f.
setring R2;
// Bring necessary information from source ring
@ -369,16 +571,19 @@ proc MalgrRing(ideal J, int n, ideal f)
execute("def Gens=imap("+RName+",Gens)");
execute("def f=imap("+RName+",f)");
execute("def J=imap("+RName+",J)");
execute("def maxOX=imap("+RName+",maxOX)");
// Create auxiliar ideal for Malgrange procedures
ideal G;
ideal W;
/*
for(i = 1; i<=nGens; i++)
{
G = G + ideal(Gens[i]- G(i)); // Make G(i) correspond to Gens[i]
}
*/
for(i = 1; i<= n; i++)
{
@ -400,12 +605,16 @@ proc MalgrRing(ideal J, int n, ideal f)
export(GF);
export(Gens);
export(J);
export(maxOX);
ideal mappingf = f;
export(mappingf);
int dimX = n;
export(dimX);
int dimX = n;
option(noredefine);
export(dimX);
option(redefine);
return(R2);
}
@ -426,14 +635,25 @@ proc MalgrFormPoly(poly h, list #)
*/
int i;
int j;
int s = size(#);
// Prepare the ideal that reduces to the Malgrange Normal Form
ideal K = GF; // Save the GF ideal to a new variable since we are going to possibly modify it.
int maxibound = -1; // Power of max ideal contained in #: it will stay as -1 if # is empty
if (size(#)> 0)
if (s > 0)
{
K = std(#[1]+GF); // Work modulo an ideal, if requested.
K = std(#[1] + GF); // Work modulo an ideal, if requested.
ideal determinacyIdeal = std(#[1]);
maxibound = 1;
while(size(reduce(maxOX^(maxibound),determinacyIdeal)) != 0){
// Compute power of maximal ideal contained in #.
// To Do: Can this be done more efficiently?
maxibound++;
}
}
for (i=dimX+1; i <= size(mappingf); i++)
@ -446,22 +666,52 @@ proc MalgrFormPoly(poly h, list #)
// Compute the Malgrange Normal Form of the requested polynomial
poly hr = reduce(h,K); // Obtain Malgrange form as a sum. This should be a polynomial only in X's and G's,
// and the G's should only appear as linear variables times polys in X.
poly hr;
if (s > 0)
{
option(redSB);
option(redTail);
option(redThrough);
hr = system("reduce_bound", h, K, maxibound);
}
else
{
option(redTail);
option(redThrough);
hr = reduce(h,K); // Obtain Malgrange form as a sum. This should be a polynomial only in X's and
// the elements of Gens in "linear" form
}
poly c;
int nGens = ncols(Gens);
// Convert the Malgrange Normal Form of the polynomial to row matrix form.
/*
Since the G's are only linear in hr, they determine a vector with
coefficients only in the X's (one coefficient for each G(i)).
We only need to extract these coefficients and add them to the corresponding component in v.
Now we get the coefficients corresponding to each element of Gens and put them in vector form
*/
poly prod = 1;
for(i=1; i<=size(maxOX); i++){
prod = prod * maxOX[i];
}
matrix cofh = coef(hr,prod);
matrix v[1][nGens] = 0;
for(i=1; i<=nGens; i++){
for(j=1;j<=ncols(cofh);j++)
{
if(Gens[i] == cofh[1,j]){
v[1,i] = cofh[2,j];
}
}
}
/* ----------OLD--------------
for (i=1; i<= nGens-1; i++)
{
c = hr - subst(hr,G(i),0); // This is the coefficient of G(i) in hr
@ -473,6 +723,19 @@ proc MalgrFormPoly(poly h, list #)
// hence it does not appear in the Malgrange Normal Form.
// Since its coefficient is the remaining part of the previous loop, we add it manually.
*/
matrix check = MalgrFormToOX(v);
if (s == 0)
{
if (check[1,1] - h != 0)
{
print("Some conversions use a unit. Answer might not be accurate");
}
}
return(v);
}
@ -489,10 +752,128 @@ proc MalgrFormVect(matrix v, list #)
# is an optional ideal so that computations are made modulo this ideal.
*/
int i;
int j;
int k;
int s = size(#);
int nGens = size(Gens);
int a = nrows(v);
int i;
ideal K = GF; // Save the GF ideal to a new variable since we are going to possibly modify it.
int maxibound = -1; // Power of max ideal contained in #: it will stay as -1 if # is empty
if (s > 0)
{
// Work modulo an ideal, if requested.
ideal determinacyIdeal = std(#[1]);
K = std(determinacyIdeal + GF);
maxibound = 1;
while(size(reduce(maxOX^(maxibound),determinacyIdeal)) != 0){
// Compute power of maximal ideal contained in #.
// To Do: Can this be done more efficiently?
maxibound++;
}
}
else
{
ideal determinacyIdeal = std(0);
}
for (i=dimX+1; i <= size(mappingf); i++)
{
K = K + ideal(X(i) - reduce(mappingf[i], K)); // Assign the components of f which do not give the finite mapping to variables in the target, if p > n.
}
/* Caution: We do not compute again a standard basis of K since this would be equivalent to computing
the polynomial of the image when p > n and this is too computationally expensive. */
module rv = v;
module wv;
module W;
int D = 0;
option(redSB);
option(redTail);
option(redThrough);
//"v=";v; //
//"determinacyIdeal=";determinacyIdeal; //
while (reduce(rv, determinacyIdeal)[1] != 0)
{
//"rv=";rv;//
D++;
wv = system("reduce_bound", module(rv), K*freemodule(a), D);
W = wv[1]+W[1];
/*
"D=";D;//
"wv=";wv;//
"W=";W;//
*/
for (i=1; i<= dimX; i++)
{
wv = module(subst(matrix(wv), X(i), mappingf[i]));
}
//"wv en OX=";wv;//
rv = rv[1] - wv[1];
//"reduccion = ";reduce(rv, determinacyIdeal)[1]; //
}
/*
if (s > 0)
{
option(redSB);
option(redTail);
option(redThrough);
rv = system("reduce_bound", module(v), K*freemodule(a), maxibound);
}
else
{
option(redTail);
option(redThrough);
rv = reduce(v,K); // Obtain Malgrange form as a sum. This should be a polynomial only in X's and
// the elements of Gens in "linear" form
}
*/
poly prod = 1;
for(i=1; i<=size(maxOX); i++){
prod = prod * maxOX[i];
}
matrix malgrv[a][nGens];
matrix cofv;
//rv;//
for(i=1; i<= a; i++)
{
cofv = coef(W[1][i],prod);
//cofv;//
for(j=1; j<=nGens; j++)
{
for(k=1;k<=ncols(cofv);k++)
{
if(Gens[j] == cofv[1,k]){
malgrv[i,j] = cofv[2,k];
}
}
}
}
return(malgrv);
/* -------- OLD ---------
def m = MalgrFormPoly(v[1,1], #); // We need to manually compute the first component outside of the loop
// so that the first row of the matrix already has the correct information
@ -504,8 +885,12 @@ proc MalgrFormVect(matrix v, list #)
}
return(m);
*/
}
//////////////////////////////////////////////////////////////////////////////
proc MatrixToVector(matrix M)

47
TeoriaAeCod/AeCod.aux Executable file
View File

@ -0,0 +1,47 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Theoretical framework}}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.1}{The $\mathcal A_e$-tangent over the target}}{1}{subsection.1.1}\protected@file@percent }
\newlabel{propGeneratorsOfTA}{{1.2}{2}{}{thm.1.2}{}}
\newlabel{remAlpha}{{1.3}{2}{}{thm.1.3}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.2}{The $\mathcal A_e$-codimension}}{2}{subsection.1.2}\protected@file@percent }
\newlabel{remLessCalculations}{{1.4}{2}{}{thm.1.4}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.3}{Computing $\mathcal A_e$-codimension by approximations}}{2}{subsection.1.3}\protected@file@percent }
\newlabel{defFiltration}{{1.5}{3}{}{thm.1.5}{}}
\newlabel{remFiltrationConditions}{{1.6}{3}{}{thm.1.6}{}}
\newlabel{secComputationalMethod}{{1.4}{4}{The computation method}{subsection.1.4}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.4}{The computation method}}{4}{subsection.1.4}\protected@file@percent }
\newlabel{remDr}{{1.10}{4}{}{thm.1.10}{}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{2}{The algorithm}}{4}{section.2}\protected@file@percent }
\newlabel{ItemLoop}{{2}{5}{The algorithm}{Item.13}{}}
\newlabel{refItemElseFor}{{3}{5}{The algorithm}{Item.14}{}}
\newlabel{refItemFor}{{3a}{5}{The algorithm}{Item.15}{}}
\newlabel{remEfficiency}{{2.1}{6}{}{thm.2.1}{}}
\newlabel{remEfficientQuotients}{{2.2}{6}{}{thm.2.2}{}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{3}{Filtration choices and their associated approximations}}{6}{section.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{3.1}{The target-degree filtration}}{7}{subsection.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{3.2}{The source-degree filtration}}{7}{subsection.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\tocsection {}{4}{Procedures}}{7}{section.4}\protected@file@percent }
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{19.35791pt}
\newlabel{tocindent2}{31.97072pt}
\newlabel{tocindent3}{0pt}
\@writefile{toc}{\contentsline {section}{\tocsection {}{5}{To do list}}{8}{section.5}\protected@file@percent }
\gdef \@abspage@last{8}

520
TeoriaAeCod/AeCod.log Executable file
View File

@ -0,0 +1,520 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021) (preloaded format=pdflatex 2021.12.22) 7 JUL 2025 17:04
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**AeCod.tex
(./AeCod.tex
LaTeX2e <2020-10-01> patch level 4
L3 programming layer <2021-02-18>
(/usr/local/texlive/2021/texmf-dist/tex/latex/amscls/amsart.cls
Document Class: amsart 2020/05/29 v2.20.6
\linespacing=\dimen138
\normalparindent=\dimen139
\normaltopskip=\skip47
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2020/09/23 v2.17i AMS math features
\@mathmargin=\skip48
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01 AMS text
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks15
\ex@=\dimen140
))
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen141
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2016/03/08 v2.02 operator names
)
\inf@bad=\count179
LaTeX Info: Redefining \frac on input line 234.
\uproot@=\count180
\leftroot@=\count181
LaTeX Info: Redefining \overline on input line 399.
\classnum@=\count182
\DOTSCASE@=\count183
LaTeX Info: Redefining \ldots on input line 496.
LaTeX Info: Redefining \dots on input line 499.
LaTeX Info: Redefining \cdots on input line 620.
\Mathstrutbox@=\box47
\strutbox@=\box48
\big@size=\dimen142
LaTeX Font Info: Redeclaring font encoding OML on input line 743.
LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
\macc@depth=\count184
\c@MaxMatrixCols=\count185
\dotsspace@=\muskip16
\c@parentequation=\count186
\dspbrk@lvl=\count187
\tag@help=\toks16
\row@=\count188
\column@=\count189
\maxfields@=\count190
\andhelp@=\toks17
\eqnshift@=\dimen143
\alignsep@=\dimen144
\tagshift@=\dimen145
\tagwidth@=\dimen146
\totwidth@=\dimen147
\lineht@=\dimen148
\@envbody=\toks18
\multlinegap=\skip49
\multlinetaggap=\skip50
\mathdisplay@stack=\toks19
LaTeX Info: Redefining \[ on input line 2923.
LaTeX Info: Redefining \] on input line 2924.
)
LaTeX Font Info: Trying to load font information for U+msa on input line 397
.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
)
\copyins=\insert199
\abstractbox=\box49
\listisep=\skip51
\c@part=\count191
\c@section=\count192
\c@subsection=\count193
\c@subsubsection=\count194
\c@paragraph=\count195
\c@subparagraph=\count196
\c@figure=\count197
\c@table=\count198
\abovecaptionskip=\skip52
\belowcaptionskip=\skip53
\captionindent=\dimen149
\thm@style=\toks20
\thm@bodyfont=\toks21
\thm@headfont=\toks22
\thm@notefont=\toks23
\thm@headpunct=\toks24
\thm@preskip=\skip54
\thm@postskip=\skip55
\thm@headsep=\skip56
\dth@everypar=\toks25
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/cite/cite.sty
LaTeX Info: Redefining \cite on input line 302.
LaTeX Info: Redefining \nocite on input line 332.
Package: cite 2015/02/27 v 5.5
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2020/09/09 v1.2b Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks26
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2020/08/30 v1.4c Standard LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 105.
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen150
\Gin@req@width=\dimen151
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/eurosym/eurosym.sty
Package: eurosym 1998/08/06 v1.1 European currency symbol ``Euro''
\@eurobox=\box50
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2020/08/01 v1.3d Input encoding file
\inpenc@prehook=\toks27
\inpenc@posthook=\toks28
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2020/08/10 v2.0s Standard LaTeX package
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/jknapltx/mathrsfs.sty
Package: mathrsfs 1996/01/01 Math RSFS package v1.0 (jk)
\symrsfs=\mathgroup6
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/fundus-calligra/calligra.sty
Package: calligra 2012/04/10 v1.9 LaTeX package calligra
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amscd.sty
Package: amscd 2017/04/14 v2.1 AMS Commutative Diagrams
\athelp@=\toks29
\minaw@=\dimen152
\bigaw@=\dimen153
\minCDarrowwidth=\dimen154
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/latexsym.sty
Package: latexsym 1998/08/17 v2.2e Standard LaTeX package (lasy symbols)
\symlasy=\mathgroup7
LaTeX Font Info: Overwriting symbol font `lasy' in version `bold'
(Font) U/lasy/m/n --> U/lasy/b/n on input line 52.
)
\c@thm=\count266
\c@open=\count267
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2021-02-27 v7.00k Hypertext links for LaTeX
(/usr/local/texlive/2021/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/iftex/iftex.sty
Package: iftex 2020/03/06 v1.0d TeX engine tests
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/infwarerr/infwarerr.sty
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
)
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode found.
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/pdfescape/pdfescape.sty
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/hycolor/hycolor.sty
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/auxhook/auxhook.sty
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/kvoptions/kvoptions.sty
Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO)
)
\@linkdim=\dimen155
\Hy@linkcounter=\count268
\Hy@pagecounter=\count269
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2021-02-27 v7.00k Hyperref: PDFDocEncoding definition (HO)
Now handling font encoding PD1 ...
... no UTF-8 mapping file for font encoding PD1
)
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
File: hyperref-langpatches.def 2021-02-27 v7.00k Hyperref: patches for babel la
nguages
) (/usr/local/texlive/2021/texmf-dist/tex/generic/intcalc/intcalc.sty
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/etexcmds/etexcmds.sty
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
)
\Hy@SavedSpaceFactor=\count270
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/puenc.def
File: puenc.def 2021-02-27 v7.00k Hyperref: PDF Unicode definition (HO)
Now handling font encoding PU ...
... no UTF-8 mapping file for font encoding PU
)
Package hyperref Info: Hyper figures OFF on input line 4192.
Package hyperref Info: Link nesting OFF on input line 4197.
Package hyperref Info: Hyper index ON on input line 4200.
Package hyperref Info: Plain pages OFF on input line 4207.
Package hyperref Info: Backreferencing OFF on input line 4212.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4445.
\c@Hy@tempcnt=\count271
(/usr/local/texlive/2021/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip17
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 4804.
\XeTeXLinkMargin=\dimen156
(/usr/local/texlive/2021/texmf-dist/tex/generic/bitset/bitset.sty
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
(/usr/local/texlive/2021/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
)
))
\Fld@menulength=\count272
\Field@Width=\dimen157
\Fld@charsize=\dimen158
Package hyperref Info: Hyper figures OFF on input line 6075.
Package hyperref Info: Link nesting OFF on input line 6080.
Package hyperref Info: Hyper index ON on input line 6083.
Package hyperref Info: backreferencing OFF on input line 6090.
Package hyperref Info: Link coloring OFF on input line 6095.
Package hyperref Info: Link coloring with OCG OFF on input line 6100.
Package hyperref Info: PDF/A mode OFF on input line 6105.
LaTeX Info: Redefining \ref on input line 6145.
LaTeX Info: Redefining \pageref on input line 6149.
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/atbegshi-ltx.sty
Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi packa
ge
with kernel methods
)
\Hy@abspage=\count273
\c@Item=\count274
\c@Hfootnote=\count275
)
Package hyperref Info: Driver (autodetected): hpdftex.
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2021-02-27 v7.00k Hyperref driver for pdfTeX
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/atveryend-ltx.sty
Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery packag
e
with kernel methods
)
\Fld@listcount=\count276
\c@bookmark@seq@number=\count277
(/usr/local/texlive/2021/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
(/usr/local/texlive/2021/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
86.
)
\Hy@SectionHShift=\skip57
)
Package hyperref Info: Option `colorlinks' set `true' on input line 50.
Package hyperref Warning: Option `pdftex' has already been used,
(hyperref) setting the option has no effect on input line 50.
(/usr/local/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2021-03-18 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count278
\l__pdf_internal_box=\box51
)
(./AeCod.aux)
\openout1 = `AeCod.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 180.
LaTeX Font Info: ... okay on input line 180.
LaTeX Font Info: Trying to load font information for U+msa on input line 180
.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Trying to load font information for U+msb on input line 180
.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
LaTeX Font Info: Trying to load font information for U+rsfs on input line 18
0.
(/usr/local/texlive/2021/texmf-dist/tex/latex/jknapltx/ursfs.fd
File: ursfs.fd 1998/03/24 rsfs font definition file (jk)
)
LaTeX Font Info: Trying to load font information for U+lasy on input line 18
0.
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/ulasy.fd
File: ulasy.fd 1998/08/17 v2.2e LaTeX symbol font definitions
)
(/usr/local/texlive/2021/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count279
\scratchdimen=\dimen159
\scratchbox=\box52
\nofMPsegments=\count280
\nofMParguments=\count281
\everyMPshowfont=\toks30
\MPscratchCnt=\count282
\MPscratchDim=\dimen160
\MPnumerator=\count283
\makeMPintoPDFobject=\count284
\everyMPtoPDFconversion=\toks31
) (/usr/local/texlive/2021/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
85.
(/usr/local/texlive/2021/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/color.sty
Package: color 2020/02/24 v1.2b Standard LaTeX Color (DPC)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics-cfg/color.cfg
File: color.cfg 2016/01/02 v1.6 sample color configuration
)
Package color Info: Driver file: pdftex.def on input line 147.
)
Package hyperref Info: Link coloring ON on input line 180.
(/usr/local/texlive/2021/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section
(/usr/local/texlive/2021/texmf-dist/tex/latex/refcount/refcount.sty
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
)
(/usr/local/texlive/2021/texmf-dist/tex/generic/gettitlestring/gettitlestring.s
ty
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count285
)
LaTeX Info: Redefining \ref on input line 180.
LaTeX Info: Redefining \pageref on input line 180.
LaTeX Info: Redefining \nameref on input line 180.
(./AeCod.out) (./AeCod.out)
\@outlinefile=\write3
\openout3 = `AeCod.out'.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 211.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `subscript' on input line 211.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 211.
[1{/usr/local/texlive/2021/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 241.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `subscript' on input line 241.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 241.
Overfull \hbox (11.43091pt too wide) in paragraph at lines 250--251
[]$\OML/cmm/m/it/10.95 []\OT1/cmr/m/n/10.95 (\OML/cmm/m/it/10.95 u[]\OT1/cmr/m
/n/10.95 ) = (0\OML/cmm/m/it/10.95 ; [] ; '[]\OT1/cmr/m/n/10.95 (\OML/cmm/m/it/
10.95 m[]\OT1/cmr/m/n/10.95 )\OML/cmm/m/it/10.95 ; [] ; \OT1/cmr/m/n/10.95 0)$\
T1/cmr/m/n/10.95 , with $\OT1/cmr/m/n/10.95 1 \OMS/cmsy/m/n/10.95 ^^T \OML/cmm/
m/it/10.95 j \OMS/cmsy/m/n/10.95 ^^T \OML/cmm/m/it/10.95 p$\T1/cmr/m/n/10.95 ,
$\OML/cmm/m/it/10.95 \OT1/cmr/m/n/10.95 = (\OML/cmm/m/it/10.95 []; [] ; []\
OT1/cmr/m/n/10.95 )$
[]
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 257.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `subscript' on input line 257.
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 257.
[2]
LaTeX Font Info: Trying to load font information for U+euf on input line 276
.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsfonts/ueuf.fd
File: ueuf.fd 2013/01/14 v3.01 Euler Fraktur
)
Overfull \hbox (16.69417pt too wide) in paragraph at lines 276--277
[]\T1/cmr/m/n/10.95 The ori-gin sup-ported con-di-tion is equiv-a-lent to the f
act that $[]\OT1/cmr/m/n/10.95 (\OML/cmm/m/it/10.95 M=M[]\OT1/cmr/m/n/10.95 ) \
OMS/cmsy/m/n/10.95 ^^R
[]
[3] [4] [5] [6]
LaTeX Font Warning: Command \sc invalid in math mode on input line 474.
[7] [8] (./AeCod.aux)
Package rerunfilecheck Info: File `AeCod.out' has not changed.
(rerunfilecheck) Checksum: 812F8A0371BDAC53D3593A8CB3F319A6;2266.
)
Here is how much of TeX's memory you used:
10058 strings out of 478994
140852 string characters out of 5858183
445215 words of memory out of 5000000
27161 multiletter control sequences out of 15000+600000
417777 words of font info for 75 fonts, out of 8000000 for 9000
1302 hyphenation exceptions out of 8191
82i,11n,88p,651b,582s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/local/texlive/2021/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}
</usr/local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb><
/usr/local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></
usr/local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb></us
r/local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/
local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/lo
cal/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/local
/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/te
xlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/tex
live/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb></usr/local/texli
ve/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/local/texlive
/2021/texmf-dist/fonts/type1/public/amsfonts/euler/eufm10.pfb></usr/local/texli
ve/2021/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb></usr/local/t
exlive/2021/texmf-dist/fonts/type1/public/cm-super/sfbx1095.pfb></usr/local/tex
live/2021/texmf-dist/fonts/type1/public/cm-super/sfcc1095.pfb></usr/local/texli
ve/2021/texmf-dist/fonts/type1/public/cm-super/sfrm0800.pfb></usr/local/texlive
/2021/texmf-dist/fonts/type1/public/cm-super/sfrm1095.pfb></usr/local/texlive/2
021/texmf-dist/fonts/type1/public/cm-super/sfti1095.pfb>
Output written on AeCod.pdf (8 pages, 247038 bytes).
PDF statistics:
218 PDF objects out of 1000 (max. 8388607)
189 compressed objects within 2 object streams
58 named destinations out of 1000 (max. 500000)
89 words of extra memory for PDF output out of 10000 (max. 10000000)

11
TeoriaAeCod/AeCod.out Executable file
View File

@ -0,0 +1,11 @@
\BOOKMARK [1][-]{section.1}{\376\377\0001\000.\000\040\000T\000h\000e\000o\000r\000e\000t\000i\000c\000a\000l\000\040\000f\000r\000a\000m\000e\000w\000o\000r\000k}{}% 1
\BOOKMARK [2][-]{subsection.1.1}{\376\377\0001\000.\0001\000.\000\040\000T\000h\000e\000\040\000A\000e\000-\000t\000a\000n\000g\000e\000n\000t\000\040\000o\000v\000e\000r\000\040\000t\000h\000e\000\040\000t\000a\000r\000g\000e\000t}{section.1}% 2
\BOOKMARK [2][-]{subsection.1.2}{\376\377\0001\000.\0002\000.\000\040\000T\000h\000e\000\040\000A\000e\000-\000c\000o\000d\000i\000m\000e\000n\000s\000i\000o\000n}{section.1}% 3
\BOOKMARK [2][-]{subsection.1.3}{\376\377\0001\000.\0003\000.\000\040\000C\000o\000m\000p\000u\000t\000i\000n\000g\000\040\000A\000e\000-\000c\000o\000d\000i\000m\000e\000n\000s\000i\000o\000n\000\040\000b\000y\000\040\000a\000p\000p\000r\000o\000x\000i\000m\000a\000t\000i\000o\000n\000s}{section.1}% 4
\BOOKMARK [2][-]{subsection.1.4}{\376\377\0001\000.\0004\000.\000\040\000T\000h\000e\000\040\000c\000o\000m\000p\000u\000t\000a\000t\000i\000o\000n\000\040\000m\000e\000t\000h\000o\000d}{section.1}% 5
\BOOKMARK [1][-]{section.2}{\376\377\0002\000.\000\040\000T\000h\000e\000\040\000a\000l\000g\000o\000r\000i\000t\000h\000m}{}% 6
\BOOKMARK [1][-]{section.3}{\376\377\0003\000.\000\040\000F\000i\000l\000t\000r\000a\000t\000i\000o\000n\000\040\000c\000h\000o\000i\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000i\000r\000\040\000a\000s\000s\000o\000c\000i\000a\000t\000e\000d\000\040\000a\000p\000p\000r\000o\000x\000i\000m\000a\000t\000i\000o\000n\000s}{}% 7
\BOOKMARK [2][-]{subsection.3.1}{\376\377\0003\000.\0001\000.\000\040\000T\000h\000e\000\040\000t\000a\000r\000g\000e\000t\000-\000d\000e\000g\000r\000e\000e\000\040\000f\000i\000l\000t\000r\000a\000t\000i\000o\000n}{section.3}% 8
\BOOKMARK [2][-]{subsection.3.2}{\376\377\0003\000.\0002\000.\000\040\000T\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000-\000d\000e\000g\000r\000e\000e\000\040\000f\000i\000l\000t\000r\000a\000t\000i\000o\000n}{section.3}% 9
\BOOKMARK [1][-]{section.4}{\376\377\0004\000.\000\040\000P\000r\000o\000c\000e\000d\000u\000r\000e\000s}{}% 10
\BOOKMARK [1][-]{section.5}{\376\377\0005\000.\000\040\000T\000o\000\040\000d\000o\000\040\000l\000i\000s\000t}{}% 11

BIN
TeoriaAeCod/AeCod.pdf Executable file

Binary file not shown.

BIN
TeoriaAeCod/AeCod.synctex.gz Executable file

Binary file not shown.

567
TeoriaAeCod/AeCod.tex Executable file
View File

@ -0,0 +1,567 @@
\documentclass[a4paper,11pt]{amsart} %%% Hola 07 enero 2013
%%%%%%%%%%%%%%%%%% MISCELLANEOUS
\usepackage{cite}
\usepackage{graphicx}
\usepackage{eurosym}
\usepackage[utf8]{inputenc}
%\usepackage[ansinew]{inputenc}
%\usepackage[applemac]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[spanish]{babel}
\usepackage{amssymb}
\usepackage{mathrsfs}
%%%
\usepackage{amsthm,calligra,mathrsfs}
\usepackage{amsfonts,amscd,amsmath}
\usepackage{amssymb,latexsym}
%%%%
%%%%%%%%%%%%%%%%%% THEOREM STYLES AND NUMERATION
\theoremstyle{plain}
\newtheorem{thm}{Theorem}[section]
\newtheorem{cor}[thm]{Corollary}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{definition}[thm]{Definition}
\newtheorem{defprop}[thm]{Proposition-Definition}
\newtheorem{rem}[thm]{Remark}
\newtheorem{ex}[thm]{Example}
\newtheorem{open}{Open Problem}
%%%%%%%%%%%%%%%%%% HYPERREF
\usepackage{hyperref}
\hypersetup{colorlinks,%
citecolor=black,%
filecolor=black,%
linkcolor=black,%
urlcolor=black,%
pdftex}
%%%%%%%%%%%%%%%%%% SHORTCUTS
\newcommand{\pd}[2]{\frac{\partial#1}{\partial#2}}
\newcommand{\correct}[1]{{\color{red}\LARGE{#1}}}
\def\ad{\operatorname{ad}}
\def\Ann{\operatorname{Ann}}
\def\Ass{\operatorname{Ass}}
\def\At{\operatorname{\hbox{$A_t$}}}
\def\cl{\operatorname{cl}}
\def\charac{\operatorname{char}}
\DeclareMathOperator{\cHom}{\mathscr{H}\text{\kern -3pt {\calligra\large om}}\,}
\def\codim{\operatorname{codim}}
\def\codimc{\operatorname{codim_\C}}
\def\coheight{\operatorname{coht}}
\def\Coker{\operatorname{Coker}}
\def\corank{\operatorname{corank}}
\def\ct{\operatorname{\hbox{$c_t$}}}
\def\Cyl{\operatorname{Cyl}}
\def\depth{\operatorname{depth}}
\def\dim{\operatorname{dim}}
\def\dimc{\operatorname{dim_\C}}
\def\edim{\operatorname{edim}}
\def\Ext{\operatorname{Ext}}
\def\Hess{\operatorname{Hess}}
\def\Hom{\operatorname{Hom}}
\def\height{\operatorname{ht}}
\def\id{\operatorname{id}}
\def\im{\operatorname{m}}
\def\ind{\operatorname{ind}}
\def\Ker{\operatorname{Ker}}
\def\lcm{\operatorname{lcm}}
\def\Mc{\operatorname{Mc}}
\def\nil{\operatorname{nil}}
\def\nt{\operatorname{\hbox{$n_t$}}}
\def\ot{\operatorname{\hbox{$o_t$}}}
\def\rad{\operatorname{rad}}
\def\rank{\operatorname{rank}}
\def\sign{\operatorname{sign}}
\def\Sing{\operatorname{Sing}}
\def\Span{\operatorname{Span}}
\def\Spec{\operatorname{Spec}}
\def\Specan{\operatorname{Specan}}
\def\supp{\operatorname{supp}}
\def\Tors{\operatorname{Tors}}
\def\trdeg{\operatorname{trdeg}}
\def\C{\mathbb C}
\def\F{\mathbb F}
\def\K{\mathbb K}
\def\Q{\mathbb Q}
\def\Z{\mathbb Z}
\def\N{\mathbb N}
\def\P{\mathbb P}
\def\R{\mathbb R}
%\def\S{\mathbb S}
\def\sA{\mathscr A}
\def\sB{\mathscr B}
\def\sC{\mathscr C}
\def\sD{\mathscr D}
\def\sE{\mathscr E}
\def\sF{\mathscr F}
\def\sG{\mathscr G}
\def\sH{\mathscr H}
\def\sI{\mathscr I}
\def\sJ{\mathscr J}
\def\sK{\mathscr K}
\def\sL{\mathscr L}
\def\sM{\mathscr M}
\def\sN{\mathscr N}
\def\sO{\mathscr O}
\def\sP{\mathscr P}
\def\sQ{\mathscr Q}
\def\sR{\mathscr R}
\def\sS{\mathscr S}
\def\sT{\mathscr T}
\def\sU{\mathscr U}
\def\sV{\mathscr V}
\def\sW{\mathscr W}
\def\sX{\mathscr X}
\def\sY{\mathscr Y}
\def\sZ{\mathscr Z}
\def\cA{\mathcal A}
\def\cB{\mathcal B}
\def\cC{\mathcal C}
\def\cD{\mathcal D}
\def\cE{\mathcal E}
\def\cF{\mathcal F}
\def\cG{\mathcal G}
\def\cH{\mathcal H}
\def\cI{\mathcal I}
\def\cJ{\mathcal J}
\def\cK{\mathcal K}
\def\cL{\mathcal L}
\def\cM{\mathcal M}
\def\cN{\mathcal N}
\def\cO{\mathcal O}
\def\cP{\mathcal P}
\def\cQ{\mathcal Q}
\def\cR{\mathcal R}
\def\cS{\mathcal S}
\def\cT{\mathcal T}
\def\cU{\mathcal U}
\def\cV{\mathcal V}
\def\cW{\mathcal W}
\def\cX{\mathcal X}
\def\cY{\mathcal Y}
\def\cZ{\mathcal Z}
\def\ka{\mathfrak a}
\def\kk{\mathfrak k}
\def\km{\mathfrak m}
\def\kp{\mathfrak p}
\def\kq{\mathfrak q}
\def\kX{\mathfrak X}
\def\kF{\mathfrak F}
\def\kSh{\mathfrak {Sh}}
\def\kTop{\mathfrak {Top}}
%%%%%%%%%%%%%%%%%%
\begin{document}
%\author{Author 1, Author 2}
%\title[Short tittle] {tittle}
\title {Computation of $\mathcal A _e$-codimension}
%\address{Adress 1st author}
%\email{1stauthor@email.com}
%\address{Adress 2nd author}
%\email{2ndauthor@email.com}
%\thanks{Supported by }
%\subjclass[2000]{Primary XXXXX; Secondary YYYYY, ZZZZZ}
%\keywords{Some keywords}
%\begin{abstract} The abstract
%\end{abstract}
\maketitle
\section{Theoretical framework}
\subsection{The $\mathcal A_e$-tangent over the target}
Consider a polynomial map-germ $f\colon (\C^n,0)\to(\C^p,0),$ with coordinate functions $f_j(x)$, such that the map given by the first $n$ coordinates functions, \[\overline f\colon (\C^n,0)\to (\C^n,0)\] is finite. To avoid confusion, we write \[X=(\C^n,0)\quad \text{and}\quad \overline f\colon X\to (\C^n,0).\] Let \[g_1,\dots,g_m\in \overline f_*\cO_n\] be a minimal set of generators of $\overline f_*\cO_n$, which is the ring $\cO_X$, regarded as an $\cO_n$-algebra via composition with $\overline f$. From the fact that $X$ is Cohen-Macaulay and $\dim X=n$ it follows that there is an isomorphism
\[\bigoplus^m \cO_n\xrightarrow{\varphi}\overline f_*\cO_X,\]
given by
\[(H^k)_{k=1}^m\mapsto \sum_{k=1}^m H^k\cdot g_k,\] where $H^k\cdot g_k=(H^k\circ \overline f)\,g_k.$
\begin{rem}All our troubles have to do with the behaviour of the inverse of $\varphi$. Assuming $\overline f$ to be a polynomial mapping and the generators $g_k$ to be polynomials, the isomorphism $\varphi$ takes polynomial vectors to polynomial functions. However, the inverse $\varphi^{-1}$ need not take polynomials to polynomial vectors. A simple example is provided by $\overline f(x)=x+x^2$, with a single generator $g_1=1$. The function $h(x)=x$ cannot be expressed as a polynomial in $x+x^2$.
\end{rem}
Similarly, consider the the $\cO_n$-module\[\theta(f)=\bigoplus^p \overline f_*\cO_X\] and the isomorphism
\[\bigoplus^p\bigoplus^m \cO_n \xrightarrow{\psi}\overline f_*\cO_X,\]
given by
\[(H^k_j)_{\substack{1 \leq k \leq m \\ 1 \leq j \leq p}}\mapsto (\sum_{k=1}^m H^k_j\cdot g_k)_{1\leq j\leq p},\]
Finally consider the $\mathcal A_e$-tangent submodule
\[T\mathcal A_e(f)=\left\langle \pd{f}{x_i}\mid 1\leq i\leq n\right\rangle_{\cO_X}+\bigoplus^p f^*\cO_p,\]
where $f^*\cO_p$ stands for the subring of $\cO_n$ consisting of functions of the form $f^*H=H\circ f$, with $H\in \cO_p$ (Caution: composition is taken with $f$ and not with $\overline f$).
\begin{prop}\label{propGeneratorsOfTA}As an $\cO_n$-module, the space $T\mathcal A_e(f)$ is generated by the following collection of vectors \smallskip
\begin{itemize}
\item $\dfrac{\partial f}{\partial x_i}\,g_k$, with $1\leq i\leq n$, $1\leq k\leq m$
\medskip
\item $u_j^\alpha=(0,\dots,\overset{\stackrel{j}{\smile}}m_\alpha,\dots,0)$, with $1\leq j\leq p$, $\alpha=(\alpha_{n+1},\dots,\alpha_p)$ and $0\leq \alpha_\alpha\leq m$, and where
\[m_\alpha=f_{n+1}^{\alpha_{n+1}}\dots f_{p}^{\alpha_{p}}\]
\end{itemize}
\end{prop}
\begin{rem}\label{remAlpha}Question: is it enough to take $\alpha=(\alpha_{n+1},\dots,\alpha_p)$ with $0\leq \vert \alpha\vert \leq m$ instead?
\end{rem}
\subsection{The $\mathcal A_e$-codimension}
By definition, the $\mathcal A_e$-codimension of $f$ is
\[\codim_{\mathcal A_e}(f)=\dim_\C\frac{\theta(f)}{T\mathcal A_e(f)}\]
The difficulty in computing the $\mathcal A_e$-codimension resides in the fact that it is a subset of $\theta(f)$, thus it consists of vectors in $\cO_X$, but it is not a $\cO_X$ module. To solve this, we may move everything isomorphically to $\bigoplus^p\bigoplus^m\cO_n$, applying the isomorphism $\psi$, so that the calculation that we actually perform is
\[\codim_{\mathcal A_e}(f)=\dim_\C\frac{\bigoplus^p\bigoplus^m\cO_n}{\psi^{-1}(T\mathcal A_e(f))}\]
Since $\psi$ is an isomorphism of $\cO_n$-modules, the generators of $\psi^{-1}(T\mathcal A_e(f))$ are
\begin{itemize}
\item $\psi^{-1}\left(\dfrac{\partial f}{\partial x_i}\,g_k\right)$, with $1\leq i\leq n$, $1\leq k\leq m$
\medskip
\item $\psi^{-1}(u_j^\alpha)=(0,\dots,\varphi^{-1}(m_\alpha),\dots,0)$, with $1\leq j\leq p$, $\alpha=(\alpha_{n+1},\dots,\alpha_p)$ and $0\leq \alpha_\alpha\leq m$, and where
\[m_\alpha=f_{n+1}^{\alpha_{n+1}}\dots f_{p}^{\alpha_{p}}\]
\end{itemize}
\begin{rem}\label{remLessCalculations} Observe that, in order to compute $\psi^{-1}(u^\alpha_j)$, it is enough to compute $\varphi^{-1}(f_{\ell})$, for $n+1\leq \ell\leq p$
\end{rem}
\subsection{Computing $\mathcal A_e$-codimension by approximations}
The obstacle to compute $\mathcal A_e$-codimension is that we must compute the generators \[\psi^{-1}(\dfrac{\partial f}{\partial x_i}\,g_k) \quad\text{and}\quad \psi^{-1}(u_j^\alpha),\]which may even fail to have polynomial entries. This may be solved by introducing a decreasing filtration of $\bigoplus^p\bigoplus^m\cO_n$.
\begin{definition}\label{defFiltration}A \emph{complete, separated, origin supported filtration} of an $\cO_n$ module $M$ is a sequence
\[M_0\supseteq M_1\supseteq \dots \supseteq M_r\supset \dots\]
of $\cO_n$-modules, satisfying the following properties.
\begin{enumerate}
\item Completeness: $M_0=M$.
\smallskip
\item Separation: $\bigcap_{r=1}^\infty M_r=0$.
\smallskip
\item Origin supported: $\supp (M_r/M_{r+1})\subseteq \{0\}$, for all $r$.
\end{enumerate}
From now on, we just use the term filtration, and always assume them to be complete, separated and origin supported.
\end{definition}
\begin{rem}\label{remFiltrationConditions}
Completeness is easily achieved, by adding an extra initial term $M_0=M$ to any given filtration.
Separation may be though of as the property that ensures that the approximations that we will introduce later on actually converge to the desired result.
The origin supported condition is equivalent to the fact that $\supp (M/M_{r+1})\subseteq \{0\}$ (By induction, the stalks at $x\neq 0$ of $M_0$ and $M_r$ must agree). For the module $M=\bigoplus^p\bigoplus^m\cO_n$ that we study, this is in turn equivalent to the fact that, for all $r$, there exists $K$, such that $\bigoplus^p\bigoplus^m\mathfrak m_n^K\subseteq M_r$, where $\mathfrak m_n$ stands for the maximal ideal in $\cO_n$).
\end{rem}
\begin{definition}Given a filtration $M_\bullet$ of $\bigoplus^p\bigoplus^m\cO_n$, we define
\[d_r=\dim_\C\frac{\psi^{-1}(T\mathcal A_e(f))+M_r}{\psi^{-1}(T\mathcal A_e(f))+M_{r+1}}<\infty\]
(Observe that the fact that $d_r<\infty$ is a direct consequence of the origin supported condition for the filtration).
\end{definition}
Any such filtration gives a way to express the $\mathcal A_e$-codimension as an infinite sum, or as a ``degree $r$ aproximation'' plus a tail, that is:
\begin{enumerate}
\item$\codim_{\mathcal A_e}(f)=d_0+d_1+\dots$
\smallskip
\item $\codim_{\mathcal A_e}(f)=d_0+d_1+\dots+d_{r}+\dim_\C\frac{\psi^{-1}(T\mathcal A_e(f))+M_{r+1}}{\psi^{-1}(T\mathcal A_e(f))}$
\end{enumerate}
Both expressions are helpful in different situations and allow us to compute $\codim_{\mathcal A_e}(f)$ by a series of aproximations of $\psi^{-1}(T\mathcal A_e(f))$, defined as follows.
\begin{definition} Given a map $f$ as above and a filtration $M_\bullet$ of $\bigoplus^p\bigoplus^m\cO_n$. An \emph{approximating sequence} for $T\cA_e(f)$ (subject to $M_\bullet$) is a sequence $A_\bullet$ of $\cO_n$-submodules
$A_r\leq \bigoplus^p\bigoplus^m\cO_n$, called \emph{approximations}, such that
\[A_r\equiv \psi^{-1}(T\mathcal A_e(f))\mod M_{r+1}\]
or, equivalently,
\[\psi(A_r)\equiv T\mathcal A_e(f)\mod \psi(M_{r+1}).\]
\end{definition}
Then, clearly we have that
\[d_r=\dim_\C\frac{A_r+M_r}{A_r+M_{r+1}}.\]
\subsection{The computation method}\label{secComputationalMethod}
The notions of the previous sections gives two strategies to compute $\codim_{\mathcal A_e}(f)$ by computing the successive approximations $A_r$:
We start computing $A_r$ and $d_r$ for $r=0,1,2,\dots$ and, for each $r$,
\begin{enumerate}
\item If $d_r=0$, then find the biggest number $L$ such that \[d_{r-L}=\dots=d_{r-1}=d_r=0.\] If $L$ satisfies \textcolor{red}{something which can be decided directly from the expression of $f$ (This is Du Plessis' criterion, which we need to adapt slightly to our setup)}, then all $d_j$ are zero for $j\geq r$. In that case,
\[\codim_{\mathcal A_e}(f)=d_0+\dots+d_{r-L-1}.\]
\item If $\psi(A_r)=T\mathcal A_e(f)$, then
\[\codim_{\mathcal A_e}(f)=d_0+d_1+\dots+d_{r}+\dim_\C\frac{A_r+M_{r+1}}{A_r}\]
\end{enumerate}
\begin{rem}
On one hand, strategy (1) finishes if and only if $T\mathcal A_e(f)<\infty$. In particular, it is unable to decide whether of not $f$ is $\mathcal A$-finite. On the other hand, we are only able to use strategy (2) if at some point our approximation is exact. But, if we do, we are able to decide whether or not $f$ is $\mathcal A$-finite in finite time, since this happens if and only if $\dim_\C\frac{A_r+M_{r+1}}{A_r}<\infty$
\end{rem}
\begin{rem}\label{remDr}
Alternatively (but probably not equivalently in terms of computing efficiency) we may define
\[D_r=\dim_\C\frac{\bigoplus^p\bigoplus^m\cO_n}{\psi^{-1}(T\mathcal A_e(f))+M_{r+1}}=\dim_\C\frac{\bigoplus^p\bigoplus^m\cO_n}{A_r+M_{r+1}}.\]
Then we have an increasing sequence $D_0\leq D_1\leq\dots$ such that
\[\codim_{\mathcal A_e}(f)=\lim_{r\to\infty}D_r\]
and obviously $D_r=d_0+\dots d_r$, The two strategies above now look as follows:
We start computing $A_r$ and $D_r$ for $r=0,1,2,\cdots$, and for each $r$
\begin{enumerate}
\item If $D_r=D_{r-1}$, then find the biggest number $L$ such that \[D_{r-L}=\dots=D_{r-1}=D_r=0.\] There is a criterion by Du Plessis, computable in terms of $A_r$, which ensures that, if $L$ satisfies \textcolor{red}{something (We need to make this precise)}, then all remaining $D_j$ for $j\geq r$ are equal to $D_r$. Consequently,
\[\codim_{\mathcal A_e}(f)=D_r.\]
\item If $\psi(A_r)=T\mathcal A_e(f)$, then
\[\codim_{\mathcal A_e}(f)=D_r\]
\end{enumerate}
\end{rem}
\section{The algorithm} Assume that, given a map-germ $f$, for every integer $r$, we have
\begin{enumerate}
\item The module $M_r$ of a filtration $M_\bullet$ of $\bigoplus^p\bigoplus^m\cO_n$.
\item A procedure to compute, for any vector $v\in \theta(f)$ and every integer $r\geq 0$, a matrix $H$ such that
\[\psi(H)\equiv v\mod \psi(M_{r+1}).\]
(Although not strictly necessary, it isconvenient to ask for this procedure to return $H=0$ if $v\in \psi(M_{r+1})$, or at least if $v=0$).
\end{enumerate}
Then, the computational method of Section \ref{secComputationalMethod} can be implemented as follows:
{\sc Input:}
\begin{itemize}
\item The map $f$,
\item The generators $g_1,\dots,g_m$ of $\overline f_*\cO_X$.
\item (Optional) a degree bound $K$.
\end{itemize}
{\sc Output:}
\begin{itemize}
\item An integer $a$, which may be of the following forms:
\begin{itemize}
\item $a\geq 0$, in which case $\codim_{\mathcal A_e}(f)=a$
\item $a=-1$, in which case $\codim_{\mathcal A_e}(f)=\infty$
\item $a=-2$, in which case the degree bound $K$ has been surpassed during calculations (in a sense to be made precise later)
\end{itemize}
\end{itemize}
{\sc
Steps:}
\begin{enumerate}
\item {\sc Set}
\begin{itemize}
\item $a=-2$
\item $r=0$
\item $M=\bigoplus^p\bigoplus^m\cO_n$
\item {\sc Set} $v_1,\dots,v_q=$ the collection of generators of $T\mathcal A_e(f)$ as an $\cO_n$-module (see Proposition \ref{propGeneratorsOfTA})
\item $V_1,\dots,V_q=0$
\end{itemize}
\medskip
\item\label{ItemLoop}{\sc If $r$ is too big for $K$} \textcolor{red}{(To be made precise)}
\begin{itemize}
\item {\sc return $a$}
\end{itemize}
\medskip
\item\label{refItemElseFor} {\sc Else:}
\begin{enumerate}
\item {\sc For $i=1,\dots,q$}\label{refItemFor}
\begin{itemize}
\item {\sc Find a matrix $R_i$, such that}
\[\psi(R_i)\equiv v_i\mod \psi(M_{r+1}).\]
(See Remark \ref{remEfficiency})
\item $V_i=V_i+R_i$
\item $v_i=v_i-\psi(R_i)$
\end{itemize}
\medskip
\item $d_r=\dim_\C\dfrac{\langle V_1,\dots,V_q\rangle+M_r}{\langle V_1,\dots,V_q\rangle+M_{r+1}}$
\medskip
\item
{\sc If $v_1=\dots=v_q=0$, then}
\begin{itemize}
\item $T=\dim_\C\dfrac{\langle V_1,\dots,V_q\rangle+M_r}{\langle V_1,\dots,V_q\rangle+M_{r+1}}$
\smallskip
\item {\sc If $T=-1$}
\begin{itemize}
\item {\sc return $T$}
\end{itemize}
\smallskip
\item {\sc Else,}
\begin{itemize}
\item{\sc return $d_0+\dots+d_r+T$}
\end{itemize}
\end{itemize}
\item {\sc Else}
\begin{itemize}
\item {\sc If $d_r=0$ and we have enough consecutive $d_{r-L}=\dots=d_r=0$} \textcolor{red}{(To be made precise)},
\begin{itemize}
\item {\sc return $d_0+\dots+d_{r-L-1}$.}
\end{itemize}
\item {\sc Else,}
\begin{itemize}
\item $r=r+1$
\item {\sc go to step \ref{ItemLoop}}
\end{itemize}
\end{itemize}
\end{enumerate}
\end{enumerate}
\begin{rem}\label{remEfficiency} Step \ref{refItemFor} involves a huge amount of calculations. Remarks \ref{remAlpha}
and \ref{remLessCalculations} should be taken into account in order to reduce it. Without being very precise, in principle, it should be enough to compute at most the consecutive approximations of certain set of monomials, or of the products, $x_ig_j$ or something like that
\end{rem}
\begin{rem}\label{remEfficientQuotients}
If we replace $d_r$ by $D_r$ as in Remark \ref{remDr} and choose $M_r$ adequately, the calculations of $D_r$ required are calculations in a free module over a quotient ring, which could speed up calculations.
\end{rem}
\section{Filtration choices and their associated approximations}
The method explained above requires to
\begin{enumerate}
\item Chose a filtration $M_\bullet$ as in Definition \ref{defFiltration}
\item Computing aproximations $H\in M_r$ of residues $v\in \psi(M_{r})$ modulo the chosen filtration:
\end{enumerate}
We must take into account that at this point we do not know how to compute approximations modulo an arbitrary submodule $\psi(M_r)$, but only approximations of the form
\[\psi(H)\equiv v\mod \bigoplus^p \km_X^N.\]
Theoretically, this is not a problem, because the origin-supported condition together with the finiteness of $\overline f$ (see Remark \ref{remFiltrationConditions}) ensure that, for every $r$, there is some exponent $N$ such that
\[\bigoplus^p \km_X^N\subseteq M_r\] and clearly an approximation modulo $\bigoplus^p \km_X^N$ is a valid approximation modulo $M_r$ as well.
\begin{rem}Notice that we do not need to compute $N$ before proceeding to compute the approximations. We can fix a tentative $N$, compute the approximation modulo $\bigoplus^p \km_X^N$. Then compute its residue modulo $\psi(M_r)$. If the residue is zero, the desired approximation has been obtained. Otherwise, the residue of this approximation is approximated again with $N$ replaced by $N+1$.
\end{rem}
It is however likely that the choice of the filtration affects the efficiency of the algorithm. The idea of this section is to collect the different choices that we want to experiment with.
\subsection{The target-degree filtration}
For each $r$, take
\[M_r=\bigoplus^p\bigoplus^m \km_n^r\]
For this filtration, if we let \[\operatorname{ord}(\overline f)=\max\{\operatorname{ord}(f_1),\dots,\operatorname{ord}(f_n)\}\qquad \rho=\max\{\operatorname{ord}(g_1),\dots,\operatorname{ord}(g_n)\},\]
For each $r$, our tentative initial $N$ is
\[N= r\cdot \operatorname{ord}(\overline f)+\rho\]
\subsection{The source-degree filtration}
For each $r$, take
\[\mathfrak n_{k,r}=\{X^\alpha\mid \sum_{j=1}^n\alpha_j\cdot \operatorname{ord}(f_j)\operatorname{ord}(g_k)\geq r\}\]
The tentative initial $N$ is
\[N= r\]
\section{Procedures}
\begin{enumerate}
\item GeneratingSetOverC:
{\sc Input:} list of polynomials $H=h_1,\dots,h_n$
{\sc Output:}
\begin{itemize}
\item basis $Q=q_1,\dots,q_r$ of $\Span_\C\{h_1,\dots,h_n\}$.
\item $n\times r$ matrix $M$ with entries in $\C$ such that
\[H=MQ\]
\end{itemize}
Should consist just on calling \[{\sc coef (ideal(h1,\dots,h_n),x_1\cdot\dots\cdot x_n))}\] and applying Gauss reduction to the resulting matrix while keeping track of the steps to undo the process.
Remark: Ideally, we would provide a generating set over $\cO_n$, and a matrix $M$ with entries in $\cO_n$, but producing this may be too costly.
\bigskip
\item ListEntries:
{\sc Input:} list of vectors $V=v_1,\dots,v_n$ of size $p$
{\sc Output:}
\begin{itemize}
\item list of polinomials $h_1,\dots,h_m$ consisting of the entries of $v_i$ (in order of appearance)
\item the integer $p$
\end{itemize}
\bigskip
\item AproxModuloM:
{\sc Input:}
\begin{itemize}
\item polynomial $h$
\item module M
\end{itemize}
{\sc Output:}
\begin{itemize}
\item vector $H=H_1,\dots,H_m$ such that
\[h\equiv\varphi(H)\mod M\]
\end{itemize}
\end{enumerate}
\section{To do list}
\begin{enumerate}
\item Minimizing ammount of approximations: Much of the calculations are repeated, simply because they appear at different entries of vectors. It seems that, for every graded piece $M_r/M_{r+1}$ we should be pin down a set of monomials that need to be approximated, and use these to write down all the required vectors. Also, we may be able to exploit the expressions of the monomials in lower degree to speed up the current degree calculations.
Idea: replace $v_1,\dots,v_q$ by a basis of the $\C$-vector space spanned by all entries of $v_1,\dots,v_q$.
\item Replacement of generators: Figure out whether a generator $v$ can be replaced by a combination $\tilde v$ of the existing generators with target coefficients, in a way such that
\begin{itemize}
\item The submodule generated is the same using $v$ or $\tilde v$
\item The approximation of $\tilde v$ is exact
\end{itemize}
\end{enumerate}
%
%\section{\textcolor{red}{Old Stuff }}
%
%Consider a polynomial map-germ $f\colon (\C^n,0)\to(\C^p,0),$ with coordinate functions $f_i(x)$, such that the map given by the first $n$ coordinates functions, \[\overline f\colon (\C^n,0)\to (\C^n,0)\] is finite. To avoid confusion, we write \[X=(\C^n,0)\quad \text{and}\quad \overline f\colon X\to (\C^n,0).\] Let \[g_1,\dots,g_m\in \overline f_*\cO_n\] be a set of generators of $\overline f_*\cO_n$, which is the ring $\cO_X$, regarded as an $\cO_n$-algebra via composition with $\overline f$.
%Consider the $\cO_n$-module\[\theta(f)=\bigoplus^p \overline f_*\cO_X\cong \bigoplus^p\bigoplus^m \cO_n \]
%and the $\mathcal A_e$-tangent submodule
%\[T\mathcal A _e(f)\leq \theta(f).\]
%This is the smallest submodule of $\theta(f)$ containing all vectors \[h(x)\cdot\pd{f}{x_i},\quad h\in \cO_X, 1\leq i\leq n,\] and the submodule \[\bigoplus^p \C[f_1,\dots,f_p].\]
%\begin{prop}
%With the above notations, $T\mathcal A _e(f)$ is generated as an $\cO_n$-module by
%\begin{itemize}
%\item The vectors
%\[\pd{f}{x_i}\cdot g_\ell,\quad i=1,\dots,n,\ell=1,\dots,m\]
%\item The vectors
%\[(0,\dots,H,\dots,0),\]
%where $H$ is of the form $f_{n+1}^{\alpha_{n+1}}\dots f_{p}^{\alpha_{p}}$, with $0\leq \alpha_i\leq m-1$.
%\end{itemize}
%\end{prop}
%Let $\km$ be the maximal ideal in $\cO_X$ and write
%\[\mathcal M^{(j)}=\bigoplus^p \km^j\leq \theta(f)\]
%Consider a sequence of submodules $T\mathcal A _e(f)^{(j)}\subseteq \theta(f)$, such that
%\[T\mathcal A _e(f)^{(j)}\equiv T\mathcal A _e(f)\mod \cM^{(j+1)},\]
%and write
%\[d_j=\dim_\C\frac{T\mathcal A _e(f)^{(j)}+\cM^{(j)}}{T\mathcal A _e(f)^{(j)}+\cM^{(j+1)}}=\dim_\C\frac{T\mathcal A _e(f)+\cM^{(j)}}{T\mathcal A _e(f)+\cM^{(j+1)}}\]
%
%\begin{prop}[Case 1]Assume that there exists $k$ such that $T\mathcal A _e(f)^{(k)}=T\mathcal A _e(f)$. Then,
%\[\operatorname{cod}_{\mathcal A _e}(f)=d_0+d_1+d_2+\cdots+d_{k-1}+\dim_\C\frac{T\mathcal A _e(f)^{(k)}+\cM^{(k)}}{T\mathcal A _e(f)^{(k)}}\]
%\end{prop}
%
%\begin{prop}[Case 2]Assume that there exists $\ell$ as in Du Plesis result (\textcolor{red}{to be made precise}) and assume that there exists $k$ such that $d_{k+1}=\dots=d_{k+\ell}=0$. Then,
%\[\operatorname{cod}_{\mathcal A _e}(f)=d_1+d_2+\cdots+d_{k}.\]
%
%\end{prop}
%
%\section{to do list}
%\begin{enumerate}
%\item Replace $\cM^{(k)}$ by any decreasing sequence of $\cO_n$-modules
%\[\theta(f)=\cM^{(0)}\geq \cM^{(1)}\geq\dots\geq \cM^{(j)}\geq \cdots,\]
%such that
%\[\bigcap_j\cM^{(j)}=0\]
%(the idea is to compute aproximations modulo $\cM^{(j)}$, and then let $\cM^{(j+1)}$ be the smallest module containing the ``residues'', or something like that, in a way that, if the aproximation modulo $\cM^{(j)}$ is exact, then we may take $\cM^{(j+1)}=0$)
%\item Formalize the fact that we are going to compute things in $\bigoplus^p\bigoplus^m \cO_n$, and replace the corresponding modules by the isomorphic images of their aproximations modulo $\cM^{(j)}$ in $\bigoplus^p\bigoplus^m \cO_n$
%\end{enumerate}
\end{document}

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)
- 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).

View File

@ -28,5 +28,6 @@ Time is expressed in seconds.
| 2. | 0.01 | 0.10 | 0.03 |
| 3. | 0.07 | 0.36 | 0.03 |
| 4. | 0.01 | 0.13 | 0.11 |
| 5. | ---- | |
| 6. | 0.03 | 163.34 | 36659.08 |
| 7. | 0.03 | 0.60 | 83043.46 |

View File

@ -1,9 +0,0 @@
LIB "AeCodPruebas.lib";
ring r = 0,(x),(c,ds);
ideal f = x2+x4,x3;
breakpoint(NormalOYModule);
AeNormal(f,maxideal(10));
quit;

57
example.c Normal file
View File

@ -0,0 +1,57 @@
LIB"AeCodPruebas.lib";
ring r = 0,(x,y),ds;
int i;
ideal f = x, xy+y6+y9;
ideal mappingf = f[1..nvars(r)];
//breakpoint(MaxPowerContained);
//AeNormal(f,maxideal(3));quit;
int k = MaxPowerContained(f);
int a = 0;
ideal aux1 = 0;
ideal aux2 = 0;
k;
while (size(aux1)==0 && size(aux2)==0)
{
a++;
aux1 = reduce(maxideal(k), std(mappingf^a));
aux2 = reduce(maxideal(k-1), std(mappingf^a));
}
a;
if (size(aux1)!=0)
{
"warning!";
}
AeNormal(f, maxideal(a));
//breakpoint(GenerateOYModule,464);
//breakpoint(MalgrFormVect);
/*
int k = MaxPowerContained(f);
int a = 1;
ideal mappingf = f[1..nvars(r)];
ideal auxred=reduce(mappingf^k, maxideal(1));
TargetIdeal(f,maxideal(5));
*/
//AeNormal(f, );
/*
def Q = MalgrRing(ideal(0),2,ideal(x,y2));
setring Q;
def f = imap(r,f);
def jf = imap(r,jf);
jf[1];
MalgrFormVect(matrix(jf[1]), maxOX^5);
*/
quit;

66
example2.c Normal file
View File

@ -0,0 +1,66 @@
LIB"AeCodPruebas.lib";
/*ring r = 0,(x(1..5)),ds;
ideal f = x(3),x(4),x(5),x(2)*x(1),x(1)^3+x(2)^3+x(3)*x(1)+x(4)*x(2)+(-x(5)-x(5)^2)*x(1)^2 +x(5)*x(2)^2;
*/
/*
ring r = 0,(x,y),ds;
ideal f = x,xy+y6+y9;
*/
//def Q = MalgrRing(ideal(0),2,f);
//breakpoint(AeDeterminacyTestDP);
"---";
//int a = AeDeterminacyTestDP(f);
//a;
"---";
/*
ring r = 0,(u,v,y,z),ds;
ideal f = u,v,y,z3-y2z,uz+vz2+yuz5;
*/
ring r = 0,(x(1..6),y,z),ds;
ideal f = x(1..6),y,z5+y2z3+x(4)*z3+x(5)*z2+x(6)*z, x(1)*z+x(2)*z2+x(3)*z3+x(4)*z4;
matrix jf = jacob(f);
int p = ncols(f);
int n = nvars(basering);
def Q = MalgrRing(ideal(0),n,f);
setring Q;
def f = imap(r,f);
def jf = imap(r, jf);
module wf = freemodule(9);
int i;
int m = ncols(Gens);
if (p > n)
{
ideal h = ideal(f[(n+1)..p]);
//print("h=");h;//
for (i=1; i <= m-1; i++)
{
wf = wf + (freemodule(p) * (h)^i);
//print("wf=");wf;//
}
}
"Generando modulos .....";
module TAef = GenerateOYModule(jf,wf);
"Modulo Tae generado";
module Maxi6 = GenerateOYModule(maxideal(6)*freemodule(9), 0);
"Modulo Maxi Generado";
ring target = 0,(X(1..n)),ds;
module TAef = imap(Q,TAef);
module Maxi6 = imap(Q, Maxi6);
"Calculando base std...";
module B = std(TAef + Maxi6);
"Calculando kbase....";
kbase(std(TAef + Maxi6));
//AeDeterminacyTestDP(f);
//AeNormal(f);
quit;

107
example3.c Normal file
View File

@ -0,0 +1,107 @@
LIB"AeCodPruebas.lib";
int i; int j;
LIB"matrix.lib";
/*ring r = 0,(x(1..3),w(1..3),y,z),ds;
ideal f = x(1..3),w(1..3),y,x(1)*z+x(2)*z^2+x(3)*z^3+(y2+2*w(3))*z4+z6,w(1)*z+w(2)*z2+w(3)*z3+z5;
f;
*/
ring r = 0,(t,x,y),ds;
ideal f = x,t,y2+ty,(x+y)^3+t2y;
AeNormal(f);
quit;
ring r = (0),(x,w,y,z),ds;
ideal f = x,w,y,z*(x2+w2+y2)+z3,z2;
AeDeterminacyTestDP(f);
quit;
//ideal f = x,w,y,x*z+(y2)*z2+z4,w*z+z3;
ideal f = x,w,y,xz+z4,wz+yz2;
AeNormal(f);
quit;
/*
AeDeterminacyTestDP(f);
AeNormal(f);
*/
matrix jf = jacob(f);
module tkef = jf + f*freemodule(5);
ideal maxOX = maxideal(1);
/*"Check: is m3 contained in tkef mod m4?";
compress(reduce(maxideal(3)*freemodule(5), std(tkef + maxideal(4)*freemodule(5))));
*/
def Q = MalgrRing(ideal(0),4,ideal(f[1..4]));
setring Q;
def f = imap(r,f);
def jf = imap(r,jf);
print(jf);
module wf = 0; //freemodule(5);
//def maxOX = imap(r,maxOX);
for(i=1; i<= ncols(Gens); i++)
{
wf = wf + f[5]*freemodule(5);
}
"modulot taef...";
module taef = GenerateOYModule(maxOX*jf,wf);
"modulo extra...";
module extra = GenerateOYModule(maxOX^5*f*freemodule(5),0);
"modulo extra 2...";
module extra2 = GenerateOYModule(maxOX^10*freemodule(5),0);
"max5...";
module Max5 = GenerateOYModule(maxOX^5*freemodule(5),0);
"reduciendo...";
reduce(Max5, std(taef+extra+extra2));
quit;
// taef; //
module NOX = 0;
/*
for (i=1; i<= size(taef); i++)
{
NOX = concat(NOX,MalgrFormToOX(VectorToMatrix(taef[i], 5, size(Gens))));
//print("NOX = "); print(NOX); //
}
*/
module Max1 = GenerateOYModule(maxOX*freemodule(5),0);
module Max3 = GenerateOYModule(maxOX^3*freemodule(5),0);
module Max4 = GenerateOYModule(maxOX^4*freemodule(5),0);
module tae4 = taef + Max4;
tae4 = std(tae4);
"---";
"Is m3 contained in taef?";
compress(reduce(Max3,std(taef)));
quit;
module fail = compress(reduce(Max1, tae4));
fail;
for (i=1; i<= ncols(fail); i++)
{
print(transpose(MalgrFormToOX(VectorToMatrix(fail[i], 5, size(Gens)))));
//print("NOX = "); print(NOX); //
}
"______";
matrix v[5][1] = 0,z,0,0,0;
def V = MatrixToVector(MalgrFormVect(v));
reduce(V,tae4);
quit;
ring target = 0,(X(1..5)),ds;
module tae4 = imap(Q,tae4);
kbase(std(tae4));
Auf Wiedersehe
quit;
;

BIN
main.pdf Normal file

Binary file not shown.

322
main.tex Normal file
View File

@ -0,0 +1,322 @@
\documentclass[a4paper]{amsart}
%\documentclass[a4paper,twoside]{article}
\usepackage{color}
%\usepackage{authblk}
%\usepackage{makeidx} % allows index generatio
\makeindex
\usepackage{graphicx}
\usepackage[all]{xy}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{hhline}
\usepackage{tikz-cd}
\usepackage{longtable}
\usepackage{ulem}
%\usepackage{amsfont}
\usepackage[a4paper, left=2cm, right=2cm, top=2cm,bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage[draft=true]{minted}
\usepackage{xspace}
\usepackage[backend=bibtex, bibencoding=utf8, doi=false, url=false, isbn=false]{biblatex}
\addbibresource{./sources.bib}
%\usepackage{draftwatermark}
%\SetWatermarkText{Early draft -- Do not circulate!}
%\SetWatermarkScale{1.2}
%\usepackage{cleveref}
\theoremstyle{definition}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{definition}[theorem]{Definition}
\newtheorem{remark}[theorem]{Remark}
\newtheorem{result}[theorem]{Result}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{example}[theorem]{Example}%
\newtheorem{conjecture}[theorem]{Conjecture}%
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{construction}[theorem]{Construction}%
\newtheorem{observation}[theorem]{Observation}
%\newenvironment{proof}{\noindent
%{\bf Proof:}}{
%\begin{flushright}$\Box$\end{flushright}}
\usepackage[all]{xy}
\usepackage{pdflscape}
%\usepackage{nccmath}
%\newenvironment{mpmatrix}{\begin{smallsize}\begin{pmatrix}}{\end{\pmatrix}\end{smallsize}}%
\setcounter{MaxMatrixCols}{66}
\newcommand{\Span}{\mathrm{span}\,}
\newcommand{\Tor}{\mathrm{Tor}\,}
\newcommand{\Der}{\mathrm{Der}}
\newcommand{\KK}{\mathbb{K}}
\newcommand{\fsl}{\mathfrak{sl}}
\newcommand{\Eu}{\mathrm{Eu}}
\newcommand{\fgl}{\mathfrak{gl}}
\newcommand{\sq}{\mathrm{sq}}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Pf}{\mathrm{Pf}\,}
\newcommand{\Jac}{\mathrm{Jac}}
\newcommand{\Grass}{\mathrm{Grass}}
\newcommand{\im}{\mathrm{im}\,}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\Id}{\mathrm{Id}}
\newcommand{\PP}{\mathbb{P}}
\newcommand{\IA}{\mathbb{A}}
\newcommand{\FF}{\mathbb{F}}
\newcommand{\Inf}{\mathrm{Inf}}
\newcommand{\NN}{\mathbb{N}}
\newcommand{\Spec}{\mathrm{Spec}\,}
\newcommand{\CC}{\mathbb C}
\newcommand{\sk}{\mathrm{sk}}
\newcommand{\sym}{\mathrm{sym}}
\newcommand{\QQ}{\mathbb Q}
\newcommand{\bbk}{\mathbf k}
\newcommand{\ZZ}{\mathbb Z}
\renewcommand{\PP}{\mathbb P}
\newcommand{\GL}{\mathrm{GL}}
\newcommand{\SL}{\mathrm{SL}}
\newcommand{\OO}{\mathcal{O}}
\newcommand{\m}{\mathfrak{m}}
\newcommand{\height}{\mathrm{height}\,}
\newcommand{\coker}{\mathrm{coker}\,}
\newcommand{\grade}{\mathrm{grade}\,}
\newcommand{\depth}{\mathrm{depth}\,}
\newcommand{\projdim}{\mathrm{projdim}\,}
\newcommand{\Ext}{\mathrm{Ext}}
\newcommand{\Aut}{\mathrm{Aut}}
\newcommand{\Triv}{\mathrm{Triv}}
\newcommand{\nef}{\mathrm{nef}}
\newcommand{\aut}{\mathrm{aut}}
\newcommand{\rk}{\mathrm{rank}}
\newcommand{\Div}{\mathrm{Div}}
\newcommand{\Kosz}{\mathrm{Kosz}}
\newcommand{\rank}{\mathrm{rank}\,}
\newcommand{\tr}{\mathrm{tr}\,}
\newcommand{\NS}{\mathrm{NS}}
\newcommand{\Num}{\mathrm{Num}}
\newcommand{\Pic}{\mathrm{Pic}}
\newcommand{\Oscar}{OSCAR\xspace}
%\newcommand{\D}{d}
\newcommand{\D}{\operatorname{d}\!}
%CHANGE FOR WORKING PHASE -- DELETE SUBSEQUENT TWO LINES LATER
\newcommand{\red}[1]{{\textcolor{red}{#1}}}
\newcommand{\blue}[1]{{\textcolor{blue}{#1}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\title{Some thoughts on finite extensions of rings}
\author{Others}
\address{
Other authors\dots
}
%\email{brandhorst@math.uni-sb.de}
%
\author{Matthias Zach}
\address{
Matthias Zach:
RPTU Kaiserslautern-Landau,
67663 Kaiserslautern,
Germany
}
%\email{zach@mathematik.uni-kl.de}
\begin{abstract}
Dah.
\end{abstract}
\maketitle
We are considering complex analytic maps $f \colon (\CC^n, 0) \to (\CC^p, 0)$ which
are \textit{finite}. In particular, we may assume $n \geq p$. By definition, $f$ is
finite if and only if its pullback $\varphi \colon \OO_p \to \OO_n$ is a finite
extension of rings, i.e. $\OO_n = \CC\{x_1,\dots,x_n\}$ is a finite
$\OO_p = \CC\{y_1,\dots,y_p\}$-module via $\varphi$.
\begin{definition}
Let $\varphi \colon R \to S$ be a morphism of commutative rings with unit. An element
$x \in S$ is called \textit{integral} over $R$ if there exists a \textit{monic}
polynomial
\[
P = X^r + c_{r-1} \cdot X^{r-1} + \dots + c_1 \cdot X + c_0 \in R[X]
\]
such that $P(x) = 0$ in $S$.
\end{definition}
\begin{proposition}
\label{prp:Finiteness}
Let $\varphi \colon R \to S$ be a morphism of commutative, Noetherian rings with unit.
The set of elements in $S$ which are integral over $R$ is a subalgebra of $S$.
Moreover, $S$ is finite over $R$ if and only if $S$ is generated
as an $R$-algebra by finitely many integral elements.
\end{proposition}
\noindent
For a proof see \cite[Theorem 4.2 and Corollary 4.5]{Eisenbud95}.
\medskip
For complex analytic mappings $f$ as above, we are working with rings of
convergent power series in several variables. In practice, however, we will
mostly encounter maps which admit a \textit{polynomial representative}
\[
f \colon \CC^n \to \CC^p, \quad (x_1,\dots,x_n) \mapsto (y_1,\dots, y_p) =
(f_1(x), \dots, f_p(x)), \quad f_j(x) \in \CC[x_1,\dots,x_n].
\]
It seems to be no significant restriction for practical applications to
assume that also this polynomial representative is actually finite.
For finite extensions of polynomial rings we do have algorithmic methods
to compute with the structure of $S$ as an $R$-module.
\begin{proposition}
Let $\varphi \colon \CC[y] \to \CC[x]$ be a mapping of polynomial
rings given by $y_j \mapsto f_j(x_1,\dots,x_n)$. Let
\[
J = \langle y_j - f_j(x) : j = 1,\dots, p\rangle \subset \CC[y, x]
\]
and $LJ$ the \textit{leading ideal} of $J$ with respect to a monomial
ordering which is an elimination ordering on the $x$-variables.
Then $\varphi$ is finite if and only if $\langle x_1,\dots, x_n\rangle^N \subset LJ$
for some $N \in \NN$. In this case, the set of monomials
$\{ x^\alpha : \alpha \in \NN^n, \, x^\alpha \notin LI\}$
are a generating set for $\CC[x]$ as a $\CC[y]$-module.
\end{proposition}
\noindent
TODO: Find a reference for the proof.
\medskip
Based on this result we can implement seamless transitions for elements $h \in S$
between their representation as polynomials $h \in \CC[x]$
and module elements $v \in R \cdot e_1 + \dots + R \cdot e_m$ with respect to a
chosen system of generators over $R$.
\medskip
Working with power series in computer algebra is an almost impossible undertaking
beyond simple arithmetic. Recall that in general it must be deemed impossible to even decide
equality of two given power series. Thus, the naive hope at this point would be
that \textit{localizing} at the origins of the domain and codomain of $f$,
respectively, would bring us sufficiently close to working with power
series by restricting ourselves to those which are in fact \textit{rational functions}.
\begin{proposition}
\label{prp:NonFiniteness}
Let $\varphi \colon R \to S$ be a finite extension of commutative Noetherian rings with
unit. Let $P \subset R$ be a prime ideal and $Q \subset S$ prime with
$\varphi^{-1}(Q) = P$ (i.e. $Q$ is a \textit{prime over} $P$).
Then the naturally induced morphism on the localizations
\[
\phi \colon R_P \to S_Q
\]
is finite if and only if $Q$ is the only prime in $S$ with that property.
\end{proposition}
\begin{proof}
According to Proposition
\ref{prp:Finiteness}, we have finiteness of $\phi$ if and only if an arbitrary element
$\frac{a}{b} \in S_Q$ is integral over $R_P$. Now by assumption both $a$ and $b$ are
integral over $R$ and hence over $R_P$ and since $\frac{a}{b} = a \cdot \frac{1}{b}$
it suffices to consider elements of the form $\frac{1}{b}$ for $b \notin Q$.
Suppose we found a monic polynomial
\[
F = X^r + c_{r-1} \cdot X^{r-1} + \dots + c_1 \cdot X^1 + c_0 \in R_P[X]
\]
with $F\left(\frac{1}{b}\right) = 0$ in $S_Q$. Then we can clear denominators to
obtain
\[
F' = c'_r \cdot X^r + c'_{r-1} \cdot X^{r-1} + \dots + c'_1 \cdot X^1 + c'_0 \in R[X]
\]
with $F'\left(\frac{1}{b}\right) = 0$ and $c'_r \notin P$.
But then, by definition of localization at $Q$,
\[
u \cdot \left( c'_r + c'_{r-1} \cdot b + \dots + c'_1 \cdot b^{r-1} + c'_0 \cdot b^r
\right) = 0
\]
in $S$ for some $u \notin Q$. This expression can be split as
\begin{equation}
\label{eqn:Splitting}
-u \cdot c'_r = u \cdot b \cdot \left(c'_{r-1} + c'_{r-2} \cdot b + \dots + c'_1 \cdot b^{r-2} + c'_0 \cdot b^{r-1} \right).
\end{equation}
Now suppose $Q'\neq Q$ was another prime with $\varphi^{-1}(Q') = P = \varphi^{-1}(Q)$.
Choosing $b \in Q' \setminus Q$ leads to a contradiction in (\ref{eqn:Splitting}):
Clearly, the right hand side, containing $b$ as a factor, is an element in $Q'$.
Comparing with the left hand side, we find that
$c'_r \notin P = \varphi^{-1}(Q) = \varphi^{-1}(Q')$ and, hence, $\varphi(c'_r) \in S$ is
neither an element of $Q$, nor of $Q'$. This leaves us with $u \in Q'$.
To arrive at a contradiction, let
\[
\mathrm{ord}_{Q'} \colon S \to \NN_0, \quad a \mapsto \mathrm{max}
\left\{k \in \NN_0 : a \in Q'^{(k)}\right\}
\]
where $Q'^{(k)}$ denotes the $k$-th \textit{symbolic power}, i.e.
the preimage of $\left(Q'_{Q'}\right)^k$ in $S$ under the localization
map $S \to S_{Q'}$. The map $\mathrm{ord}_{Q'}$ is a \textit{valuation}
and it is now easy to see that the valuation of the left hand side of
(\ref{eqn:Splitting}) is strictly less than the valuation of the
right hand side.
TODO: Find an argument to prove the converse.
% On the contrary, if $Q$ was the only prime over $P$, we can argue as follows.
% Let $b \in S \setminus Q$ be arbitrary and
% \[
% G = X^r + a_{r-1} \cdot X^{r-1} + a_{r-2} \cdot X^{r-2} + \dots + a_1 \cdot X + a_0 \in
% R[X]
% \]
% a monic polynomial with $G(b) = 0$ in $S$. We may choose $G$ to be of minimal
% degree with this property. Then
% \[
% G^\vee = 1 + a_{r-1} \cdot X + a_{r-2} \cdot X^2 + \dots + a_1 \cdot X^{r-1} + a_0 \cdot X^r
% \]
% satisfies $G^\vee\left(\frac{1}{b}\right) = 0$ in $S_Q$. Provided that we are allowed
% to divide by $a_0$ in $R_P$, we would thus get a monic polynomial
% in $R_P[X]$ annihilating $\frac{1}{b}$.
%
% Now suppose $a_0 \in P$ so that $\varphi(a_0) \in Q$. Expanding $G(b) = 0$
% then yields
% is a unit in $
% Now suppose $\varphi(a_0) \in Q$, so
% $a_0 \in P = \varphi^{1}(Q)$.
\end{proof}
\begin{example}
Consider the map
\[
f \colon \CC \to \CC, \quad x \mapsto y = x - x^3.
\]
Clearly, $\varphi \colon \CC[y] \to \CC[x]$ is finite and, in fact,
$\CC[x]$ is a free $\CC[y]$-module with generating set $1, x, x^2$.
For the analytification of this map $f \colon (\CC, 0) \to (\CC, 0)$
the implicit function theorem yields that there exists a local inverse
\[
y = x - x^3, \quad x = y + \sum_{k = 2}^\infty c_k \cdot y^k \in \CC\{y\}
\]
as a convergent power series in $y$. Therefore $\varphi^h \colon \CC\{y\} \to \CC\{x\}$
is in fact an \textit{isomorphism} and $\CC\{x\}$ is generated as a $\CC\{y\}$-module
by the unit element $1 \in \CC\{x\}$.
Thus we find a discrepancy of $3 - 1 = 2$ in the ranks of the two modules over the
respective rings. One could hope that the localization
\[
\phi \colon \CC[y]_{\langle y\rangle} \to \CC[x]_{\langle x \rangle}
\]
provides us with a reasonable approximation to $\varphi^h$, but
Proposition \ref{prp:NonFiniteness} tells us that the elements
\[
M_p = \left\langle\left(\frac{1}{1 - x}\right)^k : k \leq p\right\rangle_{\CC[y]_{\langle y\rangle}}
\]
form an infinite, ever increasing sequence of
$\CC[y]_{\langle y \rangle}$-submodules of $\CC[x]_{\langle x \rangle}$ and
that, hence, $\CC[x]_{\langle x \rangle}$ does not have a finite
$\CC[y]_{\langle y\rangle}$-module structure.
\end{example}
\printbibliography
\end{document}