いけがみです.

体や環を表現する上で,is_zero? とか is_identity? があればいいなと
僕も思います.
児玉さんが言うように 0,1 を同一視できるのなら,
そちらのほうがもっと綺麗だと思います.

> そこで, 四則演算のときに, 整数の 1, 0 を 
> 環の 1元, 0元 と同一視するのが現実的なようです.
このような同一視が ruby で表現可能でしょうか?
どのようにしたらいいだろう…

例えば有限体のクラスが ruby で書けたとします.
有限体の元を成分とする行列を,付属の Matrix クラスをつかって表現するとき,
rankなどのメソッドでは,「足し引きして'0'か?」 ということを使ってるので
有限体の零元 == 0 でないと困るのです.
もっとも Numeric クラスには zero? がありますから,
Matrix クラスのメソッドで 0 と比較している部分を
全部 zero? に置き換えれば同一視は必要ないのですが…

全てのプログラマに,「0と比較するときは zero? をつかうこと」を強要するのは
おかしいと思いますから,やはり同一視のほうがありがたいと思います.

単位元のほうは Numeric クラスに用意されてないので,
1 と同一視するという方法か,Numeric クラスに identity? を追加するか,
どちらか(もしくは別の方法?)でしょうか.
そうそう,スペルは長いですけど僕は単位元を呼ぶのに one よりは identity の
ほうが好きです.(one はいろんな意味を持ちすぎると思います)

有限体のクラスがあればいいなー,いいなーと僕は強く思っている人で,
自分でも時間をみつけては挑戦しているのですが,まだできていません.
素体 Zp=Z/pZ は簡単に実装できるんですけど,
Zp係数多項式 modulo 環 Zp[X]/(f(x)) の実装でつまずいています.
児玉さんの Polynomial クラスを使えば簡単に作れそうですか?
--
池上 大介
Daisuke IKEGAMI <daisu-ik / is.aist-nara.ac.jp>
奈良先端科学技術大学院大学 情報科学研究科
情報処理学専攻 情報基礎学講座 関研究室