(* Classical reasoning becomes directly accessible for any bool subgoal.      *)
(* Note that we cannot use "unless" here for lack of universe polymorphism.   *)
Definition classically P : Prop := forall b : bool, (P -> b) -> b.

(* Specifications: *)
Lemma classicP (P : Prop) : classically P <-> ~ ~ P.
Lemma classicW P : P -> classically P.
Lemma classic_bind P Q : (P -> classically Q) -> classically P -> classically Q.
Lemma classic_EM P : classically (decidable P).
Lemma classic_pick T P : classically ({x : T | P x} + (forall x, ~ P x)).
Lemma classic_imply P Q : (P -> classically Q) -> classically (P -> Q).