我正在尝试在 haskell 中对线性反馈移位寄存器进行建模。这些可以通过有限域上的多项式来建模,所以我使用 numeric-prelude 来获得比普通前奏更接近数学代数结构的类型类。
我绝不是抽象代数方面的专家,所以我对IntegralDomain
类型类有点困惑。问题是我的抽象代数书(Charles C. Pinter 的抽象代数书)和类型类似乎相互冲突。
根据这本书,积分域上的多项式环本身就是一个积分域。此外,一个域上的多项式环只是一个整数域,但具有除法算法所具有的特殊(提到它是特殊的事实)属性。
也就是说,如果 F[x] 是一个域上的多项式,那么对于 F[x] 中的 a 和 F[x] 中的 b!=0,在 F[x] 中存在 q,r 使得 b*q+ r=a,r的度数小于b的度数。
对我来说,这个属性对于域上的多项式来说是特殊的,这意味着它不适用于任何整数域。
另一方面,根据 numeric prelude 的类型类别,字段上的多项式(即 zeroTestable)也是一个 IntegraldDomain。但是根据文档,积分域有几条定律,其中之一是:
(a `div` b) * b + (a `mod` b) === a
这对我来说看起来像除法算法,但是除法算法在任何积分域中都是正确的,包括我的书中的积分域矛盾上的多项式。还值得注意的是,整数域上的多项式邮件在 numeric-prelude 中没有 IntegralDomain 的实例(至少我不能看到,每个类型类都简单地称为 C 的事实,使文档有点难以读)。那么也许数字前奏中的 IntegralDomain 是一个具有除法算法所具有的额外属性的整数域?
那么 numeric-prelude 中的 IntegralDomain 真的是一个整数域吗?
橡皮鸭调试后脚本:在写这个问题时,我对可能的解释有了一个想法。是不是要求“r的度数小于b的度数”。这使得整个区别?该要求不在数字前奏 IntegralDomain 中。话又说回来,其他一些法律可能暗示了这个事实......