##見ました。PrimeField p の p が素数であることの保証を型で表現するべきかどうか面白い問題なので考えてみたいと思います。あと、どのタイミングで mod p するかもデザインに悩むところです
#そういえば、計算機代数勉強会のページに挙げた参考文献はどれも「グレブナ基底とは何か、何に使われるか」に重点をおいたので、「グレブナ基底をどのように計算するか」は抜けていました。
#同じものを昔書いた時には、型レベルで素数判定してた http://msakai.jp/d/?date=20050719#p03 のですが、今回は実行時に任意のIntegerの値から型を構築する部分での扱いが面倒だったので、省きました。 #mod p するタイミングは、計算途中でIntegerの桁数が膨れ上がるのは避けたいので、最終的に結果を得る時点まで遅延するとかいうのは避けたいですね。 書き換え規則を使って、自明に有限な回数の演算だけは遅延するように変換しても良いかも知れません。