(* A property P is decidable if we can show the proposition P \/ ~P. *)
Definition decidable (P : Prop) := (P \/ ~ P).

(* Specifications: *)
Lemma typing_c_decidable : forall E e, lc_c e -> uniq E -> decidable (exists T, typing_c E e T).
Lemma typing_weakening_strengthened : forall E F G e T, typing (G ++ E) e T -> uniq (G ++ F ++ E) -> typing (G ++ F ++ E) e T.
Lemma typing_c_decidable : forall E e, lc_c e -> uniq E -> decidable (exists T, typing_c E e T).
Lemma typing_weakening_strengthened : forall E F G e T, typing (G ++ E) e T -> uniq (G ++ F ++ E) -> typing (G ++ F ++ E) e T.