Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proving the pairing axiom

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proving the pairing axiom


Chronological Thread 
  • From: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Proving the pairing axiom
  • Date: Mon, 6 Jan 2025 13:53:06 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mukeshtiwari.iiitm AT gmail.com; spf=Pass smtp.mailfrom=mukeshtiwari.iiitm AT gmail.com; spf=None smtp.helo=postmaster AT mail-wr1-f46.google.com
  • Ironport-data: A9a23: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 tVh3pTmOHm4FQ==
  • Ironport-hdrordr: A9a23:VYzTbqhAz+PTGTuI/wzobaCaKHBQX4F23DAbv31ZSRFFG/FwyP rCoB1L73XJYWgqM03IwerwQZVpChjnhPpICPoqTM+ftWjdySCVxeRZgbcKrAeQfBEWmtQ96U 4CSdk1NDSTNykdsS+S2mDRfLgdKbK8gcOVbJLlvhJQpHZRGsNdBmlCajqzIwlTfk1rFJA5HJ 2T6o5svDy7Y0kaacy9Gz0sQ/XDj8ejruOrXTc2QzocrCWehzKh77D3VzKC2A0Fbj9JybA+tU DYjg3C4Lm5uf3T8G6S64aT1eUZpDLS8KoCOCW+sLlXFtwqsHfrWG1VYczCgNnympDr1L9lqq iJn/5qBbUJ15qYRBDOnfKq4Xis7N9m0Q6c9beV7EGT3PDRVXY0DdFMipledQac4008vMtk2K YOxG6BsYFLZCmw6hgVyuK4Iy2CrHDE1kYKgKoWlThSQIEeYLheocgW+15UCo4JGGb/5Jo8GO djAcnA7LIOGGnqJ0zxry1q2pihT34zFhCJTgwLvdGUySFfmDR8w1EDzMISk38c/NY2SoVC5e 7DLqN0/Ys+B/M+fOZ4HqMMUMG3AmvCTVbFN3+TO03uEOUdN3fEu/fMkcAIDK3AQu168LIi3J DaFF9Iv287fEzjTceH2ZFN/xjXBH+wRjTg0IVf4IJlsrr3SP7qPES4OS4Tegub0oci6+HgKo aO0chtcoPexEPVaPd04zE=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 677be04f_i/dMTey9Y4q7iuNqqyra94QO87ftBqMTK4kIir/5F9aL6vP mfvvPEpvzlWl2oLr+728UnQ3WFZeMuU9B0lSntw==

If *Prop* is replaced with *bool*, pairN can be proved (constructively) in Coq, assuming functional extentionality. 

"It seems to me the main issue is the mixing of = (as in `caract s a = True`, `In s1 a = In s2 a`) and Props; normally I would use <-> with Props. Carrying this through, I suppose the best way to make `set_eq A B` a rewritable equality would be by declaring it with the generalized mechanism (https://coq.inria.fr/doc/V8.20.0/refman/addendum/generalized-rewriting.html#)?” 

If I have to formalise something like this I will also use bi-implication for equality. However, it is also painful to make a lot of operations an instance of type classes for rewriting, e.g., see chapter 3 of [2]. I wonder if it is the reason for introducing the *prop_ext* axiom [1]?  The explanation does say, "Propositional extensional is convenient for performing rewriting. It is needed for using Hilbert's epsilon operator in practice and, in particular, to build quotient structures in the general case.” but it would be great if someone who has used *prop_ext* in their formlisation could shed more insights. 
 
Axiom prop_ext : forall (P Q : Prop),
  (P <-> Q) -> P = Q.

Regarding the phrase "I am committing a sin :-)" it was intended as a lighthearted remark for myself because it was the first time I had used a classical axiom to prove a theorem. Unfortunately, I forgot to remove it before posting.


Best, 
Mukesh 

[1] https://github.com/coq/coq/wiki/CoqAndAxioms
[2] https://www.labri.fr/perso/casteran/CoqArt/TypeClassesTut/typeclassestut.pdf


From Coq Require Import Utf8.
Require Import Coq.Logic.FunctionalExtensionality.



Section Tmp.
  Variable (object : Type).
  Variable (eq_dec : forall (x y : object), {x = y} + {x <> y}).

  Inductive N : Type :=
  | Caract : (object -> bool) -> N.

  Definition caract (s : N) (a : object) : bool :=
    let (f) := s in f a.

  Definition In (s : N) (a : object) : bool :=
    caract s a.

  Definition incl (s1 s2 : N) :=
    forall a : object, In s1 a = true -> In s2 a = true.

  Definition set_eq (s1 s2 : N) :=
    forall a : object, In s1 a = true <-> In s2 a = true.

  Definition L (a : object) : N :=
    Caract
      (fun a' : object =>
         match eq_dec a a' with
         | left _ => true
         | right _ => false
         end).

  Lemma pairN : forall (x : object) (A : N),  L x = A <-> set_eq (L x) A.
  Proof using Type.
    intros x A.
    split.
    -
      intro Ha.
      unfold set_eq.
      intro y; split.
      +
        intro Hb.
        rewrite <-Ha.
        exact Hb.
      +
        intro Hb.
        rewrite Ha.
        exact Hb.
    -
      intro Ha.
      unfold set_eq, In in Ha.
      destruct A; cbn in Ha.
      unfold L.
      f_equal.
      eapply functional_extensionality; intro y.
      destruct (eq_dec x y) as [Hb | Hb].
      +
        subst.
        eapply eq_sym.
        eapply Ha.
        destruct (eq_dec y y) eqn:Hc;
          [reflexivity | congruence].
      +
        destruct (b y) eqn:Hc.
        ++
          (* contradiction *)
          specialize (Ha y).
          destruct Ha as (Hal & Har).
          specialize (Har Hc).
          destruct (eq_dec x y); subst;
            try congruence.
        ++
          exact eq_refl.
  Qed.

End Tmp.



On 29 Dec 2024, at 19:47, D. Ben Knoble <ben.knoble AT gmail.com> wrote:

It seems to me the main issue is the mixing of = (as in `caract s a =
True`, `In s1 a = In s2 a`) and Props; normally I would use <-> with
Props.

Carrying this through, I suppose the best way to make `set_eq A B` a
rewritable equality would be by declaring it with the generalized
mechanism (https://coq.inria.fr/doc/V8.20.0/refman/addendum/generalized-rewriting.html#)?

But I'm probably missing some context that makes the original "shape"
more interesting.

RE: "cardinal sin," see
https://softwarefoundations.cis.upenn.edu/lf-current/Logic.html#lab223
for a short statement that "However, the following theorem implies
that it is always safe to assume a decidability axiom (i.e., an
instance of excluded middle) for any particular Prop P" (where the
"following theorem" is
https://softwarefoundations.cis.upenn.edu/lf-current/Logic.html#excluded_middle_irrefutable).

As a last thought, a different alternative might be to use bools
rather than Props if you want to write `= true`. There might be
something about "proof irrelevance" here, too.

On Sat, Dec 28, 2024 at 10:29 AM richard <richard.dapoigny AT univ-smb.fr> wrote:

Dear Coq user,

I am working on sets with characteristic functions and a datatype called object for wich equality is decidable.

Singletons called ι are also defined in this context. An excerpt of the code is given below.

Definition object: Type := t.

Definition eqobject_dec := eq_dec.

Inductive N : Type :=
   | Caract  : (object -> Prop) -> N.

Definition caract (s :N)(a:object) : Prop := let (f) := s in f a.
Definition In (s :N)(a:object) : Prop := caract s a = True.
Definition incl (s1 s2 :N) := forall a:object, In s1 a -> In s2 a.
Definition set_eq (s1 s2 :N) := forall a:object, In s1 a = In s2 a.

Definition ι (a:object) :=
 Caract
   (fun a':object =>
      match eqobject_dec a a' with
      | left h => True
      | right h => False
      end).

My question is the following : is there a possibility to prove the pairing axiom with these assumptions, i.e.  to prove that

Lemma pairN : forall (x:object)(A:N), set_eq (ι x) A <-> ι x = A.

In addition we assume classical logic.

Thanks in advance,

Richard



--
D. Ben Knoble




Archive powered by MHonArc 2.6.19+.

Top of Page