Haskell で線形フィードバック シフト レジスタをモデル化しようとしています。これらは有限体上の多項式によってモデル化できるので、numeric-prelude を使用して、通常の prelude よりも数学的代数構造に近い型クラスを取得しています。
私は抽象代数の専門家ではないので、IntegralDomain
型クラスについて少し混乱しています。問題は、抽象代数に関する私の本 (Charles C. Pinter による抽象代数の本) と型クラスが互いに競合しているように見えることです。
この本によると、整数領域上の多項式の環は、それ自体が整数領域です。また、体上の多項式の環は整域にすぎませんが、除算アルゴリズムが持つ特別な (特別であるという事実が言及されています) 性質を持っています。
つまり、F[x] が体上の多項式である場合、F[x] 内の a と F[x] 内の b!=0 に対して、F[x] 内に b*q+ を満たす q,r が存在します。 r=a であり、r の次数は b の次数よりも小さい。
この性質が体上の多項式に特有であるという事実は、私にとって、それがどの整数領域にも当てはまらないことを意味します。
一方、数値プレリュードの型クラスによると、フィールド上の多項式 (つまり、zeroTestable) も IntegraldDomain です。しかし、ドキュメントによると、integralDomains にはいくつかの法則があり、そのうちの 1 つが次のとおりです。
(a `div` b) * b + (a `mod` b) === a
これは私には除算アルゴリズムのように見えますが、除算アルゴリズムは、整数領域上の多項式を含む、任意の整数領域で真です。私の本は矛盾しています。また、整数ドメイン上の polynomail には、numeric-prelude の IntegralDomain のインスタンスがないことも注目に値します (少なくとも、すべての型クラスが単に C と呼ばれるという事実はわかりません。ドキュメントを作成するのが少し難しくなります)。読んだ)。では、数値プレリュードの IntegralDomain は、除算アルゴリズムが保持する追加のプロパティを持つ整数ドメインである可能性があります。
では、numeric-prelude の IntegralDomain は本当に整数ドメインなのでしょうか?
ゴム製のアヒルのデバッグ ポスト スクリプト: この質問を書いているときに、考えられる説明の一部についてアイデアを得ました。「rの次数がbの次数よりも小さい」という要件ですか。全体の違いはどれですか?その要件は、数値プレリュードの IntegralDomain にはありません。繰り返しになりますが、他の法律のいくつかは、この事実を暗示している可能性があります...