我正在尝试在haskell中建模线性反馈移位寄存器。这些可以通过有限域上的多项式建模,因此我使用数字前导来获得类似于数学代数结构的类型类,而不是正常前奏中的类型。
我绝不是抽象代数方面的专家,所以我对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。但根据文档,有几个有关integralDomains的定律,其中一个是:
(a `div` b) * b + (a `mod` b) === a
这对我来说看起来像是除法算法,但是然后除法算法在任何积分域中都是正确的,包括我的书中与积分域相矛盾的多项式。值得注意的是,整数域上的polynomail在数字前奏中没有IntegralDomain的实例(至少我不能看到,每个类型类简称为C的事实,使文档有点难以读)。那么,数字前奏中的IntegralDomain可能是一个具有除法算法所具有的额外属性的整数域吗?
数字前置中的IntegralDomain真的是一个完整的域吗?
橡皮鸭调试帖脚本:在写这个问题时,我想到了一个可能的解释的部分原因。是否要求“r的程度小于b的程度”。哪个完全不同?该要求不在数字前奏IntegralDomain中。然后,其他一些法律可能暗示这一事实......答案 0 :(得分:3)
根据这本书,整数域上的多项式本身就是一个完整的域。
这没有正确措辞。整数域上的多项式环也是一个整数域。
在一个场上不确定的多项式环甚至是主要理想域,正如除法算法所证明的那样,因为0的每个多项式都是一个单位。
在一般的整数域R中,你有非零非单位,如果a
是1,那你就不能写
X = q*a + r
的r
度小于a
的度数(为0)。
要求“
r
的程度小于b
的程度”。哪个完全不同?
正。该要求保证了除法算法终止。在一般的积分域中,你可以选择以任何固定环元素为模的余数的“规范”选择,但规范余数不需要以任何有意义的方式“更小”,因此尝试使用除法算法不需要终止。 / p>
然后,其他一些法律可能暗示这一事实
Algebra.IntegralDomain
中的任何法律都没有暗示这一点。
法律
(a+k*b) `mod` b === a `mod` b
我认为,对于一个完全通用的整数域来说,很难实现,这可能在一定程度上限制了实际的实例,但对于像Z[X]
或R[X,Y]
这样的非PID的东西,可以实例化