Abstract
Co-induction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of co-induction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based on a new formulation of bisimilarity for functional programs, which coincides exactly with Morris-style contextual equivalence. We show how to prove properties of lazy streams by co-induction and derive Bird and Wadler’s Take Lemma, a well-known proof technique for lazy streams.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Abramsky, S. ( 1987, October 5). Domain Theory and the Logic of Observable Properties. Ph. D. thesis, Queen Mary College, University of London.
Abramsky, S. and L. Ong (1993). Full abstraction in the lazy lambda calculus. Information and Computation 105, 159–267.
Aczel, P. (1977). An introduction to inductive definitions. In J. Barwise (Ed.), Handbook of Mathematical Logic, pp. 739–782. North-Holland.
Bird, R. and P. Wadler (1988). Introduction to Functional Programming. Prentice-Hall.
Bloom, B. (1988). Can LCF be topped? Flat lattice models of typed lambda calculus. In Proceedings 3rd LICS, pp. 282–295.
Crole, R. L. and A. D. Gordon (1994, September). A sound metalogical semantics for input/output effects. In Computer Science Logic’94, Kazimierz, Poland. Proceedings to appear in Springer LNCS.
Davey, B. A. and H. A. Priestley (1990). Introduction to Lattices and Order. Cambridge University Press.
Felleisen, M. and D. Friedman (1986). Control operators, the SECD-machine, and the A-calculus. In Formal Description of Programming Concepts III, pp. 193–217. North-Holland.
Gordon, A. D. (1994a). Bisimilarity as a theory of functional programming. Submitted for publication.
Gordon, A. D. (1994b). Functional Programming and Input/Output. Cambridge University Press. Revision of 1992 PhD dissertation.
Howe, D. J. (1989). Equality in lazy computation systems. In Proceedings 4th LICS, pp. 198–203.
Hughes, J. and A. Moran (1993, June). Natural semantics for non-determinism. In Proceedings of El Wintermöte, pp. 211–222. Chalmers PMG. Available as Report 73.
Milner, R. (1977). Fully abstract models of typed lambda-calculi. TCS 4, 1–23.
Milner, R. (1989). Communication and Concurrency. Prentice-Hall.
Morris, J. H. ( 1968, December). Lambda-Calculus Models of Programming Languages. Ph. D. thesis, MIT.
Ong, C.-H. L. (1993, June). Non-determinism in a functional setting (extended abstract). In Proceedings 8th LICS, pp. 275–286.
Ong, C.-H. L. (1994, January). Correspondence between operational and denotational semantics: The full abstraction problem for PCF. Submitted to Handbook of Logic in Computer Science Volume 3, OUP 1994.
Park, D. (1981, March). Concurrency and automata on infinite sequences. In P. Deussen (Ed.), Theoretical Computer Science: 5th GI-Conference, Volume 104 of Lecture Notes in Computer Science, pp. 167–183. Springer-Verlag.
Pitts, A. and I. Stark (1993, June). On the observable properties of higher order functions that dynamically create local names (preliminary report). In SIPL’93, pp. 31–45.
Pitts, A. M. (1994). A co-induction principle for recursively defined domains. TCS 124, 195–219.
Plotkin, G. D. (1977). LCF considered as a programming language. TCS 5, 223–255.
Ritter, E. and A. M. Pitts (1994, September). A fully abstract translation between a A-calculus with reference types and Standard ML. To appear in TLCA’95.
Sander, H. (1992). A Logic of Functional Programs with an Application to Concurrency. Ph. D. thesis, Chalmers PMG.
Sands, D. (1992). Operational theories of improvement in functional languages (extended abstract). In Functional Programming, Glasgow 1991, Workshops in Computing, pp. 298–311. Springer-Verlag.
Sands, D. (1994, May). Total correctness and improvement in the transformation of functional programs (1st draft). DIKU, University of Copenhagen.
Smith, S. F. (1991). From operational to denotational semantics. In MFPS VII, Pittsburgh, Volume 598 of Lecture Notes in Computer Science, pp. 54–76. Springer-Verlag.
Turner, D. (Ed.) (1990). Research Topics in Functional Programming. Addison-Wesley.
Winskel, G. (1993). The Formal Semantics of Programming Languages. MIT Press, Cambridge, Mass.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1995 Springer-Verlag London
About this paper
Cite this paper
Gordon, A.D. (1995). A Tutorial on Co-induction and Functional Programming. In: Hammond, K., Turner, D.N., Sansom, P.M. (eds) Functional Programming, Glasgow 1994. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3573-9_6
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3573-9_6
Publisher Name: Springer, London
Print ISBN: 978-3-540-19914-4
Online ISBN: 978-1-4471-3573-9
eBook Packages: Springer Book Archive