我正在尝试在 haskell 中对线性反馈移位寄存器进行建模。这些可以通过有限域上的多项式来建模,因此我使用 numeric-prelude 来获取比正常 prelude 中的类型更接近数学代数结构的类型类。
我绝不是抽象代数方面的专家,所以我对 IntegralDomain 类型类有点困惑。问题是我的抽象代数书(Charles C. Pinter 的抽象代数书)和类型类似乎相互冲突。
根据这本书,积分域上的多项式环本身就是一个积分域。另外,域上的多项式环只是一个积分域,但具有除法算法所具有的特殊(提到了它是特殊的事实)属性。
也就是说,如果 F[x] 是域上的多项式,则对于 F[x] 中的 a 和 F[x] 中的 b!=0,F[x] 中存在 q,r 使得 b *q+r=a,且r的次数小于b的次数。
事实上,这个属性对于域上的多项式来说是特殊的,对我来说意味着它不适用任何积分域。
另一方面,根据数字前奏的类型类别,域上的多项式(即 ZeroTestable)也是一个 IntegraldDomain。但根据文档,积分域有几个定律,其中之一是:
(a `div` b) * b + (a `mod` b) === a
这对我来说看起来像除法算法,但是除法算法在任何积分域中都是正确的,包括积分域上的多项式与我的书相矛盾。还值得注意的是,积分域上的 Polynomail 在 numeric-prelude 中没有 IntegralDomain 的实例(至少我可以看到,事实上每个类型类都简单地称为 C,这使得文档有点难以理解)读)。那么也许数字前奏中的 IntegralDomain 是一个具有除法算法所具有的额外属性的积分域?
那么 numeric-prelude 中的 IntegralDomain 真的是一个积分域吗?
橡皮鸭调试后脚本:在编写这个问题时,我得到了部分可能解释的想法。是不是要求“r的次数小于b的次数”。这有什么不同吗?该要求不在 numeric-prelude IntegralDomain 中。话又说回来,其他一些法律可能暗示着这个事实......
最佳答案
According to the book, a polynomial over an integral domain, is itself an integral domain.
这句话的措辞不正确。积分域上的多项式环又是一个积分域。
域上的一个不定多项式的环甚至是一个主要理想域,正如除法算法所证明的那样,因为每个 0 次多项式都是一个单位。
在一般积分域 R 中,您有非零非单位,如果 a
是 1,那么您不能写
X = q*a + r
r
的次数小于 a
的次数(即 0)。
Is it the requirement that "the degree of
r
is less than that ofb
." which makes the whole difference?
正是如此。该要求保证除法算法终止。在一般积分域中,您可以对任何固定环元素取模的余数进行“规范”选择,但规范余数不需要以任何有意义的方式“更小”,因此使用除法算法的尝试不需要终止。/p>
Then again, some of the other laws might imply this fact
Algebra.IntegralDomain
中的任何定律都没有暗示这一点。
法律
(a+k*b) `mod` b === a `mod` b
我相信,很难实现完全通用的积分域,这可能会在一定程度上限制实际实例,但对于像 Z[X]
或 R[X,Y ]
不是 PID,可以有一个实例。
关于math - `IntegralDomain`中的 `numeric-prelude`真的是一个积分域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17811954/