Coq:在校对脚本编写期间查看证明术语

jmi*_*ite 3 termination theorem-proving coq dependent-type ltac

所以,我有一个看起来像这样的证据:

induction t; intros; inversion H ; crush.
Run Code Online (Sandbox Code Playgroud)

它解决了我的所有目标,但是当我这样做时Qed,我收到以下错误:

Cannot guess decreasing argument of fix.

因此,在生成的证明术语的某处,存在非有根据的递归.问题是,我不知道在哪里.

有没有办法调试这种错误,或者看到战术脚本生成的(可能是非暂停的)证明术语?

Tej*_*jed 5

您可以使用它Show Proof.来查看到目前为止的证明术语.

另一个可以帮助查看递归错误的命令是Guarded.,到目前为止,它在证明项上运行终止检查器.但是,您需要将策略脚本拆分为独立的句子才能使用它.这是一个例子:

Fixpoint f (n:nat) :  nat.
Proof.
  apply plus.
  exact (f n).
  Guarded.
(* fails with:
   Error:
   Recursive definition of f is ill-formed.
   ...
 *)
Defined.
Run Code Online (Sandbox Code Playgroud)