Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Defining type of a subset of natural numbers

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Defining type of a subset of natural numbers


chronological Thread 
  • From: Nadeem Abdul Hamid <nadeem AT acm.org>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] Defining type of a subset of natural numbers
  • Date: Wed, 10 Feb 2010 11:04:40 -0500
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:from:to:content-type:content-transfer-encoding :mime-version:subject:date:x-mailer; b=GeNzKr4We7EeC7AMupnA7iUnCVGIOzJDGrDhJ+On5+SUNX4Zvdqjx8JGtkSsGx1Tfb XO46vHo6yr6RdBJ1mRYczfsE9qUrDh9DyES6pE9YVeDecQEXGWz56ffiAfqF3TuSAAUB CKCuEXYpQxiEZn12mk74uZxwoK/TZ85bGyjVY=

I'm working on something where I try to prove properties of functions on some parameterized sets -- i.e.

Module Type SIG.

Parameter A : Set.
Parameter B : Set.

Parameter a_eq_dec : forall (a a':A), a = a' \/ a <> a'.

Parameter f : A -> B.
.... properties of f ...
End SIG.

(* followed by some proofs in another functor of SIG that uses properties of f *)


Now, I want to instantiate SIG with an implementation of A and B being a finite subset of natural numbers, e.g.

Definition A := { n:nat | n < 10 }.
Definition B := { n:nat | n < 10 }.

Lemma a_eq_dec : forall (a a':A), a=a' \/ a<>a'.
...

The problem here is that I can only seem to establish this by introducing the proof_irrelevance axiom.

So the question is: Does anyone have other suggestions for defining concrete instantiations of A and B as finite subsets of the natural numbers, that would allow proof of the a_eq_dec property without introducing proof irrelevance?

Thanks in advance,
nadeem








Archive powered by MhonArc 2.6.16.

Top of Page