Skip to content

Instantly share code, notes, and snippets.

@Skyb0rg007
Created December 3, 2021 22:54
Show Gist options
  • Save Skyb0rg007/6c68ab42c5098e1563054bb1feef3d44 to your computer and use it in GitHub Desktop.
Save Skyb0rg007/6c68ab42c5098e1563054bb1feef3d44 to your computer and use it in GitHub Desktop.
From Coq Require Import Program.Basics.
Reserved Notation "¬ A" (at level 75, right associativity).
Notation "⊥" := Empty_set.
Notation "¬ A" := (A -> ⊥).
Axiom callcc : forall {A B : Type}, ((A -> B) -> A) -> A.
Definition LEM {P : Type} : P + ¬P :=
callcc (fun f => inl (callcc (fun p => f (inr p)))).
From Coq Require Import ZArith Znumtheory.
Definition goldbach : Type :=
forall n, n > 2 -> { ' (p, q) | prime p /\ prime q /\ p + q = n }.
Compute LEM : goldbach + ¬goldbach. (* I did it! *)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment