scala> import basic._ import basic._ val f13_1_grevlex = Poly(Seq( (Mono(Seq(5,0,0))(grevlex), Q(1,1)), (Mono(Seq(0,4,0))(grevlex), Q(1,1)), (Mono(Seq(0,0,3))(grevlex), Q(1,1)), (Mono(Seq(0,0,0))(grevlex), Q(-1,1)) ))(grevlex) //> f13_1_grevlex : basic.Poly = x^5 + y^4 + z^3 + -1 val f13_2_grevlex = Poly(Seq( (Mono(Seq(3,0,0))(grevlex), Q(1,1)), (Mono(Seq(0,2,0))(grevlex), Q(1,1)), (Mono(Seq(0,0,2))(grevlex), Q(1,1)), (Mono(Seq(0,0,0))(grevlex), Q(-1,1)) ))(grevlex) //> f13_2_grevlex : basic.Poly = x^3 + z^2 + y^2 + -1 val buch3_base13_grevlex = Poly.reduce(Poly.buchberger(Seq(f13_1_grevlex, f13_2_grevlex))(grevlex))(grevlex) //> buch3_base13_grevlex : Seq[basic.Poly] = List( //| x^3 + z^2 + y^2 + -1, //| y^4 + -x^2z^2 + -x^2y^2 + z^3 + x^2 + -1) scala> val lex = LexOrder(List('x,'y,'z)) lex: basic.LexOrder = LexOrder(List('x, 'y, 'z)) scala> val f13_1_lex = Poly(Seq( | (Mono(Seq(5,0,0))(lex), Q(1,1)), | (Mono(Seq(0,4,0))(lex), Q(1,1)), | (Mono(Seq(0,0,3))(lex), Q(1,1)), | (Mono(Seq(0,0,0))(lex), Q(-1,1)) | ))(lex) f13_1_lex: basic.Poly = x^5 + y^4 + z^3 + -1 scala> val f13_2_lex = Poly(Seq( | (Mono(Seq(3,0,0))(lex), Q(1,1)), | (Mono(Seq(0,2,0))(lex), Q(1,1)), | (Mono(Seq(0,0,2))(lex), Q(1,1)), | (Mono(Seq(0,0,0))(lex), Q(-1,1)) | ))(lex) f13_2_lex: basic.Poly = x^3 + y^2 + z^2 + -1 scala> val buch3_base13_lex = Poly.reduce(Poly.buchberger(Seq(f13_1_lex, f13_2_lex))(lex))(lex) buch3_base13_lex: Seq[basic.Poly] = List(x^3 + y^2 + z^2 + -1, x^2y^2 + x^2z^2 + -x^2 + -y^4 + -z^3 + 1, xy^4 + xz^3 + -x + y^4 + 2y^2z^2 + -2y^2 + z^4 + -2z^2 + 1, xy^2z + -xy^2 + 273/1408xz^12 + 1011/1408xz^11 + -227/1408xz^10 + -9665/4224xz^9 + 211/704xz^8 + 85/32xz^7 + -749/528xz^6 + 1/2xz^4 + -1/2xz^3 + -xz + x + -81/1408y^14 + -459/1408y^12z^2 + -9/176y^12z + 321/704y^12 + -819/1408y^10z^4 + -273/704y^10z^3 + 1323/704y^10z^2 + 39/176y^10z + -4373/4224y^10 + 273/1408y^8z^6 + -501/352y^8z^5 + 2329/1408y^8z^4 + 8551/4224y^8z^3 + -5871/1408y^8z^2 + 13/88y^8z + 395/352y^8 + -819/704y^6z^7 + 8373/1408y^6z^6 + 3213/704y^6z^5 + -3341/176y^6z^4 + -7555/2112y^6z^3 + 1219/66y^6z^2 + 53/88y^6z + -23341/4224y^6 + 273/704y^4z^9 + 9189/1408y^4z^8 + 773/352y^4z^7 + -33823/1056y^4z^6 + -17/3y^4z^5… scala> buch3_base13_lex.length res0: Int = 7 scala> buch3_base13_lex(0) res2: basic.Poly = x^3 + y^2 + z^2 + -1 scala> buch3_base13_lex(1) res3: basic.Poly = x^2y^2 + x^2z^2 + -x^2 + -y^4 + -z^3 + 1 scala> buch3_base13_lex(2) res4: basic.Poly = xy^4 + xz^3 + -x + y^4 + 2y^2z^2 + -2y^2 + z^4 + -2z^2 + 1 scala> buch3_base13_lex(4) res5: basic.Poly = xz^11 + 4xz^10 + xz^9 + -10xz^8 + -4xz^7 + 8xz^6 + 13145211549469524099276049970825174332001934982726555617/49464457656842324243991404386798887698363025825966149632y^22 + 336469772395565067430728152218633828000517403338752050447/98928915313684648487982808773597775396726051651932299264y^20z^2 + 41246821025682957247777391063405260354876124127586033329/98928915313684648487982808773597775396726051651932299264y^20z + -186688514037649654164494156802783046785181037030518263195/49464457656842324243991404386798887698363025825966149632y^20 + 3748115348128909106405657431258725581362590226678884005481/197857830627369296975965617547195550793452103303864598528y^18z^4 + 532878767777869557858761862556643001207912197601994175895/98928915313684648487982808773597775396726051651932299264... scala> buch3_base13_lex(5) res6: basic.Poly = y^12 + -y^10 + 3y^8z^3 + -5y^8z^2 + 2y^8 + -10y^6z^4 + 20y^6z^2 + -10y^6 + -7y^4z^6 + 30y^4z^4 + -6y^4z^3 + -30y^4z^2 + 13y^4 + -5y^2z^8 + 20y^2z^6 + -30y^2z^4 + 20y^2z^2 + -5y^2 + -z^10 + z^9 + 5z^8 + -13z^6 + 10z^4 + 3z^3 + -5z^2 scala> buch3_base13_lex(6) res7: basic.Poly = x^2z^4 + x^2z^3 + -2x^2z^2 + -1/6xz^10 + -2/3xz^9 + -1/4xz^8 + 7/6xz^7 + -1/12xz^6 + -xz^5 + xz^4 + 1/2y^10z^2 + 1/3y^10z + -5/12y^10 + -1/6y^8z^4 + 1/3y^8z^3 + 1/4y^8z^2 + 1/2y^8 + y^6z^5 + -5/3y^6z^4 + -17/6y^6z^3 + 17/6y^6z^2 + 2/3y^6z + -1/3y^6 + -1/3y^4z^7 + -7/2y^4z^6 + -3y^4z^5 + 131/12y^4z^4 + 23/4y^4z^3 + -13y^4z^2 + -8/3y^4z + 29/6y^4 + -17/6y^2z^8 + -4y^2z^7 + 119/12y^2z^6 + 17/2y^2z^5 + -16y^2z^4 + -14/3y^2z^3 + 12y^2z^2 + 5/3y^2z + -55/12y^2 + -7/6z^10 + -7/6z^9 + 55/12z^8 + 21/4z^7 + -31/4z^6 + -15/2z^5 + 83/12z^4 + 41/12z^3 + -31/12z^2 scala>
Personal memorandum for studying functional languages, theorem proving, and formal verification. But other topics might be included. Written in Japanese (Shift-JIS Encoding).
25 September, 2014
[IVA] Chapter 2, Section 9, Exercise 13
Exercise 13 について自作コードで試してみた。(あれからIntではなくBigIntを使う様にしてみたり、計算順序の最適化を実施したりなど。sugerや斉次化はまだ未実装。)
が、色々やばいですね、lexでの計算。grevlexなら簡単に終わるのに。
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment