原です。

 > 原です。

>児玉さんのPolynomialでも私のPolynomialでもZp係数多項式環は、ほぼきれい
>に実装できていると思うのだけど。
>
>代数関数体もいけるでしょう。やってみましょうか。

と言ってみたものの結構大変でした。おかげで新バージョンでは多変数多項式環を
1変数の多項式環の合成で作れるようになりました。

こんな感じです。

#z/13の計算

   Z13 = ResidueClassRing.create(13)

   a, b, c, d, e, f, g = Z13
   p [e + c, e - c, e * c, e * 2001, 3 + c, 1/c, 1/c * c,
     d / d, b * 1 / b] #=> [6, 2, 8, 9, 5, 7, 1, 1, 1]

   p( (1...13).collect{|i|  Z13[i]**12} )
           #=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

   require 'polynomial'

#Z/13の代数拡大F
   x = Polynomial.var("x", Z13)
   F = ResidueClassRing.create(x**2 + x + 1, Z13)
   x = F[x]
   p( (x + 1)**100 )    #=> -x + 12

#F上の多項式環  
   y = Polynomial.var("y", F)
   p( (x + y + 1)** 7 )
     #=> y^7 + (7x + 7)y^6 + 8xy^5 + 4y^4 + (4x + 4)y^3 + 5xy^2 + 7y + x + 1

#Fの代数拡大
   G = ResidueClassRing.create(y**5 + x*y + 1, F)
   y = G[y]

   p( (x + y + 1)**7 )
     #=> 4y^4 + (3x + 4)y^3 + (5x + 6)y^2 + (x + 8)y + 6x + 1


この仕様は好き嫌いがあるかも。

#新しいバージョンでは Polynomial.var が Polynomial.vars に改名され
#ました。varは変数1個の生成になります。(^^;