$OpenXM: OpenXM/src/k097/lib/minimal/minimal-note-ja.txt,v 1.12 2000/08/09 03:45:27 takayama Exp $ SpairAndReduction() : 与えられた pair を reduction する. V-minimal に必要かどうかの判定もする. SpairAndReduction2(): tower2 = StowerOf(tower,level-1); SsetTower(tower2); /** sm1(" show_ring "); */ 与えられた pair を reduction するための schreyer order を設定する. Resolution の深さに応じて, tower も深くする必要がある. if (IsConstant(t_syz[i])){ Syzygy をみて, 定数成分がないか check. t_syz[i] が定数成分であれば, 一つ前の GB の構成要素である g_i が余分な GB である可能性がたかい. SpairAndReduction() ( LaScala-Stillman の方法) との整合性をとるため g_i を tmp[0] に代入し ( reduction できなかったふりをする ) g_i の V-degree をしらべる. Sannfs2_laScala2() Sannfs3_laScala2() を作る. 二つのアルゴリズムの比較. In(11)=sm1_pmat(a1[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] [ 2*x*Dx+3*z*Dz-h^2 , y*Dy-z*Dz , 0 , 0 ] [ 2*x*Dy*Dz , 0 , z , -y ] [ 0 , 2*x*Dy^2*Dz-3*z*Dx^2*h , 0 , 2*x*Dx+3*z*Dz ] ] In(12)=sm1_pmat(a2[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 ] [ 2*x*Dx+3*z*Dz-h^2 , y*Dy-z*Dz , 0 , 0 ] [ 2*x*Dy*Dz , 0 , z , -y ] [ 9*z*Dx^2*h , 2*x*Dy^2*Dz-3*z*Dx^2*h , 3*z*Dy , 2*x*Dx ] [ 2*x*Dx*Dz^2+3*z*Dz^3+5*Dz^2*h^2 , y*Dy*Dz^2-z*Dz^3-2*Dz^2*h^2 , 0 , 0 ] ] In(13)= ---------------------- In(16)=sm1_pmat(a1[2]); [ [ -2*x*Dx-3*y*Dy-3*z*Dz-6*h^2 , -Dy , -Dz , 3*Dx^2*h , 3*Dy^2 , 3*Dy*Dz , -2*x*Dy , 2*x*Dz , 0 ] [ 3*y*z , z , y , -2*x*Dy*Dz , -3*z*Dy , 2*x*Dx , 2*x*z , -2*x*y , 0 ] ] In(17)=sm1_pmat(a2[2]); [ [ -y , 2*x*Dy*Dz , z , 0 , 2*x*Dx , 0 ] [ -Dz , 3*Dx^2*h , Dy , -2*x*Dx-3*y*Dy-3*h^2 , -3*Dy*Dz , 0 ] ] 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) August 1. (u,v)-minimal のテストコードをいれた. IsExact_h で 変数 c の値がかわる. 原因不明. c=Sinit_w(b,w); Println("Resolution (b)----"); sm1_pmat(b); Println("Initial (c)----"); sm1_pmat(c); cc=c; Println("Exactness of the resolution ---"); Println(IsExact_h(b,v)); /* IsExact_h breaks the variable c. THIS BUG SHOULD BE FIXED. */ このあとなぜか, c が b の値にかわってしまう. なお def IsExact(c,...) と定義されており, この c を別の変数名に 変えればこの問題はおきない. Println("Why is the initial c rewritten by b? (buggy) ");sm1_pmat(c[0]); ===> complex.sm1 の isExact_h (isExact) で popVariables を忘れてただけ. betti 数は, 行列の消去をやるまでわからないの? SbettiTable(). Sminimal は [(Homogenize_vec) 0] system_variable にするようで, これが cohomology の計算には邪魔. August 2, 2000. Sminimal は [(Homogenize_vec) 0] system_variable にするようで, これが cohomology の計算には邪魔. ( cf. 大阿久氏のスクリプト. 現在神戸に滞在中. ) /restoreEnvAfterResolution { [(AvoidTheSameRing)] pushEnv [ [(AvoidTheSameRing) 0] system_variable [(gbListTower) [[ ]] (list) dc] system_variable ] pop popEnv setupEnvForResolution.opts restoreOptions <=== 変更. opts はいろんなところで使ってる. } def このマクロをよべばいいのか? sm1(" restoreEnvAfterResolution "); を Sminimal のおわりに呼ぶように変えた. test17b(), test18() は正常動作. August 7, Mon 13:00JST ( 5:00 St.Andrews, Scotland, 4039 号室) example-ja.tex を書くための出力. % k0 sm1>macro package : dr.sm1, 9/26,1995 --- Version 6/15, 2000. sm1>macro package : module1.sm1, 1994 -- Nov 8, 1998 This is kan/k0 Version 1998,12/15 WARNING: This is an EXPERIMENTAL version sm1>var.sm1 : Version 3/7, 1997 In(1)=Loading startup files (startup.k) 1997, 3/11. sm1 version = 3.000726 Default ring is Z[x,h]. WARNING(sm): You rewrited the protected symbol pushVariables. WARNING(sm): You rewrited the protected symbol popVariables. In(2)=load["minimal-test.k"];; cpp: -lang-c++: linker input file unused since linking not done cpp: -lang-c++: linker input file unused since linking not done cohom.sm1 is the top of an experimental package to compute restrictions of all degrees based on restall.sm1 and restall_s.sm1 See, http://www.math.kobe-u.ac.jp to get these files of the latest version. Note that the package b-function.sm1 cannot be used with this package. r-interface.sm1 (C) N.Takayama, restriction, deRham oxasir.sm1, --- open asir protocol module 3/1 1998, 6/5 1999 asirconnect, asir, fctr, primadec, (C) M.Noro, N.Takayama ox.sm1, --- open sm1 protocol module 11/11,1999 (C) N.Takayama. oxhelp for help hol.sm1, basic package for holonomic systems (C) N.Takayama, 2000, 06/08 rank characteristic ch rrank gb pgb syz genericAnn annfs gb_h syz_h isSameIdeal isSameIdeal_h sm1>gkz.sm1 generates gkz systems (C) N.Takayama, 1998, 11/8, cf. rrank in hol.sm1 gkz sm1>appell.sm1 generates Appell hypergeometric differential equations (C) N.Takayama, 1998, 11/8, cf. rank in hol.sm1 appell1 appell4 sm1>resol0.sm1, package to construct schreyer resolutions -- not minimal (C) N.Takayama, 1999, 5/18. resol0, resol1 complex.sm1 : 1999, 9/28, res-div, res-solv, res-kernel-image, res-dual 2000, 6/8, isExact_h, isExact In this package, complex is expressed in terms of matrices. restall.sm1 ... compute all the cohomology groups of the restriction of a D-module to tt = (t_1,...,t_d) = (0,...,0). non-Schreyer Version: 19980415 by T.Oaku usage: [(P1)...] [(t1)...] bfm --> the b-function [(P1)...] [(t1)...] k0 k1 deg restall --> cohomologies of restriction [(P1)...] [(t1)...] intbfm --> the b-function for integration [(P1)...] [(t1)...] k0 k1 deg intall --> cohomologies of integration restall_s.sm1...compute all the cohomology groups of the restriction of a D-module to tt = (t_1,...,t_d) = (0,...,0). Schreyer Version: 19990521 by N.Takayama & T.Oaku usage: [(P1)...] [(t1)...] k0 k1 deg restall_s -> cohomologies of restriction [(P1)...] [(t1)...] k0 k1 deg intall_s --> cohomologies of integration No truncation from below in restall The variable Schreyer is set to 2. Loading tower.sm1 in the standard context. You cannot use Schyrer 1. It is controlled from cohom.sm1 oxpath.oxlog.xterm is set to /home/nobuki/OpenXM/lib/sm1/bin/oxlog In(3)=a=Sannfs2("x^3-y^2"); Starting ox_asir server. Hello from open. serverName is localhost and portnumber is 0 Done the initialization. port =1024 Hello from open. serverName is localhost and portnumber is 0 Done the initialization. port =1025 [ 7 , 1025 , 6 , 1024 ] [1] 250 Trying to accept from localhost... len= 16 4 2 7f 0 0 1 0 0 0 0 0 0 0 0 8 0 Authentification: localhost is allowed to be accepted. Accepted. Trying to accept from localhost... len= 16 4 3 7f 0 0 1 0 0 0 0 0 0 0 0 6 0 Authentification: localhost is allowed to be accepted. Accepted. Control port 1024 : Connected. Stream port 1025 : Connected. Byte order for control process is network byte order. Byte order for engine process is network byte order. WeightOfSweyl=[ x , -1 , y , -1 , Dx , 1 , Dy , 1 ] Automatic homogenization. [ -2*x*Dx , -3*y*Dx^2 , -9*y^2*Dx*Dy , -27*y^3*Dy^2 ] Warning: Homogenization and ReduceLowerTerms options are automatically turned off. ....Done. betti=4 Warning: Homogenization and ReduceLowerTerms options are automatically turned ON. Warning: Homogenization and ReduceLowerTerms options are automatically turned off. .Done. betti=1 Warning: Homogenization and ReduceLowerTerms options are automatically turned ON. Warning: Homogenization and ReduceLowerTerms options are automatically turned off. Done. betti=0 Warning: Homogenization and ReduceLowerTerms options are automatically turned ON. rf= [ [ [ [ -9*y^2*Dy , 0 , 2*x , 0 ] [ 0 , 0 , -3*y*Dy , Dx ] [ 0 , -3*y*Dy , Dx , 0 ] [ -3*y*Dx , 2*x , 0 , 0 ] ] [ [ -Dx , 0 , 0 , 3*y*Dy ] ] [ ] ] [ [ -2*x*Dx , -3*y*Dx^2 , -9*y^2*Dx*Dy , -27*y^3*Dy^2 ] [ -9*y^2*Dy , -3*es^2*y*Dy , -3*es*y*Dy , -3*y*Dx ] [ -Dx ] ] [ [ ] [ [ [ 0 , 2 ] [ -9*y^2*Dy , 2*x ] ] [ [ 2 , 3 ] [ -3*y*Dy , Dx ] ] [ [ 1 , 2 ] [ -3*y*Dy , Dx ] ] [ [ 0 , 1 ] [ -3*y*Dx , 2*x ] ] ] [ [ [ 0 , 3 ] [ -Dx , 3*y*Dy ] ] ] [ ] ] [ [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , -9*y^2*Dx*Dy-3*y*Dx*h^2-4*x^2*Dy*h , -27*y^3*Dy^2-27*y^2*Dy*h^2+3*y*h^4+8*x^3*Dy*h ] ] ] Generating reduction table which gives an order of reduction. WeghtOfSweyl=[ x , -1 , y , -1 , Dx , 1 , Dy , 1 ] tower[ [ -2*x*Dx , -3*y*Dx^2 , -9*y^2*Dx*Dy , -27*y^3*Dy^2 ] , [ -9*y^2*Dy , -3*es^2*y*Dy , -3*es*y*Dy , -3*y*Dx ] , [ -Dx ] ] reductionTable= [ [ 1 , 2 , 3 , 4 ] [ 3 , 4 , 3 , 2 ] [ 3 ] ] [ 0 , 0 ] Processing [level,i]= [ 0 , 0 ] Strategy = 1 [ 0 , 1 ] Processing [level,i]= [ 0 , 1 ] Strategy = 2 [ 1 , 3 ] Processing [level,i]= [ 1 , 3 ] Strategy = 2 SpairAndReduction: [ p and bases , [ [ 0 , 1 ] , [ -3*y*Dx , 2*x ] ] , [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , %[null] , %[null] ] ] [ level= , 1 ] [ tower2= , [ [ ] ] ] [ -3*y*Dx , 2*es*x ] [gi, gj] = [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h ] 1 Reduce the element 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h by [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , %[null] , %[null] ] result is [ 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , 1 , [ 0 , 0 , 0 , 0 ] ] vdegree of the original = 0 vdegree of the remainder = 0 [ 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , [ -3*y*Dx , 2*x , 0 , 0 ] , 3 , 2 , 0 , 0 ] [ 0 , 2 ] Processing [level,i]= [ 0 , 2 ] Strategy = 3 [ 1 , 0 ] Processing [level,i]= [ 1 , 0 ] Strategy = 3 SpairAndReduction: [ p and bases , [ [ 0 , 2 ] , [ -9*y^2*Dy , 2*x ] ] , [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , %[null] ] ] [ level= , 1 ] [ tower2= , [ [ ] ] ] [ 9*y^2*Dy , 2*es^2*x ] [gi, gj] = [ -2*x*Dx-3*y*Dy+h^2 , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h ] 1 Reduce the element -27*y^3*Dy^2+6*x*y*Dx*h^2-18*y^2*Dy*h^2+8*x^3*Dy*h by [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , %[null] ] result is [ 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h , -1 , [ -3*y*h^2 , 0 , 0 , 0 ] ] vdegree of the original = -1 vdegree of the remainder = -1 [ 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h , [ -9*y^2*Dy-3*y*h^2 , 0 , -2*x , 0 ] , 0 , 3 , -1 , -1 ] [ 1 , 2 ] Processing [level,i]= [ 1 , 2 ] Strategy = 3 SpairAndReduction: [ p and bases , [ [ 1 , 2 ] , [ -3*y*Dy , Dx ] ] , [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h ] ] [ level= , 1 ] [ tower2= , [ [ ] ] ] [ 3*es*y*Dy , es^2*Dx ] [gi, gj] = [ -3*y*Dx^2+2*x*Dy*h , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h ] 1 Reduce the element -6*y*Dx^2*h^2+4*x^2*Dx*Dy*h+6*x*y*Dy^2*h+8*x*Dy*h^3 by [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h , 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h ] result is [ 0 , 1 , [ 2*x*Dy*h , -2*h^2 , 0 , 0 ] ] vdegree of the original = 1 vdegree of the remainder = %[null] [ 0 , [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] , 2 , -1 , 1 , %[null] ] [ 2 , 0 ] Processing [level,i]= [ 2 , 0 ] Strategy = 3 SpairAndReduction: [ p and bases , [ [ 0 , 3 ] , [ -Dx , 3*y*Dy ] ] , [ [ 9*y^2*Dy+3*y*h^2 , 0 , 2*x , 1 ] , %[null] , [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] , [ 3*y*Dx , -2*x , 1 , 0 ] ] ] [ level= , 2 ] [ tower2= , [ [ -2*x*Dx , -3*y*Dx^2 , -9*y^2*Dx*Dy , -27*y^3*Dy^2 ] ] ] [ Dx , -3*es^3*y*Dy ] [gi, gj] = [ 9*y^2*Dy+2*es^2*x+es^3+3*y*h^2 , 3*y*Dx-2*es*x+es^2 ] 1 Reduce the element 6*es*x*y*Dy+2*es^2*x*Dx-3*es^2*y*Dy+es^3*Dx-6*y*Dx*h^2+2*es^2*h^2 by [ [ 9*y^2*Dy+3*y*h^2 , 0 , 2*x , 1 ] , %[null] , [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] , [ 3*y*Dx , -2*x , 1 , 0 ] ] result is [ -3*es^2*y*Dy+es^3*Dx+4*es^2*h^2-4*x^2*Dy*h , 1 , [ 0 , 0 , -2*x , 2*h^2 ] ] vdegree of the original = 0 vdegree of the remainder = 0 [ -3*es^2*y*Dy+es^3*Dx+4*es^2*h^2-4*x^2*Dy*h , [ Dx , 0 , -2*x , -3*y*Dy+2*h^2 ] , 0 , 1 , 0 , 0 ] [ 0 , 3 ] Processing [level,i]= [ 0 , 3 ] Strategy = 4 [ 1 , 1 ] Processing [level,i]= [ 1 , 1 ] Strategy = 4 Betti numbers are ------ [ 2 , 1 , 0 ] [seq,level,q]=[ 3 , 1 , 1 ] [ level, q = , 1 , 1 ] bases= [ [ -Dx , 1 , 2*x , 3*y*Dy-2*h^2 ] ] dr= [ Dx , -1 , -2*x , -3*y*Dy+2*h^2 ] newbases= [ [ 0 , 0 , 0 , 0 ] ] [seq,level,q]=[ 2 , 0 , 3 ] [ level, q = , 0 , 3 ] bases= [ [ 9*y^2*Dy+3*y*h^2 , 0 , 2*x , 1 ] [ -4*x^2*Dy*h , 0 , -3*y*Dy+4*h^2 , Dx ] [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] [ 3*y*Dx , -2*x , 1 , 0 ] ] dr= [ -9*y^2*Dy-3*y*h^2 , 0 , -2*x , -1 ] newbases= [ [ 0 , 0 , 0 , 0 ] [ -9*y^2*Dx*Dy-3*y*Dx*h^2-4*x^2*Dy*h , 0 , -2*x*Dx-3*y*Dy+2*h^2 , 0 ] [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] [ 3*y*Dx , -2*x , 1 , 0 ] ] [seq,level,q]=[ 1 , 0 , 2 ] [ level, q = , 0 , 2 ] bases= [ [ 0 , 0 , 0 , 0 ] [ -9*y^2*Dx*Dy-3*y*Dx*h^2-4*x^2*Dy*h , 0 , -2*x*Dx-3*y*Dy+2*h^2 , 0 ] [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] [ 3*y*Dx , -2*x , 1 , 0 ] ] dr= [ -3*y*Dx , 2*x , -1 , 0 ] newbases= [ [ 0 , 0 , 0 , 0 ] [ 6*x*y*Dx^2-4*x^2*Dy*h , -4*x^2*Dx-6*x*y*Dy , 0 , 0 ] [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy , 0 , 0 ] [ 0 , 0 , 0 , 0 ] ] [ level= , 0 ] [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] ] [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] ] [ level= , 1 ] [ [ 0 , 0 , 0 , 0 ] [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy , 0 , 0 ] [ 0 , 0 , 0 , 0 ] ] [ [ 0 , 0 ] [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy ] [ 0 , 0 ] ] [ level= , 2 ] [ [ 0 , 0 , 0 , 0 ] ] [ [ 0 , 0 , 0 ] ] ------------ Note ----------------------------- To get shift vectors, use Reparse and SgetShifts(resmat,w) To get initial of the complex, use Reparse and Sinit_w(resmat,w) 0: minimal resolution, 3: Schreyer resolution ------------ Resolution Summary -------------- Betti numbers : [ 2 , 1 ] Betti numbers of the Schreyer frame: [ 4 , 4 , 1 ] ----------------------------------------------- In(4)=sm1_pmat(a); [ [ [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] ] [ [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy ] ] ] [ [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] ] [ [ 0 , 0 ] [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy ] [ 0 , 0 ] ] [ [ 0 , 0 , 0 ] ] ] [ [ [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] [ 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h ] [ 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h ] ] [ [ 0 , 0 , 0 , 0 ] [ 6*x*y*Dx^2-4*x^2*Dy*h , -4*x^2*Dx-6*x*y*Dy , 0 , 0 ] [ -3*y*Dx^2+2*x*Dy*h , 2*x*Dx+3*y*Dy , 0 , 0 ] [ 0 , 0 , 0 , 0 ] ] [ [ 0 , 0 , 0 , 0 ] ] ] [ [ 0 , 0 , 1 , 2 ] [ 0 , 3 , 0 , 0 ] [ 0 ] ] [ [ %[null] , %[null] , [ -3*y*Dx , 2*x , -1 , 0 ] , [ -9*y^2*Dy-3*y*h^2 , 0 , -2*x , -1 ] ] [ %[null] , [ Dx , -1 , -2*x , -3*y*Dy+2*h^2 ] , %[null] , %[null] ] [ %[null] ] ] [ 1 , 4 , 4 , 1 ] [ [ 0 , 0 , 1 , 2 ] [ 0 , 3 , %[null] , 0 ] [ 0 ] ] ] [ [ [ -2*x*Dx-3*y*Dy+h^2 ] [ -3*y*Dx^2+2*x*Dy*h ] [ 9*y^2*Dx*Dy+3*y*Dx*h^2+4*x^2*Dy*h ] [ 27*y^3*Dy^2+27*y^2*Dy*h^2-3*y*h^4-8*x^3*Dy*h ] ] [ [ 9*y^2*Dy+3*y*h^2 , 0 , 2*x , 1 ] [ -4*x^2*Dy*h , 0 , -3*y*Dy+4*h^2 , Dx ] [ 2*x*Dy*h , 3*y*Dy-2*h^2 , Dx , 0 ] [ 3*y*Dx , -2*x , 1 , 0 ] ] [ [ -Dx , 1 , 2*x , 3*y*Dy-2*h^2 ] ] ] [ [ [ [ -9*y^2*Dy , 0 , 2*x , 0 ] [ 0 , 0 , -3*y*Dy , Dx ] [ 0 , -3*y*Dy , Dx , 0 ] [ -3*y*Dx , 2*x , 0 , 0 ] ] [ [ -Dx , 0 , 0 , 3*y*Dy ] ] [ ] ] [ [ -2*x*Dx , -3*y*Dx^2 , -9*y^2*Dx*Dy , -27*y^3*Dy^2 ] [ -9*y^2*Dy , -3*es^2*y*Dy , -3*es*y*Dy , -3*y*Dx ] [ -Dx ] ] [ [ ] [ [ [ 0 , 2 ] [ -9*y^2*Dy , 2*x ] ] [ [ 2 , 3 ] [ -3*y*Dy , Dx ] ] [ [ 1 , 2 ] [ -3*y*Dy , Dx ] ] [ [ 0 , 1 ] [ -3*y*Dx , 2*x ] ] ] [ [ [ 0 , 3 ] [ -Dx , 3*y*Dy ] ] ] [ ] ] [ [ -2*x*Dx-3*y*Dy+h^2 , -3*y*Dx^2+2*x*Dy*h , -9*y^2*Dx*Dy-3*y*Dx*h^2-4*x^2*Dy*h , -27*y^3*Dy^2-27*y^2*Dy*h^2+3*y*h^4+8*x^3*Dy*h ] ] ] ] In(5)=