=================================================================== RCS file: /home/cvs/OpenXM/src/k097/lib/minimal/minimal-note-ja.txt,v retrieving revision 1.1 retrieving revision 1.9 diff -u -p -r1.1 -r1.9 --- OpenXM/src/k097/lib/minimal/minimal-note-ja.txt 2000/05/19 11:16:51 1.1 +++ OpenXM/src/k097/lib/minimal/minimal-note-ja.txt 2000/07/30 02:26:25 1.9 @@ -1,4 +1,4 @@ -$OpenXM$ +$OpenXM: OpenXM/src/k097/lib/minimal/minimal-note-ja.txt,v 1.8 2000/07/26 02:21:31 takayama Exp $ SpairAndReduction() : 与えられた pair を reduction する. @@ -61,3 +61,641 @@ In(17)=sm1_pmat(a2[2]); ] In(18)= +--------------------------- + +May 22, (Tue), 5:50 (Spain local time, 12:50 JST) + +kan96xx/Kan/resol.c で, + RemoveRedundantInSchreyerSkelton = 0 +に変えて (この option もあたらしく加える), schreyer が正しく動くか +調べることにする. +( commit は kan96xx と k097 両方すべし.) + +test8() で sm1 で書いた方の Schreyer を見ると, + RemoveRedundantInSchreyerSkelton = 1 +でも, +kernel = image +となっているので以後この option は 1 のまま使うこととする. +要するに k0 のコードがどうやらおかしいらしい. +==> +6/8 のノートより. +syzygy を homogenization を介して計算するのは問題あり. +--> usage of isExact +要するに kernel = image のコードも変. Homogenized のままやる必要あり. + +----------------------------------- +June 8, 2000 (Thu), 9:10 (Spain local time) +hol.sm1 : gb_h, syz_h, isSameIdeal, isSameIdeal_h +complex.sm1 : isExact, isExact_h + +syzygy を homogenization を介して計算するのは問題あり. +--> usage of isExact + +[(Homogenize_vec) 0] system_variable : vector の homogenize をしない. +(grade) (module1v) switch_function : vector 変数は, total + degree に数えない. +==> 無限ループに注意 ---> gb_h, syz_h の usage. + +minimal-test.k の ann(x^3-y^2*z^2) の laplace 変換の +betti 数が変, exact でない, を isExact_h で check +しよう. + +minimal-test.k +test10(); + LaScala-Stillman の方法でつくった, schreyer resol が exact か + 調べる. + 例題は, ann(1/(x^3-y^2 z^2)) の Laplace 変換. + ==> OK. IsExact_h でしらべる. (IsExact はだめよ) + +June 8, 2000 (Thu), 19:35 +load["minimal-test.k"];; +test11(); + LaScala-Stillman の方法でつくった, minimal resol が exact か + 調べる. + 例題は, ann(1/(x^3-y^2 z^2)) の Laplace 変換. + +SwhereInTower を使うときは, +SsetTower() で gbList を変更しないといけない. +もちろん使用したら, それを戻すこと. +SpairAndReduction, SpairAndReduction2 で, + SsetTower(StowerOf(tower,level)); + pos = SwhereInTower(syzHead,tower[level]); + + SsetTower(StowerOf(tower,level-1)); + pos2 = SwhereInTower(tmp[0],tower[level-1]); +と, SwhereInTower の前に setTower をくわえた. +( 違うレベルでの比較のため.) + +IsExact_h は, 0 ベクトルを含む場合, ただしく動作しないようだ. +test11(). +test11a() で, 0 ベクトルを手で除いた行列の exactness をチェック. ==> OK. + + +--------------------------------- +June 9, 6:20 +SpairAndReduction +と +SpairAndReduction2 +の違い. +SpairAndReduction : SlaScala (LaScala-Stillman's algorithm で使う) +SpairAndReduction2 : Sschreyer (schreyer algorithm で使う, laScala はなし.) + +0 を自動で除くコードを書こう. + +SpruneZeroRow() を Sminimal() に加えた. +test11() も正しく動作するはず. +IsExact_h は schreyer を off して, ReParse してから, +呼び出すこと. + + +#ifdef TOTAL_STRATEGY + return(StotalDegree(f)+Sdegree(tower[level-2,i],tower,level-1)); +#endif + /* Strategy must be compatible with ordering. */ + /* Weight vector must be non-negative, too. */ + /* See Sdegree, SgenerateTable, reductionTable. */ + wd = Sord_w(f,ww); + return(wd+Sdegree(tower[level-2,i],tower,level-1)); +TOTAL_STRATEGY を用いる必要があるのでは?? +Example 1: Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); + v=[[2*x*Dx + 3*y*Dy+6, 0], + [3*x^2*Dy + 2*y*Dx, 0], + [0, x^2+y^2], + [0, x*y]]; + a=Sminimal(v); +strategy がおかしいといってとまる. 理由は? + +a=test_ann3("x^3+y^3+z^3); は時間がかかりそう. +a=test_ann3("x^3+y^3"); OK. +a=test_ann3("x^2+y^2+z"); OK. + + +上の example 1 のエラー の見方: +Processing [ 1 , 3 ] Strategy = 2 + 1 の 3 番目の spair の reduction を処理中. + In(7)=reductionTable: + [[ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] + -- これ. +SpairAndReduction: +[ p and bases , [ [ 0 , 3 ] , [ y*h , -x ] ] , [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , %[null] ] ] +0 の 0 番目と 3 番目 の spair を計算して, 0 レベルの gb で reduction. +[ 1 , 1 , 1 , 2 , 2 , 3 ] にあるように, strategy 3 以外は計算ずみ. +( 計算してないものは %[null] となってる. ) +[ level= , 1 ] +[ tower2= , [ [ ] ] ] ( 一番下なので, tower はなしよ. ) +[ y*h , -es^3*x ] +[gi, gj] = [ 2*x*Dx+3*y*Dy+6*h^2 , 2*y*Dx*h+3*x^2*Dy ] +1 +Reduce the element 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy +by [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , %[null] ] +result is [ 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy , 1 , [ 0 , 0 , 0 , 0 , 0 , 0 ] ] +vdegree of the original = -1 +vdegree of the remainder = -1 +[ 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy , [ y*h , 0 , 0 , -x , 0 , 0 ] , 3 , 5 , -1 , -1 ] + +In(11)=freeRes: +[ [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy ] , [ %[null] , [ 0 , 0 , y^2 , 0 , -x , 0 ] , [ 0 , -y , x , 0 , 1 , 0 ] , [ -y*h , 0 , 0 , x , 0 , 1 ] , %[null] ] , [ %[null] ] ] +をみればわかるように, SlaScala で, freeRes にこの元が [0,5] に加え +られた. + +次に SnextI が SlaScala より呼ばれてこのエラー. + i = SnextI(reductionTable_tmp,strategy,redundantTable, + skel,level,freeRes); +In(22)=reductionTable: +[ [ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] +なので, 最後 の 2 が処理されるはずだが, +In(25)=skel[2]: +[ [ [ 0 , 2 ] , [ 1 , -y^2 ] ] ] +のように, 0 番目と, 2 番目の spair. +しかし, +In(26)=bases: +[ %[null] , [ 0 , 0 , y^2 , 0 , -x , 0 ] , [ 0 , -y , x , 0 , 1 , 0 ] , [ -y*h , 0 , 0 , x , 0 , 1 ] , %[null] ] +のように, 0 番目は strategy 3 なので, まだもとまっていない. + +reductionTable_tmp=[ 2 ] +See also reductionTable, strategy, level,i +ERROR(sm): error operator : SnextI: bases[i] or bases[j] is null for all combinations. +--- Engine error or interrupt : In function : Error of class PrimitiveObject + +Type in Cleards() to exit the debug mode and Where() to see the stack trace. +In(7)=reductionTable: +[ [ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] +In(8)=strategy: +2 +In(9)=level: +2 + + RemoveRedundantInSchreyerSkelton = 0 +としても同じエラー. + +------------------------------------------------- +test_ann3("x*y+y*z+z*x"); OK. + +6/9 (Fri) +Sminimal の実装に相変わらず苦労してます. +Sevilla でいろいろと直した結果, +Sminimal はうまくうごけば正しい答えをだしてるみたいですが +(D : homogenized Weyl で ker = im を check してる, + V-adapted (strict) かどうかの check routing はまだ書いてない), +strategy がうまくうごかなくてとまる場合もあります +( strategy = 2 の sp を計算するのに, strategy 3 の 元を必要と + したりする場合あり). + + +strategy は +def Sdegree(f,tower,level) { + local i,ww, wd; + /* extern WeightOfSweyl; */ + ww = WeightOfSweyl; + f = Init(f); + if (level <= 1) return(StotalDegree(f)); + i = Degree(f,es); + return(StotalDegree(f)+Sdegree(tower[level-2,i],tower,level-1)); +} +を用いて, + ans_at_each_floor[j] = Sdegree(tower[i,j],tower,i+1)-(i+1) +で計算してます. + +いくつか出力をつけておきますので, 検討!!! + +例 1: +load["minimal-test.k"];; +a=test_ann3("x^3-y^2*z^2"); 引数の annihilating ideal の laplace 変換の + homogenization の resolution. + weight vector は (-1,-1,-1,1,1,1) + +In(4)=sm1_pmat(a[1]); + [ + [ 0 次 + [ y*Dy-z*Dz ] + [ -2*x*Dx-3*z*Dz+h^2 ] + [ 2*x*Dy*Dz^2-3*y*Dx^2*h ] + [ 2*x*Dy^2*Dz-3*z*Dx^2*h ] + ] + [ 1 次 + [ 3*Dx^2*h , 0 , Dy , -Dz ] + [ 6*x*Dy*Dz^2-9*y*Dx^2*h , -2*x*Dy*Dz^2+3*y*Dx^2*h , -2*x*Dx-3*y*Dy , 0 ] + [ 0 , 2*x*Dy^2*Dz-3*z*Dx^2*h , 0 , 2*x*Dx+3*z*Dz ] + [ 2*x*Dx+3*z*Dz-h^2 , y*Dy-z*Dz , 0 , 0 ] + [ 2*x*Dy*Dz , 0 , z , -y ] + ] + [ 2 次 + [ -2*x*Dx-3*y*Dy-3*z*Dz-6*h^2 , -Dy , -Dz , 3*Dx^2*h , 3*Dy*Dz ] + [ 3*y*z , z , y , -2*x*Dy*Dz , 2*x*Dx ] + ] + ] +In(5)= + +例 2: +load["minimal-test.k"];; +a=test_ann3("x*y+y*z+z*x"); +In(6)=sm1_pmat(a[1]); + [ + [ 0 次 + [ 2*x*Dx+x*Dz-y*Dz+z*Dz+h^2 ] + [ -2*y*Dy+x*Dz-y*Dz-z*Dz-h^2 ] + [ -2*x*Dy+2*z*Dy+x*Dz-y*Dz+3*z*Dz+h^2 ] + [ -2*y*Dx+2*z*Dx-x*Dz+y*Dz+3*z*Dz+h^2 ] + ] + [ 1 次 + [ y-z , x-z , -y , x ] + [ 2*Dy-2*Dz , 2*Dx-2*Dz , 2*Dx+2*Dz , -2*Dy-2*Dz ] + [ 2*y*Dx-2*z*Dx+x*Dz-y*Dz-3*z*Dz-2*h^2 , 0 , 0 , 2*x*Dx+x*Dz-y*Dz+z*Dz+2*h^2 ] + [ 2*y*Dy-2*z*Dy+y*Dz-z*Dz+h^2 , 2*x*Dz-y*Dz+2*z*Dz+h^2 , -x*Dz+z*Dz , 2*x*Dy+x*Dz ] + [ -2*y*Dy+2*z*Dy+y*Dz-z*Dz , y*Dz-4*z*Dz , -2*y*Dx+2*z*Dx-y*Dz+2*z*Dz , -2*z*Dy+y*Dz-3*z*Dz ] + ] + [ 2 次 + [ -2*y*Dx+2*z*Dx-y*Dz+2*z*Dz , x*y-x*z-y*z+z^2 , y-z , y , x+y-z ] + [ -6*Dx*Dz-2*Dz^2 , x*Dz+y*Dz-5*z*Dz-4*h^2 , -2*Dy+2*Dz , 2*Dx+2*Dz , 4*Dz ] + ] + ] +In(7)= + +例 3: うまく行かない例: + +Example 1: Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); + v=[[2*x*Dx + 3*y*Dy+6, 0], + [3*x^2*Dy + 2*y*Dx, 0], + [0, x^2+y^2], + [0, x*y]]; + a=Sminimal(v); +strategy がおかしいといってとまる. 理由は? +Negative weight vector を使わないときちんと動きます. + + +DEBUG 出力: +rf= [ + [ + [ Schreyer frame. + [ 0 , y^3 , 0 , 0 , -x^2 , 0 ] + [ 0 , 0 , y^2 , 0 , -x , 0 ] + [ 0 , y , -x , 0 , 0 , 0 ] + [ y*h , 0 , 0 , -x , 0 , 0 ] + [ 0 , 0 , 0 , 3*y*Dy , 0 , -2*Dx ] + ] + [ + [ 1 , 0 , -y^2 , 0 , 0 ] + ] + [ ] + ] + [ + [ 2*x*Dx , e_*x^2 , e_*x*y , 2*y*Dx*h , e_*y^3 , 3*y^2*Dy*h ] + [ es*y^3 , es^2*y^2 , es*y , y*h , 3*es^3*y*Dy ] + [ 1 ] + ] + [ + [ ] + [ + [ + [ 1 , 4 ] + [ y^3 , -x^2 ] + ] + [ + [ 2 , 4 ] + [ y^2 , -x ] + ] + [ + [ 1 , 2 ] + [ y , -x ] + ] + [ + [ 0 , 3 ] + [ y*h , -x ] + ] + [ + [ 3 , 5 ] + [ 3*y*Dy , -2*Dx ] + ] + ] + [ + [ + [ 0 , 2 ] + [ 1 , -y^2 ] + ] + ] + [ ] + ] + [ resolution すべき 部分加群 e_ は ベクトル成分のマーク. + [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy ] + ] + ] + +略 +Processing [ 1 , 3 ] Strategy = 2 + 1 の 3 番目の spair の reduction を処理中. + In(7)=reductionTable: + [[ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] + -- これ. +SpairAndReduction: +[ p and bases , [ [ 0 , 3 ] , [ y*h , -x ] ] , [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , %[null] ] ] +0 の 0 番目と 3 番目 の spair を計算して, 0 レベルの gb で reduction. +[ 1 , 1 , 1 , 2 , 2 , 3 ] にあるように, strategy 3 以外は計算ずみ. +( 計算してないものは %[null] となってる. ) +[ level= , 1 ] +[ tower2= , [ [ ] ] ] ( 一番下なので, tower はなしよ. ) +[ y*h , -es^3*x ] +[gi, gj] = [ 2*x*Dx+3*y*Dy+6*h^2 , 2*y*Dx*h+3*x^2*Dy ] +1 +Reduce the element 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy +by [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , %[null] ] +result is [ 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy , 1 , [ 0 , 0 , 0 , 0 , 0 , 0 ] ] +vdegree of the original = -1 +vdegree of the remainder = -1 +[ 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy , [ y*h , 0 , 0 , -x , 0 , 0 ] , 3 , 5 , -1 , -1 ] + +In(11)=freeRes: +[ [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy ] , [ %[null] , [ 0 , 0 , y^2 , 0 , -x , 0 ] , [ 0 , -y , x , 0 , 1 , 0 ] , [ -y*h , 0 , 0 , x , 0 , 1 ] , %[null] ] , [ %[null] ] ] +をみればわかるように, SlaScala で, freeRes にこの元が [0,5] に加え +られた. + +次に SnextI が SlaScala より呼ばれてこのエラー. + i = SnextI(reductionTable_tmp,strategy,redundantTable, + skel,level,freeRes); +In(22)=reductionTable: +[ [ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] +なので, 最後 の 2 が処理されるはずだが, +In(25)=skel[2]: +[ [ [ 0 , 2 ] , [ 1 , -y^2 ] ] ] +のように, 0 番目と, 2 番目の spair. +しかし, +In(26)=bases: +[ %[null] , [ 0 , 0 , y^2 , 0 , -x , 0 ] , [ 0 , -y , x , 0 , 1 , 0 ] , [ -y*h , 0 , 0 , x , 0 , 1 ] , %[null] ] +のように, 0 番目は strategy 3 なので, まだもとまっていない. + +reductionTable_tmp=[ 2 ] +See also reductionTable, strategy, level,i +ERROR(sm): error operator : SnextI: bases[i] or bases[j] is null for all combinations. +--- Engine error or interrupt : In function : Error of class PrimitiveObject + +Type in Cleards() to exit the debug mode and Where() to see the stack trace. +In(7)=reductionTable: +[ [ 1 , 1 , 1 , 2 , 2 , 3 ] , [ 3 , 2 , 1 , 2 , 3 ] , [ 2 ] ] +In(8)=strategy: +2 +In(9)=level: +2 +この時点まででもとまった basis + [ + [ 2*x*Dx+3*y*Dy+6*h^2 , e_*x^2+e_*y^2 , e_*x*y , 2*y*Dx*h+3*x^2*Dy , e_*y^3 , 3*y^2*Dy*h+6*y*h^3-3*x^3*Dy ] + [ %[null] , [ 0 , 0 , y^2 , 0 , -x , 0 ] , [ 0 , -y , x , 0 , 1 , 0 ] , [ -y*h , 0 , 0 , x , 0 , 1 ] , %[null] ] + [ %[null] ] + ] + +------------------------------------- + +Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); +a=Sminimal([x^2+y^2,x*y]); +これでも似たようなエラーをだせる. +この方が debug しやすい: +Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); +a=Sminimal([x*y,x^2+y^2]); +ではエラーがでないのが不思議. +pruneZero が動いてないのが変. + +rf= [ + [ + [ + [ y^3 , 0 , -x^2 ] + [ 0 , y^2 , -x ] + [ y , -x , 0 ] + ] + [ + [ 1 , 0 , -y^2 ] + ] + [ ] + ] + [ + [ x^2 , x*y , y^3 ] + [ y^3 , es*y^2 , y ] + [ 1 ] + ] + [ + [ ] + [ + [ + [ 0 , 2 ] + [ y^3 , -x^2 ] + ] + [ + [ 1 , 2 ] + [ y^2 , -x ] + ] + [ + [ 0 , 1 ] + [ y , -x ] + ] + ] + [ + [ + [ 0 , 2 ] + [ 1 , -y^2 ] + ] + ] + [ ] + ] + [ + [ x^2+y^2 , x*y , y^3 ] + ] + ] +[ 0 , 0 ] +Processing [ 0 , 0 ] Strategy = 1 +[ 0 , 1 ] +Processing [ 0 , 1 ] Strategy = 1 +[ 1 , 2 ] +Processing [ 1 , 2 ] Strategy = 1 +SpairAndReduction: +[ p and bases , [ [ 0 , 1 ] , [ y , -x ] ] , [ x^2+y^2 , x*y , %[null] ] ] +[ level= , 1 ] +[ tower2= , [ [ ] ] ] +[ y , -es*x ] +[gi, gj] = [ x^2+y^2 , x*y ] +1 +Reduce the element y^3 +by [ x^2+y^2 , x*y , %[null] ] +result is [ y^3 , 1 , [ 0 , 0 , 0 ] ] +vdegree of the original = -3 +vdegree of the remainder = -3 +[ y^3 , [ y , -x , 0 ] , 2 , 2 , -3 , -3 ] +[ 0 , 2 ] +Processing [ 0 , 2 ] Strategy = 2 +[ 1 , 1 ] +Processing [ 1 , 1 ] Strategy = 2 +SpairAndReduction: +[ p and bases , [ [ 1 , 2 ] , [ y^2 , -x ] ] , [ x^2+y^2 , x*y , y^3 ] ] +[ level= , 1 ] +[ tower2= , [ [ ] ] ] +[ es*y^2 , -es^2*x ] +[gi, gj] = [ x*y , y^3 ] +1 +Reduce the element 0 +by [ x^2+y^2 , x*y , y^3 ] +result is [ 0 , 1 , [ 0 , 0 , 0 ] ] +vdegree of the original = -4 +vdegree of the remainder = %[null] +[ 0 , [ 0 , y^2 , -x ] , 1 , -1 , -4 , %[null] ] +reductionTable_tmp=[ 2 ] +See also reductionTable, strategy, level,i +ERROR(sm): error operator : SnextI: bases[i] or bases[j] is null for all combinations. +--- Engine error or interrupt : In function : Error of class PrimitiveObject + +Type in Cleards() to exit the debug mode and Where() to see the stack trace. +In(10)=reductionTable : +[ [ 1 , 1 , 2 ] , [ 3 , 2 , 1 ] , [ 2 ] ] +In(11)=bases: +[ %[null] , [ 0 , y^2 , -x ] , [ -y , x , 1 ] ] +In(12)= これは, [3, 2, 1] の元のうち, 2,1 がもとまっている. +最後の [ 2 ] の計算に 0 番目が必要でこれがまだない. +要するに 1 番目と 3 番目を消す operator [1, 0, -y^2] + [ y^3 , 0 , -x^2 ] + [ 0 , y^2 , -x ] + [ y , -x , 0 ] +の reduction が必要. + +----------------------------------------- +June 11, 2000 (Tue), 20:05 +V-strict かどうかをチェックする関数を書きたい. +安全に ring (schreyer order) を定義する関数が欲しい. +安全に parse する関数も欲しい. +ベクトルと es 表現の変換関数もいる. + +AvoidTheSameRing == 1 なら, schreyer の gbList も変更できないように +すべきか? +関連変数: +needWarningForAvoidTheSameRing +isTheSameRing() : ring が同じか check. pointer でなく中身までみる. +see poly4.c. ここのコメントは参考になる. +3.If Schreyer = 1, then the system always generates a new ring. + +define_ring に gbList も渡せるの? +==> set_up_ring@ を見る. grep set_up_ring ==> +primitive.c KsetUpRing() grep KsetUpRing ==> +keyword gbListTower が使えるが, list で与えないといけない. +list に変換するのは, (list) dc. + +tparse の必要なわけ? +?? おもいだせない. + +ring_def で ring (schreyer order) を定義すると, 計算のときの +order も tower でやってくれるの? +多分 NO. +grep ppAdd *.c ==> +poly2.c + checkRing(f,g); + + while (f != POLYNULL && g != POLYNULL) { + /*printf("%s + %s\n",POLYToString(f,'*',1),POLYToString(g,'*',1));*/ + checkRing2(f,g); /* for debug */ + gt = (*mmLarger)(f,g); + + mmLarger は変えてないように見える. checkRing はマクロ. + +mmLarger_tower は + if (!(f->m->ringp->schreyer) || !(g->m->ringp->schreyer)) + return(mmLarger_matrix(f,g)); +となってるので mmLarger_tower を default にしておけば心配ないように見える. + +ring_def は正しく動く? + +TODO: +関数の仕様: ( new.sm1 または complex.sm1 においとく ) + mmLarger は tower に変えてしまう. + 変数名, weight vector, シフトベクトル m を与えると ring (with schreyer order) + を作る. ==> weyl, weyl + parser はとくに作る必要がないように見えるが...(tparse) ==> name + ベクトル <---> es 表現 cf. toVectors, [(toe_) f] gbext ==> name + 適切な homogenization 関数 ==> homogenize + ord_w の schreyer 版 ==> ord_w + init の schreyer 版 ==> init + gb_h, syz_h の対応版 ==> [ ii vv ww m] syz_h + resolution から shift vector を計算する関数. + + 結果の check をする assert 関数も必要. + +上の シフトベクトル対応版の関数は当分 new.sm1 へ. そのあと complex.sm1 へ. + +cohom.sm1 の interface 関数は cohom.k へ. +Help key word は (Cohom.deRham) みたいに, . でくぎって書く. + +---------------------- +エラーの原因がようやくわかる: June 14, 19:00 +Schreyer frame の段階で syz に 1 があると strategy が +はたらかない. + +test13() GKZ の minimal free resolution. 2 度実行すると変. +grade が変更されると, 変なことがおきるので, +ScheckIfSchreyer() 関数で, これを scheck することにした. + sm1(" (report) (mmLarger) switch_function /ss set "); +はまだやめとく. matrix になってるので. + +------------------------------------------ +June 15, 2000 +TODO: +1.if (IdenfityIntegerAndUniversalNumber) のとき --- default + lt, gt, eq で integer と universalNumber の比較ができるようにする. + rational との比較も可能にする. + +2. sm1_push_int0 に対応することを, sm1 の側でやる. + マクロ名 obj to_int --> Done. + weight_vector の universalNumber ==> まだ. エラーをださないのがこわい. + s_weight_vector + weightv + ord_w + toVectors + define_ring + init + gkz + +------------- +Schreyer skelton がどうして 1 を要素にもつかしらべる. + +June 24 (Sat), 22:30 at Posthouse (Heathrow) www.posthouse-hotels.com +Sevilla 滞在, Mega もようやくおわり minimal resolution の check に戻る. +resol1.c に次の line を加えた. + /* If isConstant(sv.a) is added, (x^3 - y^2 z^2) deRham stops + with an error. I've not yet understood the reason. + At Posthouse at Heathrow. June 24, 2000 */ + if (isConstant(sv.b)) { + s->deleted = 1; + } + ===> おかしいので削除. + +isConstant(sv.a) がないと, こんどは, +Sminimal([x^2+y^2,x*y]); がエラーでとまる. +(x,y の weight は -1). +LaScala-Stillman の論文をもう一度ながめよう. + +commit すべき: misc/mega2000 (cvs-misc add) Done. + OpenXM/src/kan96xx Done. + OpenXM/src/k097/lib/minimal Done. + +July 26. + resol.c の schreyerSkelton0 で, skelton が minimal になるように + コードを挿入. + テストは + cd src/k097/lib/minimal + k0 + load["minimal.k"];; + Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); + Sminimal([x^2+y^2,x*y]); + で. + + LaScala-Stillman の論文逆で i e_j となる. + (order.c mmLarger_tower()) + + テスト 2. + cd src/k097/lib/minimal + k0 + load["minimal-test.k"];; + v: + Sminimal(v); + + test11(); /* a = test_ann3("x^3-y^2*z^2"); */ + test14(); /* gkz (1,2,3) */ + +July 30. Removed unnecessary code. + 例: + Sminimal("x^3-y^2"); + test12() ( x^3-y^2 z^2) + test15() GKZ 1,2,3 with a check. + test15b() toric + test15c() (u,v) = (-1,1) \ No newline at end of file