为这个问题做一点准备:符号`_i
被定义为序列的第 i 个分量,但也意味着多项式的第 i 个系数。以下代码输出Negz 2 : int_ZmodType
:
From mathcomp Require Import all_ssreflect.
From mathcomp Require Import all_algebra.
Open Scope ring_scope.
Definition my_seq := [:: Posz 4; Negz 2].
Eval compute in my_seq`_1.
的类型my_seq
是seq int
。该类型int
具有构造函数Posz
和Negz
.
https://github.com/math-comp/math-comp/blob/master/mathcomp/algebra/poly.v的标题
告诉我们这Poly s
是一个带有来自序列的系数的多项式s
。它还说这p`_i
是多项式的第 i 个系数p
。我希望输出以下代码Negz 2
:
Definition my_polynomial := Poly my_seq.
Eval compute in my_polynomial`_1.
结果项不是Negz 2
,尽管它确实有类型int_Ring
。多项式有一个序列构造函数polyseq
。确实, 的类型polyseq my_polynomial
是seq int_Ring
。然而,做Eval compute in (polyseq my_polynomial)`_1.
同样的事情。
在从具体类型转换int
到int_Ring
的过程中,整数的值是否丢失了?int
或者,有没有办法从a 中恢复 a 的值int_Ring
?方式int_Ring
是打包的,看起来不太可能,因为构造函数不引用元素。但是,同样可以这样说int_ZmodType
。作为参考,这些类型定义在
https://github.com/math-comp/math-comp/blob/master/mathcomp/algebra/ssralg.v