Section DNE_IMP. Variables p: Prop. Hypothesis DNE: ~ ~ p -> p . Hypothesis DNE2: ~ ~ (p \/ ~p) -> (p \/ ~p) . Definition DNE_implies_LEM: p \/ ~ p := DNE2 (fun H1: ~(p \/ ~p) => H1 (@or_intror p (~p) (fun H2: p => H1 (@or_introl p (~p) H2)))) . End DNE_IMP. Section Peirce_DNE. Variables p q: Prop. Hypothesis Peirce: ((p->q)->p)->p . Hypothesis Peirce2: ((p-> False)->p)->p . Definition absurd (P: Prop) (h: False): P := match h with end . Check absurd. Definition Peirce_implies_DNE: ~~p -> p := fun H1: ~~p => Peirce2 (fun H2: ~p => absurd p (H1 H2)) . End Peirce_DNE.