使用库中证明的结果(Coq)

时间:2017-05-19 17:48:56

标签: coq

如何使用在给定库中验证的结果?例如,我想使用库Lemma peano_ind中的BinInt。我在CoqIDE中写道:

Require Import BinInt.
Check peano_ind.

并获得"当前未找到参考peano_ind 。环境#&34;错误。在证明期间,我也无法将其与apply一起使用。

然而,它应该存在,因为使用Locate Library BinInt.我看到Coq可以找到文件BinInt.vo,当我打开文件BinInt.v时,我可以看到Lemma peano_ind

我在Debian 9.0 + CoqIDE 8.5pl2和Windows 10 + CoqIDE 8.6上都存在这个问题。

所有这一切都是因为我想对整数进行归纳。一个不同的解决方案也很不错,但我仍然因为缺乏使用以前证明的结果的能力而感到沮丧。

1 个答案:

答案 0 :(得分:5)

BinInt库在不同子模块中有不同类型的几个 peano_ind定义之一。您可以使用Locate peano_ind找到这些:

Constant Coq.NArith.BinNat.N.peano_ind
  (shorter name to refer to it in current context is BinNat.N.peano_ind)
Constant Coq.PArith.BinPos.Pos.peano_ind
  (shorter name to refer to it in current context is Pos.peano_ind)
Constant Coq.ZArith.BinInt.Z.peano_ind
  (shorter name to refer to it in current context is Z.peano_ind)

然后您可以使用这些限定名称,例如:

Check Z.peano_ind.
Z.peano_ind
     : forall P : Z -> Prop,
       P 0%Z ->
       (forall x : Z, P x -> P (Z.succ x)) ->
       (forall x : Z, P x -> P (Z.pred x)) -> forall z : Z, P z

您也可以Import Z允许使用非限定名称peano_ind