如何在Coq / Ssreflect中进行伪多项式除法

时间:2014-12-18 07:27:25

标签: coq ssreflect

基本上,我想在某些情况下观察伪多项式除法的结果(比如3 x ^ 2 + 2 x +1和2 x +1)。多项式之间的伪划分在Ssreflect 1.4中的polydiv.v中的edivp中实现。我希望代码应该类似于以下内容:

Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq choice fintype.
Require Import ssralg poly ssrnum zmodp polydiv interval.

Open Scope Z_scope.

Definition p := Poly [::1;2;3].

Definition q := Poly [:1;2:].

Eval compute in edivp p q.

但是,由于类型统一失败,代码停留在定义p。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我终于有时间安装ssreflect来测试你的问题。正如我们在评论中讨论的那样,您应该依赖ssreflect的整数来获取正确的规范结构实例。这是我的代码,使用ssr1.4和coq8.4pl5:

Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq choice fintype.
Require Import ssralg poly ssrnum zmodp polydiv ssrint.

Open Scope int_scope.

Definition p := Poly [:: 1%:Z;2%:Z;3%:Z].

Definition q := Poly [:: 1%:Z;2%:Z].

现在Eval compute输入正确,但其计算似乎并未终止。 我认为这是由于ssr的内部选择禁止计算。您应该直接在ssreflect的邮件列表中详细了解这一点。

希望这有帮助, 诉