グレブナ基底

まず

load(groebner);
してgroebner パッケージをロードします。

VARS:[r1,r2,r3,f1,f2,f3];
などとして関係する変数を列挙します。と同時に、グレブナ基底の計算の際に特別の意味を持つ、変数の順序を決定します。

あとは, $L$ にイデアルの生成元のリストを定義して、

poly_grobner(L,VARS);
とやれば、Lで生成されるイデアルのグレブナ基底が基底が求まります。

ちょっと続けてみましょう。

B:poly_grobner(L,VARS);
poly_normal_form(f,B,VARS);
とやれば、Lで生成されるイデアルのグレブナ基底が基底を Bと置いて、 $B$ に関して $f$ を「割ったあまり」が poly_normal_form として求まります。 (おそらく計算上の制約から)poly_normal_form は定数倍を除いてしか正しくないようですから注意が必要です。