/* SSWork/yacc/debug/ahg.k /* cf. debug/toric0.k */ /* toric の generator を求める関数. A-hypergeometric の indicial ideal を求める関数. This program is buggy. */ ShimomuraSpecial = true ; Vvv = false; SetRingVariables_Verbose = false; def void QuietKan() { sm1(" [(KanGBmessage) 0] system_variable "); } def testhg1() { a = [[1,1,1,1,1,1], [0,0,0,1,1,1], [0,1,0,0,1,0], [0,0,1,0,0,1]]; return(idhg(a)); } def testhg2() { a = [[1,1,1,1,1], [0,2,3,4,3], [0,1,1,0,2]]; return(idhg(a)); } def idhg(a) { local a,ans,rd,i,ans2,ans3,n,ff,d; ans = toric(a); if (ShimomuraSpecial) { if (Vvv) {Println("-------- S-special ---------");} ans = Map(ans,"Init"); } ans = Map(ans,"ToString"); if (Vvv) {Println(ans);} rd = RingDonIndexedVariables("z",Length(a[0])+1+Length(a)); ans = Map(ans,"Poly"); n = Length(a[0]); d = Length(a); ans2 = NewArray(Length(ans)); PSfor (i=0; i< Length(ans); i++) { ans2[i] = ztoDz(ans[i],n); } if (Vvv) {Println(ans2);} ans3 = atolin(a); if (Vvv) {Println(ans3);} ff = Map(Join(ans2,ans3),"ToString"); ans = zindicial(ff,n,d); return(ans); } def toric0_toMonom(aa,i,offset, ring) { local j,ans,m; m = Length(aa); ans = PolyR("1",ring); for (j=0; j