Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad)

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad)


chronological Thread 
  • From: "Aaron Bohannon" <bohannon AT cis.upenn.edu>
  • To: "Dan Doel" <dan.doel AT gmail.com>
  • Cc: "Edsko de Vries" <Edsko.de.Vries AT cs.tcd.ie>, "Agda mailing list" <agda AT lists.chalmers.se>, coq-club <coq-club AT pauillac.inria.fr>
  • Subject: Re: [Coq-Club] Re: Agda beats Coq (was: Termination proof in partiality monad)
  • Date: Sat, 22 Nov 2008 13:23:52 -0500
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=sLs1F3mWbFyhaFnCrySaCRfYwiphyLj+fJCwRkxKGNlzlk9Ybz/dxlfc6Rv+2b1fCU XPaBBm8cyrFe/5B2POI/FM6dBpOeKMZ/oajLt5TPUh2EOgPF8PENSvHve8RKIKOpyDHe sgd7FudjtguLtsfV28bi1nYuDBoumpWjj5yoU=
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

Hi,

I have been trying to working coinductive data and definitions
recently and have found that Coq been very helpful in developing
intuition about this sort of thing.  So I found your remarks below
very interesting.  Specifically, you seem to imply that a
CoInductive/codata definition in Coq/Agda permits some operations that
an abstract type with an "observe" function would not permit.  Can you
(or anyone else) be more specific about what these would be?

 - Aaron

On Thu, Nov 20, 2008 at 6:21 PM, Dan Doel 
<dan.doel AT gmail.com>
 wrote:
> The scheme that did yield a proof is based on mails from Anton Setzer, who I
> suspect would say that codata as found in Agda and Coq gives you poor
> intuition about how to work with coinductive data. Instead you want to think
> in terms of coalgebras. So, rather than:
>
>  codata D (a : Set) : Set where
>    now : a -> D a
>    later : D a -> D a
>
> Which looks like you have constructors, what you want is something more 
> like:
>
>  -- For any a:Set, D a is the terminal coalgebra where the observation is
>  -- of type B -> a + B
>  D : Set -> Set
>
>  observe : {a : Set} -> D a -> a + D a
>
> Importantly, a value of type D a is not either (now a) or (later a). The 
> only
> operation on it is "observe" (which was the star operation in my code), 
> which
> yields either a regular value, or another D a.





Archive powered by MhonArc 2.6.16.

Top of Page