(** * Definitions and theorems over boolean types *)

Definition proj_sumbool {P Q: Prop} (a: {P} + {Q}) : bool :=
  if a then true else false.

(* Specifications: *)
Lemma proj_sumbool_true: forall (P Q: Prop) (a: {P}+{Q}), proj_sumbool a = true -> P.
Lemma proj_sumbool_is_true: forall (P: Prop) (a: {P}+{~P}), P -> proj_sumbool a = true.
Lemma proj_sumbool_true: forall (P Q: Prop) (a: {P}+{Q}), proj_sumbool a = true -> P.
Lemma proj_sumbool_is_true: forall (P: Prop) (a: {P}+{~P}), P -> proj_sumbool a = true.