(** ** Trivial and finite classes are decidable *)
From Undecidability.L Require Import DecidableRecognisable Enumerable.

(* Specifications: *)
Lemma decidable_ext p q : (forall x, p x <-> q x) -> decidable p -> decidable q.
Definition finite p := exists l : list term, forall x, p x <-> x el l.
Lemma decidable_finite p : finite p -> decidable p.
Lemma decidable_empty : decidable (fun x => False).
Lemma decidable_full : decidable (fun x => True).
(** ** First fixed-point theorem *)
Theorem FirstFixedPoint (s : term) :  closed s -> exists t, closed t /\ s t ≡ t.
Goal exists t, closed t /\ t ≡ (tenc t).