math - `IntegralDomain`中的 `numeric-prelude`真的是一个积分域吗?

标签 math haskell

我正在尝试在 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

http://hackage.haskell.org/packages/archive/numeric-prelude/0.4.0.1/doc/html/Algebra-IntegralDomain.html#t:C

这对我来说看起来像除法算法,但是除法算法在任何积分域中都是正确的,包括积分域上的多项式与我的书相矛盾。还值得注意的是,积分域上的 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 of b." 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/

相关文章:

algorithm - 计算 cargo 需要多少辆卡车(后续)

algorithm - 在给定的分子和分母范围内,找到 0..1 之间给定随机实数最接近的整数分数

Haskell - 输入 `|' 解析错误

即时编译算术运算序列

python - Python 中的双重求和

haskell - 如何在 Haskell 中获取小数并将其转换为数字列表?

haskell - 使用 FFI 从 OCaml 调用 haskell 代码

haskell - Haskell IO 输入帮助

haskell - 有没有一种方法可以使用 Derive 和 Template Haskell 或其他方式派生 Vinyl 记录类型的二进制实例

javascript - 检测鼠标靠近圆边缘