【发布时间】:2018-05-06 21:35:14
【问题描述】:
我正在编写一个固定点,该固定点需要在每次迭代时将整数“朝向”零递增。这对于 Coq 来说太复杂了,无法自动识别为递减参数,我正在尝试证明我的固定点将终止。
我一直在复制(我相信是)标准库中 Z 上的阶跃函数的一个有根据的证明示例。 (Here)
Require Import ZArith.Zwf.
Section wf_proof_wf_inc.
Variable c : Z.
Let Z_increment (z:Z) := (z + ((Z.sgn c) * (-1)))%Z.
Lemma Zwf_wf_inc : well_founded (Zwf c).
Proof.
unfold well_founded.
intros a.
Qed.
End wf_proof_wf_inc.
创建以下上下文:
c : Z
wf_inc := fun z : Z => (z + Z.sgn c * -1)%Z : Z -> Z
a : Z
============================
Acc (Zwf c) a
我的问题是这个目标实际上意味着什么?
我认为我必须为此证明的目标至少涉及我想要展示的具有“有根据的”属性“Z_increment”的阶跃函数。
我看过的最有用的解释是this,但我从未使用过它使用的列表类型,它也没有解释“可访问”等术语的含义。
【问题讨论】: