| version 1.10, 2000/05/07 02:10:44 |
version 1.13, 2000/06/08 08:37:53 |
|
|
| /* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.9 2000/05/06 13:41:12 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.12 2000/05/24 15:24:54 takayama Exp $ */ |
| #define DEBUG 1 |
#define DEBUG 1 |
| /* #define ORDINARY 1 */ |
/* #define ORDINARY 1 */ |
| /* If you run this program on openxm version 1.1.2 (FreeBSD), |
/* If you run this program on openxm version 1.1.2 (FreeBSD), |
|
|
| ln -s /usr/bin/cpp /lib/cpp |
ln -s /usr/bin/cpp /lib/cpp |
| */ |
*/ |
| #define OFFSET 0 |
#define OFFSET 0 |
| #define TOTAL_STRATEGY |
/* #define TOTAL_STRATEGY */ |
| /* #define OFFSET 20*/ |
/* #define OFFSET 20*/ |
| /* Test sequences. |
/* Test sequences. |
| Use load["minimal.k"];; |
Use load["minimal.k"];; |
| Line 1076 def Sannfs2_laScala(f) { |
|
| Line 1076 def Sannfs2_laScala(f) { |
|
| return(Sminimal(pp)); |
return(Sminimal(pp)); |
| } |
} |
| |
|
| |
def Sannfs2_laScala2(f) { |
| |
local p,pp; |
| |
p = Sannfs(f,"x,y"); |
| |
sm1(" p 0 get { [(x) (y) (Dx) (Dy)] laplace0 } map /p set "); |
| |
p = [p]; |
| |
Sweyl("x,y",[["x",1,"y",1,"Dx",1,"Dy",1,"h",1], |
| |
["x",-1,"y",-1,"Dx",1,"Dy",1]]); |
| |
pp = Map(p[0],"Spoly"); |
| |
return(Sminimal(pp)); |
| |
} |
| |
|
| def Sannfs3(f) { |
def Sannfs3(f) { |
| local p,pp; |
local p,pp; |
| p = Sannfs(f,"x,y,z"); |
p = Sannfs(f,"x,y,z"); |
| Line 1101 HelpAdd(["Sannfs3", |
|
| Line 1112 HelpAdd(["Sannfs3", |
|
| |
|
| */ |
*/ |
| |
|
| |
def Sannfs3_laScala2(f) { |
| |
local p,pp; |
| |
p = Sannfs(f,"x,y,z"); |
| |
sm1(" p 0 get { [(x) (y) (z) (Dx) (Dy) (Dz)] laplace0 } map /p set "); |
| |
Sweyl("x,y,z",[["x",1,"y",1,"z",1,"Dx",1,"Dy",1,"Dz",1,"h",1], |
| |
["x",-1,"y",-1,"z",-1,"Dx",1,"Dy",1,"Dz",1]]); |
| |
pp = Map(p,"Spoly"); |
| |
return(Sminimal(pp)); |
| |
} |
| |
|
| |
|
| /* The below does not use LaScala-Stillman's algorithm. */ |
/* The below does not use LaScala-Stillman's algorithm. */ |
| Line 1352 def SpairAndReduction2(skel,level,ii,freeRes,tower,ww, |
|
| Line 1372 def SpairAndReduction2(skel,level,ii,freeRes,tower,ww, |
|
| Print("vdegree of the original = "); Println(vdeg); |
Print("vdegree of the original = "); Println(vdeg); |
| Print("vdegree of the remainder = "); Println(vdeg_reduced); |
Print("vdegree of the remainder = "); Println(vdeg_reduced); |
| |
|
| |
if (!IsNull(vdeg_reduced)) { |
| |
if (vdeg_reduced < vdeg) { |
| |
Println("--- Special in V-minimal!"); |
| |
Println(tmp[0]); |
| |
Println("syzygy="); sm1_pmat(t_syz); |
| |
Print("[vdeg, vdeg_reduced] = "); Println([vdeg,vdeg_reduced]); |
| |
} |
| |
} |
| |
|
| |
|
| pos = SwhereInTower(syzHead,tower[level]); |
pos = SwhereInTower(syzHead,tower[level]); |
| pos2 = SwhereInTower(tmp[0],tower[level-1]); |
pos2 = SwhereInTower(tmp[0],tower[level-1]); |
| ans = [tmp[0],t_syz,pos,pos2,vdeg,vdeg_reduced,c2]; |
ans = [tmp[0],t_syz,pos,pos2,vdeg,vdeg_reduced,c2]; |
| Line 1548 def testAnnfs3(f) { |
|
| Line 1578 def testAnnfs3(f) { |
|
| Println(b[i+1]*b[i]); |
Println(b[i+1]*b[i]); |
| } |
} |
| return(a); |
return(a); |
| } |
} |
| |
|
| |
def ToString_array(p) { |
| |
local ans; |
| |
if (IsArray(p)) { |
| |
ans = Map(p,"ToString_array"); |
| |
}else{ |
| |
ans = ToString(p); |
| |
} |
| |
return(ans); |
| |
} |
| |
|
| |
/* sm1_res_div([[x],[y]],[[x^2],[x*y],[y^2]],[x,y]): */ |
| |
|
| |
def sm1_res_div(I,J,V) { |
| |
I = ToString_array(I); |
| |
J = ToString_array(J); |
| |
V = ToString_array(V); |
| |
sm1(" [[ I J] V ] res*div /FunctionValue set "); |
| |
} |
| |
|
| |
/* It has not yet been working */ |
| |
def sm1_res_kernel_image(m,n,v) { |
| |
m = ToString_array(m); |
| |
n = ToString_array(n); |
| |
v = ToString_array(v); |
| |
sm1(" [m n v] res-kernel-image /FunctionValue set "); |
| |
} |
| |
def Skernel(m,v) { |
| |
m = ToString_array(m); |
| |
v = ToString_array(v); |
| |
sm1(" [ m v ] syz /FunctionValue set "); |
| |
} |
| |
|
| |
def test3() { |
| |
local a1,a2,b1,b2; |
| |
a1 = Sannfs3("x^3-y^2*z^2"); |
| |
a1 = a1[0]; |
| |
a2 = Sannfs3_laScala2("x^3-y^2*z^2"); |
| |
a2 = a2[0]; |
| |
b1 = a1[1]; |
| |
b2 = a2[1]; |
| |
sm1_pmat(b2); |
| |
Println(" OVER "); |
| |
sm1_pmat(b1); |
| |
return([sm1_res_div(b2,b1,["x","y","z"]),b2,b1,a2,a1]); |
| |
} |
| |
|
| |
def test4() { |
| |
local a,b; |
| |
a = Sannfs3_laScala2("x^3-y^2*z^2"); |
| |
b = a[0]; |
| |
sm1_pmat( sm1_res_kernel_image(b[0],b[1],[x,y,z])); |
| |
sm1_pmat( sm1_res_kernel_image(b[1],b[2],[x,y,z])); |
| |
return(a); |
| |
} |
| |
|
| |
def sm1_gb(f,v) { |
| |
f =ToString_array(f); |
| |
v = ToString_array(v); |
| |
sm1(" [f v] gb /FunctionValue set "); |
| |
} |
| |
|
| |
def SisExact_h(c,v) { |
| |
local a; |
| |
v = ToString_array(v); |
| |
a = [c,v]; |
| |
sm1(a," isExact /FunctionValue set "); |
| |
} |
| |
|
| |
def SisComplex(a) { |
| |
local n,i,j,k,b,p,q; |
| |
n = Length(a); |
| |
for (i=0; i<n-1; i++) { |
| |
if (Length(a[i+1]) != 0) { |
| |
b = a[i+1]*a[i]; |
| |
p = Length(b); q = Length(b[0]); |
| |
for (j=0; j<p; j++) { |
| |
for (k=0; k<q; k++) { |
| |
if (!IsZero(b[j,k])) { |
| |
Print("Is is not complex at "); |
| |
Println([i,j,k]); |
| |
return(false); |
| |
} |
| |
} |
| |
} |
| |
} |
| |
} |
| |
return(true); |
| |
} |
| |
|