Notation Decb X := (dec2bool (Dec X)).

(* Specifications: *)
Lemma Dec_reflect_eq (X Y: Prop) (d: dec X) (e: dec Y) : Decb X = Decb Y <-> (X <-> Y).
Lemma Dec_auto (X: Prop) (d: dec X) : X -> Dec X.
Lemma Dec_auto_not (X: Prop) (d: dec X) : ~ X -> ~ Dec X.
Lemma Dec_true P {H : dec P} : dec2bool (Dec P) = true -> P.
Lemma Dec_false P {H : dec P} : dec2bool (Dec P) = false -> ~P.
Lemma dec_DN X : dec X -> ~~ X -> X.
Lemma dec_DM_and X Y : dec X -> dec Y -> ~ (X /\ Y) -> ~ X \/ ~ Y.
Lemma dec_DM_impl X Y : dec X -> dec Y -> ~ (X -> Y) -> X /\ ~ Y.
Lemma Dec_reflect_eq (X Y: Prop) (d: dec X) (e: dec Y) : Decb X = Decb Y <-> (X <-> Y).
Lemma Dec_auto (X: Prop) (d: dec X) : X -> Dec X.
Lemma Dec_auto_not (X: Prop) (d: dec X) : ~ X -> ~ Dec X.
Lemma Dec_true P {H : dec P} : dec2bool (Dec P) = true -> P.
Lemma Dec_false P {H : dec P} : dec2bool (Dec P) = false -> ~P.
Lemma dec_DN X : dec X -> ~~ X -> X.
Lemma dec_DM_and X Y : dec X -> dec Y -> ~ (X /\ Y) -> ~ X \/ ~ Y.
Lemma dec_DM_impl X Y : dec X -> dec Y -> ~ (X -> Y) -> X /\ ~ Y.