Definition BoolP := forall C:Prop, C -> C -> C.Definition TrueP : BoolP := fun C c1 c2 => c1.Definition FalseP : BoolP := fun C c1 c2 => c2.Definition BoolP_elim C c1 c2 (b:BoolP) := b C c1 c2.Definition BoolP_elim_redl (C:Prop) (c1 c2:C) :
    c1 = BoolP_elim C c1 c2 TrueP := eq_refl c1.Definition BoolP_elim_redr (C:Prop) (c1 c2:C) :
    c2 = BoolP_elim C c1 c2 FalseP := eq_refl c2.Definition BoolP_dep_induction :=
    forall P:BoolP -> Prop, P TrueP -> P FalseP -> forall b:BoolP, P b.

(* Specifications: *)
Lemma ext_prop_dep_proof_irrel_cc : prop_extensionality -> BoolP_dep_induction -> proof_irrelevance.