coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Arnaud Spiwack <Arnaud.Spiwack AT lix.polytechnique.fr>
- To: Dan Doel <dan.doel AT gmail.com>
- Cc: Aaron Bohannon <bohannon AT cis.upenn.edu>, Xavier Leroy <Xavier.Leroy AT inria.fr>, Agda mailing list <agda AT lists.chalmers.se>, coq-club <coq-club AT pauillac.inria.fr>
- Subject: Re: [Coq-Club] Re: Agda beats Coq
- Date: Tue, 25 Nov 2008 01:13:01 +0100
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding :sender; b=fuPF38SbwgT6AIugOqNBmVXKHxK9QwNFITJVyyZaqGX2JSVhrgGS0CoQd9qzSjNmq1 7mOPjrJ21jGCOqR8tXqe0FgJJ8T26nFCQUUvDvBqkpLjyHmWZ2C0qAvAOHCdS9pHjbwk 288YzZho8OMet7vRKNlW2+gl8uLEAqSY0YWqU=
- List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>
You can't actually achieve this for infinite values like the above, so to usefully prove their equality, you'd have to add an extensionality axiom like you suggest. But in principle, bisimilarity means that you could prove two values intensionally equal through evaluation (the equality just isn't decidable).
You are right indeed, mea culpa for that. Bisimilarity allows coinductive reasoning which are more powerful than reasoning with intentional equality (which only allows to look at a finite prefix, although of arbitrary length).
Therefore you will only have properties such as the following (still contestable, in my opinion):
CoInductive stream (A:Type) : Type :=
| cons : A -> stream A -> stream A
.
Definition hd (A:Type) (s:stream A) :=
match s with
| cons a _ => a
end
.
Implicit Arguments hd [ A ].
Definition tl (A:Type) (s:stream A) :=
match s with
| cons _ t => t
end
.
Implicit Arguments tl [ A ].
CoInductive bisim (A:Type) (s1 s2:stream A) :Prop :=
| mk_bisim : hd s1 = hd s2 -> bisim _ (tl s1) (tl s2) -> bisim _ s1 s2
.
Fixpoint tln (A:Type) (s:stream A) (n:nat) {struct n} : stream A :=
match n with
| 0 => s
| S n' => tln _ (tl s) n'
end
.
Goal forall A n (s1 s2:stream A), tln _ s1 n = tln _ s2 n -> bisim _ s1 s2 ->
s1 = s2.
intro A. induction n.
trivial.
intros [ h1 s1 ] [ h2 s2 ] t [ h b ].
simpl in *. rewrite h. rewrite (IHn s1 s2); trivial.
Qed.
- [Coq-Club] Re: Agda beats Coq, (continued)
- [Coq-Club] Re: Agda beats Coq, Nils Anders Danielsson
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad),
Aaron Bohannon
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad), Dan Doel
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad), Dan Doel
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad), Aaron Bohannon
- Re: [Coq-Club] Re: Agda beats Coq, Xavier Leroy
- Re: [Coq-Club] Re: Agda beats Coq, Arnaud Spiwack
- Re: [Coq-Club] Re: Agda beats Coq, Arnaud Spiwack
- Re: [Coq-Club] Re: Agda beats Coq, Aaron Bohannon
- Re: [Coq-Club] Re: Agda beats Coq, Dan Doel
- Re: [Coq-Club] Re: Agda beats Coq, Arnaud Spiwack
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad), Dan Doel
- Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad), Thorsten Altenkirch
Archive powered by MhonArc 2.6.16.