[Coq-Club] Re: [Agda] Termination proof in partiality monad
Edsko de Vries
devriese at cs.tcd.ie
Wed Nov 19 11:56:12 CET 2008
Hi all,
I was experimenting with Vladimir's suggestion (based on Capretta's
equivalence relation), when a collegue (Wendy Verbruggen) realized
that the fixed point definition I had been using is wrong (Dan, I
think this is the definition you're using too, right?)
CoFixpoint lfpAux (A B:Set)
(k:A -> Delay B)
(f:(A -> Delay B) -> (A -> Delay B))
(a:A) : Delay B :=
match f k a with
| Now a => Now a
| Later d' => Later (lfpAux (f k) f a)
end.
Definition lfp (A B:Set)
(f:(A -> Delay B) -> (A -> Delay B))
(a:A) : Delay B :=
lfpAux (fun x => bottom) f a.
At least, we *think* this is wrong: it is missing some notion of
searching for the least fixed point (called 'omegarace' in http://www.informatik.uni-bonn.de/~ralf/WG2.8/22/slides/tarmo.pdf
or 'parallel_search' in Caprettas paper). As a result, in some of
our experiments computations were diverging that shouldn't be.
Unfortunately, correcting this makes the unfolding of factorial much
more complicated still and and we're now even further removed from
proving anything about fac :/
Edsko
More information about the Agda
mailing list