Admitted. (* Prop *)
Fixpoint forallb {X : Type} (test : X -> bool) (l : list X) : bool :=
match l with
| [] => true
| x :: l' => andb (test x) (forallb test l')
end.
Definition excluded_middle := forall P : Prop,
P \/ ~ P.

(* Specifications: *)
Theorem restricted_excluded_middle : forall P b,
(P <-> b = true) -> P \/ ~ P.