version 1.31, 2000/12/10 03:12:20 |
version 1.36, 2007/07/03 22:28:11 |
|
|
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.30 2000/11/19 05:50:30 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.35 2007/07/03 22:05:46 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. */ |
/* We cannot use load command in the if statement. */ |
load("lib/minimal/cohom.k"); |
load("lib/minimal/cohom.k"); |
|
Load_sm1(["k0-tower.sm1","lib/minimal/k0-tower.sm1"],"k0-tower.sm1.loaded"); |
|
Load_sm1(["new.sm1","lib/minimal/new.sm1"],"new.sm1.loaded"); |
|
sm1(" oxNoX "); |
|
|
def load_tower() { |
|
local ppp; |
|
if (Boundp("k0-tower.sm1.loaded")) { |
|
}else{ |
|
if (Tag(GetPathName("k0-tower.sm1")) == 0) { |
|
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(" oxNoX "); |
|
} |
|
load_tower(); |
|
SonAutoReduce = true; |
SonAutoReduce = true; |
def Factor(f) { |
def Factor(f) { |
sm1(f, " fctr /FunctionValue set"); |
sm1(f, " fctr /FunctionValue set"); |
|
|
HelpAdd(["Max", |
HelpAdd(["Max", |
["Max(v) returns the maximal element in v."]]); |
["Max(v) returns the maximal element in v."]]); |
|
|
def Kernel(f) { |
def Kernel(f,v) { |
sm1(" [f] syz /FunctionValue set "); |
local ans; |
|
/* v : string or ring */ |
|
if (Length(Arglist) < 2) { |
|
sm1(" [f] syz /ans set "); |
|
}else{ |
|
sm1(" [f v] syz /ans set "); |
|
} |
|
return(ans); |
} |
} |
def Syz(f) { |
def Syz(f) { |
sm1(" [f] syz /FunctionValue set "); |
sm1(" [f] syz /FunctionValue set "); |
Line 257 def StoTower() { |
|
Line 246 def StoTower() { |
|
} |
} |
|
|
def SsetTower(tower) { |
def SsetTower(tower) { |
sm1(" [(AvoidTheSameRing)] pushEnv |
sm1(" [(AvoidTheSameRing)] pushEnv \ |
[ [(AvoidTheSameRing) 0] system_variable |
[ [(AvoidTheSameRing) 0] system_variable \ |
[(gbListTower) tower (list) dc] system_variable |
[(gbListTower) tower (list) dc] system_variable \ |
] pop popEnv "); |
] pop popEnv "); |
/* sm1("(hoge) message show_ring "); */ |
/* sm1("(hoge) message show_ring "); */ |
} |
} |
Line 369 def NewPolynomialVector(size) { |
|
Line 358 def NewPolynomialVector(size) { |
|
} |
} |
|
|
def SturnOffHomogenization() { |
def SturnOffHomogenization() { |
sm1(" |
sm1(" \ |
[(Homogenize)] system_variable 1 eq |
[(Homogenize)] system_variable 1 eq \ |
{ Sverbose { |
{ Sverbose { \ |
(Warning: Homogenization and ReduceLowerTerms options are automatically turned off.) message } { } ifelse |
(Warning: Homogenization and ReduceLowerTerms options are automatically turned off.) message } { } ifelse \ |
[(Homogenize) 0] system_variable |
[(Homogenize) 0] system_variable \ |
[(ReduceLowerTerms) 0] system_variable |
[(ReduceLowerTerms) 0] system_variable \ |
} { } ifelse |
} { } ifelse \ |
"); |
"); |
} |
} |
/* NOTE!!! Be careful these changes of global environmental variables. |
/* NOTE!!! Be careful these changes of global environmental variables. |
Line 383 def SturnOffHomogenization() { |
|
Line 372 def SturnOffHomogenization() { |
|
after computation and interruption. August 15, 2000. |
after computation and interruption. August 15, 2000. |
*/ |
*/ |
def SturnOnHomogenization() { |
def SturnOnHomogenization() { |
sm1(" |
sm1(" \ |
[(Homogenize)] system_variable 0 eq |
[(Homogenize)] system_variable 0 eq \ |
{ Sverbose { |
{ Sverbose { \ |
(Warning: Homogenization and ReduceLowerTerms options are automatically turned ON.) message } { } ifelse |
(Warning: Homogenization and ReduceLowerTerms options are automatically turned ON.) message } { } ifelse \ |
[(Homogenize) 1] system_variable |
[(Homogenize) 1] system_variable \ |
[(ReduceLowerTerms) 1] system_variable |
[(ReduceLowerTerms) 1] system_variable \ |
} { } ifelse |
} { } ifelse \ |
"); |
"); |
} |
} |
|
|
Line 1020 HelpAdd(["Sminimal", |
|
Line 1009 HelpAdd(["Sminimal", |
|
" Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);", |
" Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);", |
" b = ReParse(a[0]); sm1_pmat(b); ", |
" b = ReParse(a[0]); sm1_pmat(b); ", |
" IsExact_h(b,[x,y]):", |
" IsExact_h(b,[x,y]):", |
"Note: a[0] is the V-minimal resolution. a[3] is the Schreyer resolution."]]); |
"Note: a[0] is the V-minimal resolution. a[3] is the Schreyer resolution.", |
|
" ---> D^{m_3} --b[2]--> D^{m_2} --b[1]--> D^{m_1} --b[0]--> D^{m_0} ", |
|
" Here D^{m_i} are the set of row vectors. " |
|
]]); |
|
|
def Sminimal(g,opt) { |
def Sminimal(g,opt) { |
local r, freeRes, redundantTable, reducer, maxLevel, |
local r, freeRes, redundantTable, reducer, maxLevel, |
Line 1487 HelpAdd(["IsSameIdeal_h", |
|
Line 1479 HelpAdd(["IsSameIdeal_h", |
|
"cf. ReParse" |
"cf. ReParse" |
]]); |
]]); |
|
|
def ReParse(a) { |
/* |
local c; |
Output of S* functions may cause a trouble because it uses Schreyer orders. |
if (IsArray(a)) { |
In this case, use ReParse(). |
c = Map(a,"ReParse"); |
*/ |
}else{ |
|
sm1(a," toString . /c set"); |
|
} |
|
return(c); |
|
} |
|
HelpAdd(["ReParse", |
|
["Reparse(obj): obj", |
|
"It parses the given object in the current ring.", |
|
"Outputs from SlaScala, Sschreyer may cause a trouble in other functions,", |
|
"because it uses the Schreyer order.", |
|
"In this case, ReParse the outputs from these functions.", |
|
"cf. IsExaxt_h" |
|
]]); |
|
|
|
def ScheckIfSchreyer(s) { |
def ScheckIfSchreyer(s) { |
local ss; |
local ss; |