coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Hugo Herbelin <herbelin AT pauillac.inria.fr>
- To: Pierre.Letouzey AT lri.fr (Pierre Letouzey)
- Cc: l_stafiniak AT hoga.pl, coq-club AT pauillac.inria.fr
- Subject: Re: [Coq-Club] Type equality
- Date: Thu, 31 Jul 2003 22:57:45 +0200 (MET DST)
- List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>
Hi,
> Btw, concerning the status of ~nat=(nat->bool) (mentionned by JF Monin),
> Gilles and I have also the feeling that it's unprovable as such. But
> it might be provable with enough axioms (excluded middle, plus maybe a
> form of axiom of choice). We can at least prove that there isn't any
> surjective function from nat to nat->bool (Cantor argument), but that does
> not gives us the falsity of nat = (nat->bool).
It does!
Lemma Cantor: ~(EX f : nat -> nat->bool | (g:nat->bool)(EX n:nat | (f n)=g)).
Proof.
Red; NewDestruct 1 as [f H].
Elim H with g:=[n](if (f n n) then false else true).
Intros m H0.
Assert H1: (f m m) = ([n:nat]if (f n n) then false else true m).
Pattern 1 (f m); Rewrite -> H0; Reflexivity.
Simpl in H1; NewDestruct (f m m); Simpl; Discriminate.
Qed.
Lemma nat_identity: (EX f : nat -> nat | (g:nat)(EX n:nat | (f n)=g)).
Proof.
Exists [n:nat]n; Intro g; Exists g; Reflexivity.
Qed.
Lemma powerset_discr: ~nat==(nat->bool).
Proof.
Intro Heq; Apply Cantor; Rewrite <- Heq; Apply nat_identity.
Qed.
Hugo
- [Coq-Club] Type equality, Lukasz Stafiniak
- Re: [Coq-Club] Type equality, Eduardo Gimenez
- Re: [Coq-Club] Type equality,
Pierre Letouzey
- Re: [Coq-Club] Type equality,
jeanfrancois . monin
- Re: [Coq-Club] Type equality, Pierre Courtieu
- Re: [Coq-Club] Type equality,
jeanfrancois . monin
- Re: [Coq-Club] Type equality, jeanfrancois . monin
- Re: [Coq-Club] Type equality,
Pierre Letouzey
- Re: [Coq-Club] Type equality, Hugo Herbelin
Archive powered by MhonArc 2.6.16.