From Undecidability.L Require Import Encodings.
Implicit Types s t u v : term.
Implicit Types p q : term -> Prop.
(** * Decidable and recognisable classes *)
(** ** Definition of decidable classes *)
Definition decides u p := forall s, (p s /\ u (tenc s) ▷ T) \/ (~ p s /\ u (tenc s) ▷ F).
Definition decidable p :=
exists u, proc u /\ decides u p.

(* Specifications: *)
Lemma decidable_spec u p : decides u p -> forall s, (p s <-> u (tenc s) ▷ T) /\ (~ p s <-> u (tenc s) ▷ F).
Definition pi s t := eva (s (tenc t)).