version 1.18, 2000/07/30 02:26:25 |
version 1.20, 2000/07/31 02:25:34 |
|
|
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.17 2000/07/26 12:56:36 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.19 2000/07/31 01:21:41 takayama Exp $ */ |
#define DEBUG 1 |
#define DEBUG 1 |
/* #define ORDINARY 1 */ |
Sordinary = false; |
/* If you run this program on openxm version 1.1.2 (FreeBSD), |
/* If you run this program on openxm version 1.1.2 (FreeBSD), |
make a symbolic link by the command |
make a symbolic link by the command |
ln -s /usr/bin/cpp /lib/cpp |
ln -s /usr/bin/cpp /lib/cpp |
|
|
def Sgroebner(f) { |
def Sgroebner(f) { |
sm1(" [f] groebner /FunctionValue set"); |
sm1(" [f] groebner /FunctionValue set"); |
} |
} |
|
|
|
|
|
def Error(s) { |
|
sm1(" s error "); |
|
} |
|
|
|
def IsNull(s) { |
|
if (Stag(s) == 0) return(true); |
|
else return(false); |
|
} |
|
|
|
def MonomialPart(f) { |
|
sm1(" [(lmonom) f] gbext /FunctionValue set "); |
|
} |
|
|
|
def Warning(s) { |
|
Print("Warning: "); |
|
Println(s); |
|
} |
|
def RingOf(f) { |
|
local r; |
|
if (IsPolynomial(f)) { |
|
if (f != Poly("0")) { |
|
sm1(f," (ring) dc /r set "); |
|
}else{ |
|
sm1(" [(CurrentRingp)] system_variable /r set "); |
|
} |
|
}else{ |
|
Warning("RingOf(f): the argument f must be a polynomial. Return the current ring."); |
|
sm1(" [(CurrentRingp)] system_variable /r set "); |
|
} |
|
return(r); |
|
} |
|
|
|
/* End of standard functions that should be moved to standard libraries. */ |
def test0() { |
def test0() { |
local f; |
local f; |
Sweyl("x,y,z"); |
Sweyl("x,y,z"); |
Line 136 sm1(" [(AvoidTheSameRing)] pushEnv |
|
Line 171 sm1(" [(AvoidTheSameRing)] pushEnv |
|
|
|
def SresolutionFrameWithTower(g,opt) { |
def SresolutionFrameWithTower(g,opt) { |
local gbTower, ans, ff, count, startingGB, opts, skelton,withSkel, autof, |
local gbTower, ans, ff, count, startingGB, opts, skelton,withSkel, autof, |
gbasis, nohomog; |
gbasis, nohomog,i,n; |
|
/* extern Sordinary */ |
nohomog = false; |
nohomog = false; |
count = -1; |
count = -1; Sordinary = false; /* default value for options. */ |
if (Length(Arglist) >= 2) { |
if (Length(Arglist) >= 2) { |
if (IsInteger(opt)) { |
if (IsArray(opt)) { |
count = opt; |
n = Length(opt); |
}else if (IsString(opt)) { |
for (i=0; i<n; i++) { |
if (opt == "homogenized") { |
if (IsInteger(opt[i])) { |
nohomog = true; |
count = opt[i]; |
}else{ |
} |
Println("Warning: unknown option"); |
if (IsString(opt[i])) { |
Println(opt); |
if (opt[i] == "homogenized") { |
|
nohomog = true; |
|
}else if (opt[i] == "Sordinary") { |
|
Sordinary = true; |
|
}else{ |
|
Println("Warning: unknown option"); |
|
Println(opt); |
|
} |
|
} |
} |
} |
|
}else{ |
|
Println("Warning: option should be given by an array."); |
} |
} |
}else{ |
|
count = -1; |
|
} |
} |
|
|
sm1(" setupEnvForResolution "); |
sm1(" setupEnvForResolution "); |
Line 314 def StotalDegree(f) { |
|
Line 358 def StotalDegree(f) { |
|
return(d0); |
return(d0); |
} |
} |
|
|
|
HelpAdd(["Sord_w", |
|
["Sord_w(f,w) returns the w-order of f", |
|
"Example: Sord_w(x^2*Dx*Dy,[x,-1,Dx,1]):"]]); |
/* Sord_w(x^2*Dx*Dy,[x,-1,Dx,1]); */ |
/* Sord_w(x^2*Dx*Dy,[x,-1,Dx,1]); */ |
def Sord_w(f,w) { |
def Sord_w(f,w) { |
local neww,i,n; |
local neww,i,n; |
Line 512 def SlaScala(g,opt) { |
|
Line 559 def SlaScala(g,opt) { |
|
place = f[3]; |
place = f[3]; |
/* (level-1, place) is the place for f[0], |
/* (level-1, place) is the place for f[0], |
which is a newly obtained GB. */ |
which is a newly obtained GB. */ |
#ifdef ORDINARY |
if (Sordinary) { |
redundantTable[level-1,place] = redundant_seq; |
redundantTable[level-1,place] = redundant_seq; |
redundant_seq++; |
redundant_seq++; |
#else |
}else{ |
if (f[4] > f[5]) { |
if (f[4] > f[5]) { |
/* Zero in the gr-module */ |
/* Zero in the gr-module */ |
Print("v-degree of [org,remainder] = "); |
Print("v-degree of [org,remainder] = "); |
Line 526 def SlaScala(g,opt) { |
|
Line 573 def SlaScala(g,opt) { |
|
redundantTable[level-1,place] = redundant_seq; |
redundantTable[level-1,place] = redundant_seq; |
redundant_seq++; |
redundant_seq++; |
} |
} |
#endif |
} |
redundantTable_ordinary[level-1,place] |
redundantTable_ordinary[level-1,place] |
=redundant_seq_ordinary; |
=redundant_seq_ordinary; |
redundant_seq_ordinary++; |
redundant_seq_ordinary++; |
Line 652 def SunitOfFormat(pos,forms) { |
|
Line 699 def SunitOfFormat(pos,forms) { |
|
return(ans); |
return(ans); |
} |
} |
|
|
def Error(s) { |
|
sm1(" s error "); |
|
} |
|
|
|
def IsNull(s) { |
|
if (Stag(s) == 0) return(true); |
|
else return(false); |
|
} |
|
|
|
def StowerOf(tower,level) { |
def StowerOf(tower,level) { |
local ans,i; |
local ans,i; |
ans = [ ]; |
ans = [ ]; |
Line 681 def Sspolynomial(f,g) { |
|
Line 720 def Sspolynomial(f,g) { |
|
sm1("f g spol /FunctionValue set"); |
sm1("f g spol /FunctionValue set"); |
} |
} |
|
|
def MonomialPart(f) { |
|
sm1(" [(lmonom) f] gbext /FunctionValue set "); |
|
} |
|
|
|
/* WARNING: |
/* WARNING: |
When you use SwhereInTower, you have to change gbList |
When you use SwhereInTower, you have to change gbList |
Line 804 def Sreduction(f,myset) { |
|
Line 840 def Sreduction(f,myset) { |
|
return([tmp[0],tmp[1],t_syz]); |
return([tmp[0],tmp[1],t_syz]); |
} |
} |
|
|
def Warning(s) { |
|
Print("Warning: "); |
|
Println(s); |
|
} |
|
def RingOf(f) { |
|
local r; |
|
if (IsPolynomial(f)) { |
|
if (f != Poly("0")) { |
|
sm1(f," (ring) dc /r set "); |
|
}else{ |
|
sm1(" [(CurrentRingp)] system_variable /r set "); |
|
} |
|
}else{ |
|
Warning("RingOf(f): the argument f must be a polynomial. Return the current ring."); |
|
sm1(" [(CurrentRingp)] system_variable /r set "); |
|
} |
|
return(r); |
|
} |
|
|
|
def Sfrom_es(f,size) { |
def Sfrom_es(f,size) { |
local c,ans, i, d, myes, myee, j,n,r,ans2; |
local c,ans, i, d, myes, myee, j,n,r,ans2; |
Line 882 def Sbases_to_vec(bases,size) { |
|
Line 900 def Sbases_to_vec(bases,size) { |
|
HelpAdd(["Sminimal", |
HelpAdd(["Sminimal", |
["It constructs the V-minimal free resolution by LaScala's algorithm", |
["It constructs the V-minimal free resolution by LaScala's algorithm", |
"option: \"homogenized\" (no automatic homogenization ", |
"option: \"homogenized\" (no automatic homogenization ", |
|
" : \"Sordinary\" (no (u,v)-minimal resolution)", |
|
"Options should be given as an array.", |
"Example: Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);", |
"Example: Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);", |
" v=[[2*x*Dx + 3*y*Dy+6, 0],", |
" v=[[2*x*Dx + 3*y*Dy+6, 0],", |
" [3*x^2*Dy + 2*y*Dx, 0],", |
" [3*x^2*Dy + 2*y*Dx, 0],", |
Line 900 def Sminimal(g,opt) { |
|
Line 920 def Sminimal(g,opt) { |
|
if (Length(Arglist) < 2) { |
if (Length(Arglist) < 2) { |
opt = null; |
opt = null; |
} |
} |
|
/* Sordinary is set in SlaScala(g,opt) --> SresolutionFrameWithTower */ |
|
|
ScheckIfSchreyer("Sminimal:0"); |
ScheckIfSchreyer("Sminimal:0"); |
r = SlaScala(g,opt); |
r = SlaScala(g,opt); |
/* Should I turn off the tower?? */ |
/* Should I turn off the tower?? */ |