=================================================================== RCS file: /home/cvs/OpenXM/src/k097/lib/minimal/minimal.k,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM/src/k097/lib/minimal/minimal.k 2000/05/03 06:42:07 1.1 +++ OpenXM/src/k097/lib/minimal/minimal.k 2000/05/05 08:13:49 1.5 @@ -1,6 +1,10 @@ -/* $OpenXM$ */ +/* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.4 2000/05/04 11:05:20 takayama Exp $ */ #define DEBUG 1 /* #define ORDINARY 1 */ +/* If you run this program on openxm version 1.1.2 (FreeBSD), + make a symbolic link by the command + ln -s /usr/bin/cpp /lib/cpp +*/ /* Test sequences. Use load["minimal.k"];; @@ -333,6 +337,7 @@ def test_SinitOfArray() { /* f is assumed to be a monomial with toes. */ def Sdegree(f,tower,level) { local i; + f = Init(f); if (level <= 1) return(StotalDegree(f)); i = Degree(f,es); return(StotalDegree(f)+Sdegree(tower[level-2,i],tower,level-1)); @@ -367,6 +372,15 @@ def SnewArrayOfFormat(p) { return(null); } } +def ScopyArray(a) { + local n, i,ans; + n = Length(a); + ans = NewArray(n); + for (i=0; i The betti numbers are 3, 2. + a=Sannfs2("x^3-y^2-x"); : it causes an error. It should be fixed. + a=Sannfs2("x*y*(x-y)"); : it causes an error. It should be fixed. + +*/ + + + +/* The below is under construction. */ +def Sschreyer(g) { + local rf, tower, reductionTable, skel, redundantTable, bases, + strategy, maxOfStrategy, height, level, n, i, + freeRes,place, f, reducer,pos, redundant_seq,bettiTable,freeResV,ww, + redundantTable_ordinary, redundant_seq_ordinary, + reductionTable_tmp,c2,ii,nn; + /* extern WeightOfSweyl; */ + ww = WeightOfSweyl; + Print("WeghtOfSweyl="); Println(WeightOfSweyl); + rf = SresolutionFrameWithTower(g); + redundant_seq = 1; redundant_seq_ordinary = 1; + tower = rf[1]; + reductionTable = SgenerateTable(tower); + skel = rf[2]; + redundantTable = SnewArrayOfFormat(rf[1]); + redundantTable_ordinary = SnewArrayOfFormat(rf[1]); + reducer = SnewArrayOfFormat(rf[1]); + freeRes = SnewArrayOfFormat(rf[1]); + bettiTable = SsetBettiTable(rf[1],g); + + height = Length(reductionTable); + for (level = 0; level < height; level++) { + n = Length(reductionTable[level]); + for (i=0; i f[5]) { + /* Zero in the gr-module */ + Print("v-degree of [org,remainder] = "); + Println([f[4],f[5]]); + Print("[level,i] = "); Println([level,i]); + redundantTable[level-1,place] = 0; + }else{ + redundantTable[level-1,place] = redundant_seq; + redundant_seq++; + } +#endif + redundantTable_ordinary[level-1,place] + =redundant_seq_ordinary; + redundant_seq_ordinary++; + bases[i] = SunitOfFormat(place,f[1])-f[1]; /* syzygy */ + /* redundantTable[level,i] = 0; + redundantTable_ordinary[level,i] = 0; */ + /* i must be equal to f[2], I think. Double check. */ + + /* Correction Of Constant */ + c2 = f[6]; + nn = Length(bases); + for (ii=0; ii= 1 */ + } + } /* i loop */ + } /* level loop */ + n = Length(freeRes); + freeResV = SnewArrayOfFormat(freeRes); + for (i=0; i= 1 in SpairAndReduction."); + p = skel[level,ii]; + myindex = p[0]; + i = myindex[0]; j = myindex[1]; + bases = freeRes[level-1]; + Println(["p and bases ",p,bases]); + if (IsNull(bases[i]) || IsNull(bases[j])) { + Println([level,i,j,bases[i],bases[j]]); + Error("level, i, j : bases[i], bases[j] must not be NULL."); + } + + tower2 = StowerOf(tower,level-1); + SsetTower(tower2); + /** sm1(" show_ring "); */ + + gi = Stoes_vec(bases[i]); + gj = Stoes_vec(bases[j]); + + ssp = Sspolynomial(gi,gj); + si = ssp[0,0]; + sj = ssp[0,1]; + syzHead = si*es^i; + /* This will be the head term, I think. But, double check. */ + Println([si*es^i,sj*es^j]); + + Print("[gi, gj] = "); Println([gi,gj]); + sm1(" [(Homogenize)] system_variable message "); + Print("Reduce the element "); Println(si*gi+sj*gj); + Print("by "); Println(bases); + + tmp = Sreduction(si*gi+sj*gj, bases); + + Print("result is "); Println(tmp); + t_syz = tmp[2]; + si = si*tmp[1]+t_syz[i]; + sj = sj*tmp[1]+t_syz[j]; + t_syz[i] = si; + t_syz[j] = sj; + + c2 = null; + /* tmp[0] must be zero */ + n = Length(t_syz); + for (i=0; i