终止意味着正常形式的存在



我想证明终止意味着正规形式的存在。以下是我的定义:

Section Forms.
  Require Import Classical_Prop.
  Require Import Classical_Pred_Type.
  Context {A : Type}
  Variable R : A -> A -> Prop.
  Definition Inverse (Rel : A -> A -> Prop) := fun x y => Rel y x.  
  Inductive ReflexiveTransitiveClosure : Relation A A :=
  | rtc_into (x y : A) : R x y -> ReflexiveTransitiveClosure x y
  | rtc_trans (x y z : A) : R x y -> ReflexiveTransitiveClosure y z ->
                            ReflexiveTransitiveClosure x z
  | rtc_refl (x y : A) : x = y -> ReflexiveTransitiveClosure x y.
  Definition redc (x : A) := exists y, R x y.
  Definition nf (x : A) := ~(redc x).
  Definition nfo (x y : A) := ReflexiveTransitiveClosure R x y / nf y.
  Definition terminating := forall x, Acc (Inverse R) x.
  Definition normalizing := forall x, (exists y, nfo x y).
End Forms.

我想证明:

Lemma terminating_impl_normalizing (T : terminating):
  normalizing.

我已经绞尽脑汁好几个小时了,但我几乎没有任何进展。我可以显示:

Lemma terminating_not_inf_forall (T : terminating) :
  forall f : nat -> A, ~ (forall n, R (f n) (f (S n))).

我认为应该有帮助(没有经典也是如此)。

这是一个使用排除中间的证明。我重新制定了这个问题,用标准定义替换自定义定义(顺便注意,在闭包的定义中,rtc_into与其他定义是冗余的)。我还用well_founded重新配制了terminating

Require Import Classical_Prop.
Require Import Relations.
Section Forms.
  Context {A : Type} (R:relation A).
  Definition inverse := fun x y => R y x.
  Definition redc (x : A) := exists y, R x y.
  Definition nf (x : A) := ~(redc x).
  Definition nfo (x y : A) := clos_refl_trans _ R x y / nf y.
  Definition terminating := well_founded inverse. (* forall x, Acc inverse x. *)
  Definition normalizing := forall x, (exists y, nfo x y).
  Lemma terminating_impl_normalizing (T : terminating):
    normalizing.
  Proof.
    unfold normalizing.
    apply (well_founded_ind T). intros.
    destruct (classic (redc x)).
    - destruct H0 as [y H0]. pose proof (H _ H0).
      destruct H1 as [y' H1]. exists y'. unfold nfo.
      destruct H1.
      split.
      + apply rt_trans with (y:=y). apply rt_step. assumption. assumption.
      + assumption.
    - exists x. unfold nfo. split. apply rt_refl. assumption.
Qed.
End Forms.

证明不是很复杂,但这里是主要思想:

  • 使用合理的诱导
  • 由于排除中间原则,将x不正常的情况与
  • 的情况分开。
  • 如果x不是正常形式,则使用归纳假设并使用闭包的及物性来得出
  • 如果x已经处于正常状态,则完成

相关内容

最新更新