Complex と Rational では、Unify が定義された場合、可能なら整数等に正規
化する、という仕組があります。ギリギリですが、この機能をこのまま残して
いいのか確認したいです。

この機能は、殆ど mathn 専用です (あちこちで勝手につかわれても困る)。組
み込みのクラスが、添付ライブラリのために特別な配慮をこういう形でする、
というのはかなり変っていると思います。

まず、正式な仕様なのか裏技なのか、説明のし難いものが存在すること事態が
望ましくありません。

たいした負担ではありませんが、正規化するしないにかかわらず、計算の度に
正規化するしないの検査をしなければならないのも気持わるいです。

この件は以前から気になっていましたが、当面は動かせないと諦めていました。
しかし、この間の ** の定義の件で、ruby 側で対処しなくていいじゃない、と
いう意見から疑問に思いはじめました (納得しているわけではない)。何故これ
程に mathn に特別な配慮が必要なのでしょう。

これが許されるならば、Integer::TrueDiv を定義すると 1 / 3 で Rational
が返る、なんてこともできそうです。