Abstract
This paper discusses reasoning about I/O operations in the languages Haskell and Clean and makes some observations about proving properties of programs which perform significant I/O. We developed a model of the I/O system and produced some techniques to reason about the behaviour of programs run in the model. We then used those techniques to prove some properties of a program based on the standard make tool. We consider the I/O systems of both languages from a program proving perspective, and note some similarities in the overall structure of the proofs. A set of operators for assisting in the reasoning process are defined, and we then draw some conclusions concerning reasoning about the effect of functional programs on the outside world, give some suggestions for techniques and discuss future work.
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
Andrew Butterfield and Glenn Strong. Comparing i/o proofs in three programming paradigms: a baseline. Technical Report TCD-CS-2001-28, University of Dublin, Trinity College, Department of Computer Science, August 2001.
Andrew Butterfield and Glenn Strong. Proving correctness of programs with i/o — a paradigm comparison. In Markus Mohnen Thomas Arts, editor, Proceedings of the 13th International Workshop, IFL 2001, number LNCSn2312 in Lecture Notes in Computer Science, pages 72–87. Springer-Verlag, 2001.
Richard M. Stallman and Roland McGrath. GNU Make: A Program for Directing Recompilation, for Version 3.79. Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA, Tel: (617) 876-3296, USA, 2000.
Malcolm Dowse, Glenn Strong, and Andrew Butterfield. Proving “make” correct: I/o proofs in two functional languages. Technical Report TCDCS-2003-03, Trinity College, Dublin, 2003. http://www.cs.tcd.ie/publications/tech-reports/reports.03/TCD-CS-2003-03.pdf.
Paul Hudak, Simon L. Peyton Jones, and Philip Wadler (editors). Report on the programming language haskell, a non-strict purely functional language (version 1.2). SIGPLAN Notices, Mar, 1992.
Stuart I. Feldman. Make-a program for maintaining computer programs. Software-Practice and Experience, 9(4):255–65, 1979.
Maarten de Mol, Marko van Eekelen, and Rinus Plasmeijer. Sparkle: A functional theorem prover. In Markus Mohnen Thomas Arts, editor, Proceedings of the 13th International Workshop, IFL2001, number LNCS2312 in Lecture Notes in Computer Science, page 55. Springer-Verlag, 2001.
Rinus Plasmeijer and Marko van Eekelen. Concurrent clean version 2.0 language report. http://www.cs.kun.nl/~clean/, December 2001.
Erik Barendsen and Sjaak Smetsers. Uniqueness typing for functional languages with graph rewriting semantics. Mathematical Structures in Computer Science, 6(6):579–612, 1996.
Philip Wadler. Monads for functional programming. In M. Broy, editor, Program Design Calculi: Proceedings of the 1992 Marktoberdorf International Summer School. Springer-Verlag, 1993.
He Jifeng, C. A. R. Hoare, M. Fränzle, M. Müller-Ulm, E.-R. Olderog, M. Schenke, A. P. Ravn, and H. Rischel. Provably correct systems. In H. Langmaack, W.-P. de Roever, and J. Vytopil, editors, Formal Techniques in Real Time and Fault Tolerant Systems, volume 863, pages 288–335. Springer-Verlag, 1994.
Andrew D. Gordon. Functional Programming and Input/Output. PhD thesis, University of Cambridge, August 1992.
Mícheál Mac an Airchinnigh. Conceptual Models and Computing. PhD thesis, University of Dublin, Trinity College, Department of Computer Science, 1990.
Arthur Hughes. Elements of an Operator Calculus. PhD thesis, University of Dublin, Trinity College, Department of Computer Science, 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dowse, M., Strong, G., Butterfield, A. (2003). Proving Make Correct: I/O Proofs in Haskell and Clean. In: Peña, R., Arts, T. (eds) Implementation of Functional Languages. IFL 2002. Lecture Notes in Computer Science, vol 2670. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44854-3_5
Download citation
DOI: https://doi.org/10.1007/3-540-44854-3_5
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40190-2
Online ISBN: 978-3-540-44854-9
eBook Packages: Springer Book Archive