(** * Formal Undecidability *)
Inductive dec {X} (P : X -> Prop) : Prop := is_dec (H : forall x, { P x} + {~ P x}).
Notation compl P := (fun x => ~ P x).
Notation "Q ⪯T P" := (dec (P) -> dec (Q)) (at level 20).

(* Specifications: *)
Lemma red_turing X Y (P : X -> Prop) (Q : Y -> Prop) : P ⪯ Q -> P ⪯T Q.
Inductive undec : forall X, (X -> Prop) -> Prop :=
undec_seed : undec PCP
| undec_red X (P : X -> Prop) Y (Q : Y -> Prop) : Q ⪯T P -> undec Q -> undec P.