Gibbons, Jeremy, Hutton, Graham, "Proof methods for structured corecursive programs", , 1999