Definition Omega := omega omega.Definition D: term := lambda (omega omega).(** ** Evaluation relation *)

Inductive evaluates : term -> term -> Prop :=
  evaluates_lam s : evaluates (lambda s) (lambda s)
| evaluates_app s t u v w : evaluates s (lambda u) -> evaluates t v -> evaluates (subst u 0 v) w ->
                            evaluates (s t) w.(** ** Evaluation relation *)

Inductive evaluates : term -> term -> Prop :=
  evaluates_lam s : evaluates (lambda s) (lambda s)
| evaluates_app s t u v w : evaluates s (lambda u) -> evaluates t v -> evaluates (subst u 0 v) w ->
                            evaluates (s t) w.(** ** Evaluation relation *)

Inductive evaluates : term -> term -> Prop :=
  evaluates_lam s : evaluates (lambda s) (lambda s)
| evaluates_app s t u v w : evaluates s (lambda u) -> evaluates t v -> evaluates (subst u 0 v) w ->
                            evaluates (s t) w.Definition eva s := exists t, evaluates s t.

(* Specifications: *)
Lemma bound_subst s t k : bound (S k) s = true -> bound k t = true -> bound k (subst s k t) = true.
Lemma app_eva s t : eva (s t) -> eva s /\ eva t.
Lemma F_eva s t : eva (F s t) <-> eva s /\ eva t.
Lemma eva_Omega : ~ eva Omega.
Lemma eva_D s : ~ eva (D s).