posted on 2012-12-04, 09:23authored byGavin E. Mendel-Gleason, Geoff W. Hamilton
Proofs involving infinite structures can use corecursive functions
as inhabitants of a corecursive type. Admissibility of such functions
in theorem provers such as Coq or Agda, requires that these functions are
productive. Typically this is proved by showing satisfaction of a guardedness
condition. The guardedness condition however is extremely restrictive
and many programs which are in fact productive and therefore will
not compromise soundness are nonetheless rejected. Supercompilation
is a family of program transformations which retain program equivalence.
Using supercompilation we can take programs whose productivity
is suspected and transform them into programs for which guardedness is
syntactically apparent.