Skip to content

Instantly share code, notes, and snippets.

@miikka
Created January 26, 2017 19:58
Show Gist options
  • Save miikka/4d1ee1ad464ff46de9d3c01c12d2189e to your computer and use it in GitHub Desktop.
Save miikka/4d1ee1ad464ff46de9d3c01c12d2189e to your computer and use it in GitHub Desktop.
Double negation elimination
Axiom a1 : forall A B, A -> (B -> A).
Axiom a2 : forall A B, (~B -> ~A) -> (A -> B).
Theorem dne :
forall A, ~~A -> A.
Proof.
intros A P.
generalize P.
apply a2, a2, a1, P.
Qed.
Print dne.
(*
dne =
fun (A : Prop) (P : ~ ~ A) =>
a2 (~ ~ A) A
(a2 (~ A) (~ ~ ~ A)
(a1 (~ ~ A) (~ ~ ~ ~ A) P)) P
: forall A : Prop, ~ ~ A -> A
Argument scopes are [type_scope _]
*)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment