version 1.27, 2000/08/16 22:38:52 |
version 1.31, 2000/12/10 03:12:20 |
|
|
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.26 2000/08/10 02:59:08 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.30 2000/11/19 05:50:30 takayama Exp $ */ |
#define DEBUG 1 |
#define DEBUG 1 |
Sordinary = false; |
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), |
|
|
|
|
*/ |
*/ |
|
|
|
/* We cannot use load command in the if statement. */ |
|
load("lib/minimal/cohom.k"); |
|
|
load("cohom.k"); |
|
def load_tower() { |
def load_tower() { |
|
local ppp; |
if (Boundp("k0-tower.sm1.loaded")) { |
if (Boundp("k0-tower.sm1.loaded")) { |
}else{ |
}else{ |
sm1(" [(parse) (k0-tower.sm1) pushfile ] extension "); |
if (Tag(GetPathName("k0-tower.sm1")) == 0) { |
sm1(" [(parse) (new.sm1) pushfile ] extension "); |
ppp = GetPathName("lib/minimal/k0-tower.sm1"); |
|
sm1(" [(parse) ppp pushfile ] extension "); |
|
}else{ |
|
sm1(" [(parse) (k0-tower.sm1) pushfile ] extension "); |
|
} |
|
if (Tag(GetPathName("new.sm1")) == 0) { |
|
ppp = GetPathName("lib/minimal/new.sm1"); |
|
sm1(" [(parse) ppp pushfile ] extension "); |
|
}else{ |
|
sm1(" [(parse) (new.sm1) pushfile ] extension "); |
|
} |
sm1(" /k0-tower.sm1.loaded 1 def "); |
sm1(" /k0-tower.sm1.loaded 1 def "); |
} |
} |
sm1(" oxNoX "); |
sm1(" oxNoX "); |
|
|
HelpAdd(["Max", |
HelpAdd(["Max", |
["Max(v) returns the maximal element in v."]]); |
["Max(v) returns the maximal element in v."]]); |
|
|
|
def Kernel(f) { |
|
sm1(" [f] syz /FunctionValue set "); |
|
} |
|
def Syz(f) { |
|
sm1(" [f] syz /FunctionValue set "); |
|
} |
|
HelpAdd(["Kernel", |
|
["Kernel(f) returns the syzygy of f.", |
|
"Return value [b, c]: b is a set of generators of the syzygies of f", |
|
" : c=[gb, backward transformation, syzygy without", |
|
" dehomogenization", |
|
"Example: Weyl(\"x,y\",[[\"x\",-1,\"Dx\",1]]); ", |
|
" s=Kernel([x*Dx+1,Dx^2+x^5]); s[0]:"]]); |
|
/* cf. sm1_syz in cohom.k */ |
|
def Gb(f) { |
|
sm1(" [f] gb /FunctionValue set "); |
|
} |
|
HelpAdd(["Gb", |
|
["Gb(f) returns the Groebner basis of f.", |
|
"cf. Kernel, Weyl."]]); |
|
|
|
|
/* End of standard functions that should be moved to standard libraries. */ |
/* End of standard functions that should be moved to standard libraries. */ |
def test0() { |
def test0() { |
local f; |
local f; |
|
|
} |
} |
|
|
|
|
|
|
def Sweyl(v,w) { |
def Sweyl(v,w) { |
/* extern WeightOfSweyl ; */ |
/* extern WeightOfSweyl ; */ |
local ww,i,n; |
local ww,i,n; |
Line 1006 def Sminimal(g,opt) { |
|
Line 1039 def Sminimal(g,opt) { |
|
redundantTable = r[1]; |
redundantTable = r[1]; |
reducer = r[2]; |
reducer = r[2]; |
bettiTable = SbettiTable(redundantTable); |
bettiTable = SbettiTable(redundantTable); |
Sprintln2("Betti numbers are ------"); |
Sprintln2("BettiTable ------"); |
if (Sverbose || Sverbose2) {sm1_pmat(bettiTable);} |
if (Sverbose || Sverbose2) {sm1_pmat(bettiTable);} |
minRes = SnewArrayOfFormat(freeRes); |
minRes = SnewArrayOfFormat(freeRes); |
seq = 0; |
seq = 0; |
Line 1070 def Sminimal(g,opt) { |
|
Line 1103 def Sminimal(g,opt) { |
|
Println("0: minimal resolution, 3: Schreyer resolution "); |
Println("0: minimal resolution, 3: Schreyer resolution "); |
Println("------------ Resolution Summary --------------"); |
Println("------------ Resolution Summary --------------"); |
Print("Betti numbers : "); |
Print("Betti numbers : "); |
Println(Map(ansSminimal[0],"Length")); |
Println(Join([Length(ansSminimal[0,0,0])],Map(ansSminimal[0],"Length"))); |
Print("Betti numbers of the Schreyer frame: "); |
Print("Betti numbers of the Schreyer frame: "); |
Println(Map(ansSminimal[3],"Length")); |
Println(Join([Length(ansSminimal[3,0,0])],Map(ansSminimal[3],"Length"))); |
Println("-----------------------------------------------"); |
Println("-----------------------------------------------"); |
|
|
sm1(" restoreEnvAfterResolution "); |
sm1(" restoreEnvAfterResolution "); |
Line 1509 HelpAdd(["SgetShift", |
|
Line 1542 HelpAdd(["SgetShift", |
|
def SgetShifts(resmat,w) { |
def SgetShifts(resmat,w) { |
local i,n,ans,m0; |
local i,n,ans,m0; |
n = Length(resmat); |
n = Length(resmat); |
ans = NewArray(n); |
ans = NewArray(n+1); |
m0 = NewArray(Length(resmat[0,0])); |
m0 = NewArray(Length(resmat[0,0])); |
ans[0] = m0; |
ans[0] = m0; |
for (i=0; i<n-1; i++) { |
for (i=0; i<n; i++) { |
ans[i+1] = SgetShift(resmat[i],w,m0); |
ans[i+1] = SgetShift(resmat[i],w,m0); |
m0 = ans[i+1]; |
m0 = ans[i+1]; |
} |
} |
Line 1564 def SbettiTable(rtable) { |
|
Line 1597 def SbettiTable(rtable) { |
|
ans[i] = pp; |
ans[i] = pp; |
} |
} |
return(ans); |
return(ans); |
} |
|
|
|
|
} |
|
|
|
def BfRoots1(G,V) { |
|
local bb,ans; |
|
sm1(" /BFparlist [ ] def "); |
|
if (IsString(V)) { |
|
sm1(" [ V to_records pop ] /V set "); |
|
}else { |
|
sm1(" V { toString } map /V set "); |
|
} |
|
sm1(" /BFvarlist V def "); |
|
|
|
sm1(" G flatten { toString } map /G set "); |
|
sm1(" G V bfm /bb set "); |
|
if (IsSm1Integer(bb)) { |
|
return([ ]); |
|
} |
|
sm1(" bb 0 get findIntegralRoots { (universalNumber) dc } map /ans set "); |
|
return([ans, bb]); |
|
} |
|
|
|
HelpAdd(["BfRoots1", |
|
["BfRoots1(g,v) returns the integral roots of g with respect to the weight", |
|
"vector (1,1,...,1) and the b-function itself", |
|
"Example: BfRoots1([x*Dx-2, y*Dy-3],[x,y]);" |
|
]]); |
|
|
|
|
|
|