原です。

>(特に数学的)オブジェクトで,
>抽象的クラスで初期化したオブジェクトが破壊的メソッドの適用などによって,
>そのサブクラスのオブジェクトの性質を持つときがあります.
>
>そのとき,サブクラスのオブジェクトに dup して自己を置き換えるという
>操作をしたくないこともあります(インスタンス変数をたくさん抱えてるときなど).
>
>このような場合にクラスが移行するしかけがあると便利だと思います.

まさにそういう事を簡単にかつコストを抑えてやりたくて、cast 云々という
話になったわけです。

>それともこういう要求が出るのはクラスの設計が悪かったということでしょうか.

でも先の先まで考えてクラスの設計をしなくてはならないとなると、
簡単な計算でもいつまでたっても始まらないってことになりそう。

>例: 多変数多項式 -(変数の割算などによる消去) -> 一変数多項式

うん、ありますねえ。みなさん同じところで引っかかっていらっしゃる。
数学的対象をオブジェクト指向的に捉える技法の集積って、どこかに無
いですかね。