Skip to content

Instantly share code, notes, and snippets.

@clayrat
Created August 20, 2022 19:47
Show Gist options
  • Save clayrat/852f29f89edac7799a93606f18d47ec8 to your computer and use it in GitHub Desktop.
Save clayrat/852f29f89edac7799a93606f18d47ec8 to your computer and use it in GitHub Desktop.
indefinite description equivalent to simple description
(* https://coq.discourse.group/t/indefinite-description-axiom-could-be-simpler/1764 *)
From Coq Require Import ssreflect ssrbool ssrfun.
Definition indefinite_description :=
forall (A : Type) (P : A->Prop), ex P -> sig P.
Definition simple_description :=
forall (A : Type), inhabited A -> A.
Proposition simple_description_implies_indefinite_description :
simple_description -> indefinite_description.
Proof.
move=>H A P Hx.
by apply: H; case: Hx=>x Px; constructor; exists x.
Qed.
Proposition indefinite_description_implies_simple_description :
indefinite_description -> simple_description.
Proof.
move=>H A Ha.
apply: (proj1_sig (P:=fun=>True)).
by apply: H; case: Ha=>a; exists a.
Qed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment