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

poc*_*nha 5 coq

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

Require Import BinInt.
Check peano_ind.
Run Code Online (Sandbox Code Playgroud)

并获得"在当前环境中找不到参考peano_ind".错误.我也无法apply在证明期间使用它.

但是,它应该在那里,因为Locate Library BinInt.我看到Coq可以找到文件BinInt.vo,当我打开文件BinInt.v时我可以看到Lemma peano_ind.

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


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

Isa*_*bie 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)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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