Jeremy Gibbons
Proof methods for structured corecursive programs
Gibbons, Jeremy; Hutton, Graham
Abstract
Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving properties of corecursive programs, including fixpoint induction, the take lemma, and coinduction. However, these methods are all rather low level, in that they do not exploit the common structure that is often present in corecursive definitions. We argue for a more structured approach to proving properties of corecursive programs. In particular, we show that by writing corecursive programs using a simple operator that encapsulates a common pattern of corecursive definition, we can then use high-level algebraic properties of this operator to conduct proofs in a purely calculational style that avoids the use of inductive or coinductive methods.
Citation
Gibbons, J., & Hutton, G. (1999). Proof methods for structured corecursive programs.
Conference Name | 1st Scottish Functional Programming Workshop |
---|---|
End Date | Sep 1, 1999 |
Publication Date | Jan 1, 1999 |
Deposit Date | Oct 26, 2005 |
Publicly Available Date | Oct 9, 2007 |
Peer Reviewed | Peer Reviewed |
Public URL | https://nottingham-repository.worktribe.com/output/1023961 |
Additional Information | Papers from the conference were ultimately published in: Trends in functional programming / edited by Greg Michaelson, Phil Trinder and Hans-Wolfgang Loidl. Bristol: Intellect, 2000. |
Files
methods.pdf
(<nobr>97 Kb</nobr>)
PDF
You might also like
Calculating correct compilers II: Return of the register machines
(2020)
Journal Article
Liquidate your assets: reasoning about resource usage in liquid Haskell
(2019)
Journal Article
Call-by-need is clairvoyant call-by-value
(2019)
Journal Article
AutoBench: comparing the time performance of Haskell programs
(2018)
Conference Proceeding
Theorem proving for all: equational reasoning in Liquid Haskell (Functional Pearl)
(2018)
Conference Proceeding