证明关系不充分

时间:2018-08-14 20:46:05

标签: coq

回想一下Coq库中一个有充分根据的关系的定义:

Inductive Acc (A : Set) (R : A -> A -> Prop) (x : A) : Prop :=
  Acc_intro : (forall y : A, R y x -> Acc A R y) -> Acc A R x.

Definition well_founded (A : Set) (R : A -> A -> Prop) :=
  forall x : A, Acc A R x.

换句话说,如果元素y的所有前身x都可以访问,那么x也可以访问。该Coq定义接受所有常见的数学依据,例如自然数上的严格顺序<

但是,在Coq的意义上,我们如何证明对有符号整数的严格排序没有充分根据?作为否定的建设性证明,我们将从矛盾的假设开始,即有符号整数的顺序是有充分根据的。这意味着所有带符号的整数都是可访问的。矛盾在哪里? Acc_intro对此感到满意。

但是,如果我们公认为有符号整数的顺序是有充分根据的,我们将能够在它们上递归定义一个函数。该函数的计算将是一个无限循环,这似乎破坏了Coq逻辑的一致性。

我在某个地方犯了错误吗?

1 个答案:

答案 0 :(得分:3)

如果<基于整数,则以下函数将终止:

f : Z -> False
f x = f (x - 1)

因此,f 0将产生False的证明。我们可以在Coq中将这种说法形式化:

Require Import Coq.ZArith.ZArith.

Lemma Z_lt_not_well_founded : ~ well_founded Z.lt.
Proof.
intros Hwf.
exact (Fix Hwf (fun _ => False) (fun x IH => IH (Z.pred x) (Z.lt_pred_l x)) 0%Z).
Qed.