Skip to main content

Proving Make Correct: I/O Proofs in Haskell and Clean

  • Conference paper
  • First Online:
Implementation of Functional Languages (IFL 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2670))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. Stuart I. Feldman. Make-a program for maintaining computer programs. Software-Practice and Experience, 9(4):255–65, 1979.

    Article  MATH  Google Scholar 

  7. 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.

    Google Scholar 

  8. Rinus Plasmeijer and Marko van Eekelen. Concurrent clean version 2.0 language report. http://www.cs.kun.nl/~clean/, December 2001.

  9. Erik Barendsen and Sjaak Smetsers. Uniqueness typing for functional languages with graph rewriting semantics. Mathematical Structures in Computer Science, 6(6):579–612, 1996.

    MATH  MathSciNet  Google Scholar 

  10. Philip Wadler. Monads for functional programming. In M. Broy, editor, Program Design Calculi: Proceedings of the 1992 Marktoberdorf International Summer School. Springer-Verlag, 1993.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. Andrew D. Gordon. Functional Programming and Input/Output. PhD thesis, University of Cambridge, August 1992.

    Google Scholar 

  13. Mícheál Mac an Airchinnigh. Conceptual Models and Computing. PhD thesis, University of Dublin, Trinity College, Department of Computer Science, 1990.

    Google Scholar 

  14. Arthur Hughes. Elements of an Operator Calculus. PhD thesis, University of Dublin, Trinity College, Department of Computer Science, 2000.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics