[Agda] Termination proof in partiality monad

Luke Palmer lrpalmer at gmail.com
Mon Nov 17 16:18:35 CET 2008


On Mon, Nov 17, 2008 at 6:47 AM, Edsko de Vries <devriese at cs.tcd.ie> wrote:
> PS. I asked this before on the Coq mailing list but received no replies;
> perhaps my previous email was too low-level. Hence this repost.

FWIW I did see your mail and experimented with your code for quite a
while, without making very much progress.  The problem I kept running
into is that I could not re-fold the definition of lfp (I think... I'm
doing this from memory) because there was an extra f in the
definition.  I suspect that a lemma to the effect of:

   lfp f = f (lfp f)

Would do the trick.  However that lemma cannot be stated the way you
formalized things.  I tried changing the terminates inductive to
terminatesWith, which encodes the value that it terminates with as
well, but that ended up being a pain and I just gave up.  I think the
above lemma is the key.

If you resolve this, I'd love to see it.

You might also be interested in Bertot and Komendantsky's recent
paper: http://hal.inria.fr/docs/00/30/57/08/PDF/ppdp19-bertot.pdf

Very interesting stuff, but it is quite complicated.

Luke


More information about the Agda mailing list