Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] How strong is this deferredFix axiom?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] How strong is this deferredFix axiom?


Chronological Thread 
  • From: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] How strong is this deferredFix axiom?
  • Date: Fri, 8 Dec 2017 17:25:49 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=None smtp.helo=postmaster AT relay2-d.mail.gandi.net
  • Ironport-phdr: 9a23:5CPFsBbB1kSQZwajRisuYSf/LSx+4OfEezUN459isYplN5qZpsq9bnLW6fgltlLVR4KTs6sC0LWG9f24EUU7or+/81k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i76vnYuHUD0MhMwLeDoEKbTid623qa84c79eQJN0RW04q97KiKZrAHbu9MKyd9tI6stwx2PrXpMcelM2UtzJkOInBf548qquphu73ID6Loa68dcXPCiLOwDRrtCAWF+Pg==

Right, epsilon had that specification thing about it.
It's still equivalent, see (kinda dirty but still works) proof in attached file.

Gaëtan Gilbert

On 08/12/2017 16:50, Joachim Breitner wrote:
Dear Gaëtan,

please allow me to get back to this.

Am Mittwoch, den 06.12.2017, 21:56 +0100 schrieb Gaëtan Gilbert:
It's equivalent to epsilon.

Let A : Type. Consider the function

λ x : A + bool => match x with inl a => inl a | inr b => inr (not b)

It has a fixed point if and only if A is inhabited, but A + bool is
always inhabited (eg by inl true).

In the attached file I use this to prove epsilon from your axioms.

in your file you define

Lemma epsilon A (H : inhabited A) : A.

but that is not (as I first thought) the epsilon from
Coq.Logic.ClassicalEpsilon or Coq.Logic.Epsilon, which is

Definition epsilon (A : Type) (i:inhabited A) (P : A->Prop) : A


I see that your [epsilon] allows me to get a value out of an
[inhabited A], which is usually not allowed, but what are the
consequences of that? How does it related to the full Hilbert’s axiom?


Thanks,
Joachim

Require Import ChoiceFacts.
Require Import ClassicalFacts.

Axiom deferredFix : forall {a}, a -> (a -> a) -> a.

Axiom deferredFix_eq : forall {a} d (f : a -> a),
    (exists x, f x = x) ->
    deferredFix d f = f (deferredFix d f).

Definition pseudoFix A (x : sum A bool) : sum A bool
  := match x with
     | inl a => inl a
     | inr true => inr false
     | inr false => inr true
     end.

Lemma pseudoFix_pr A :
  match deferredFix (inr true) (pseudoFix A) with
  | inl _ => A
  | inr _ => A -> False
  end.
Proof.
  pose proof (deferredFix_eq (inr true) (pseudoFix A)) as E.
  destruct (deferredFix _ _) as [a|na].
  - exact a.
  - intros a.
    pose proof (E (ex_intro _ (inl a) eq_refl)) as E'.
    clear E;destruct na;discriminate.
Qed.

Lemma classic A : A + (A->False).
Proof.
  pose proof (pseudoFix_pr A). destruct (deferredFix _ _);auto.
Qed.

Lemma drink : SmallDrinker'sParadox.
Proof.
  hnf. intros A P [x];revert x.
  apply excluded_middle_independence_general_premises.
  red. clear A P.
  intros A B.
  destruct (classic A) as [a|na];auto.
  right;intros x;destruct (na x).
Qed.

Lemma epsilon : EpsilonStatement.
Proof.
  apply constructive_indefinite_description_and_small_drinker_imp_epsilon.
  - exact drink.
  - intros A P x.
    set (T := _).
    destruct (classic T) as [t|nt];[exact t|unfold T in *;clear T].
    apply False_rect;destruct x as [x px];apply nt;auto;exists x;trivial.
Qed.
Print Assumptions epsilon.
(* Fetching opaque proofs from disk for Coq.Logic.ChoiceFacts
Fetching opaque proofs from disk for Coq.Logic.ClassicalFacts

Axioms:
deferredFix_eq : forall (a : Type) (d : a) (f : a -> a),
                 (exists x : a, f x = x) -> deferredFix d f = f (deferredFix d f)
deferredFix : forall a : Type, a -> (a -> a) -> a
*)



Archive powered by MHonArc 2.6.18.

Top of Page