Lecture Notes on Formal Program Development

This document was originally produced as lecture notes for the MSc and PG course ``Formal Program Development'' early in 1997. After some initial general considerations on this subject the paper focusses on the way one can use Extended ML (EML) for formal program development, which features EML contains and why, and which pitfalls one has to avoid when formally developing ML programs. Usage, features, and pitfalls are all presented through examples.

[1]  Robin Milner,et al.  Definition of standard ML , 1990 .

[2]  Simon Thompson,et al.  Type theory and functional programming , 1991, International computer science series.

[3]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[4]  Jerzy Tiuryn,et al.  The undecidability of the semi-unification problem , 1990, STOC '90.

[5]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[6]  Warren D. Goldfarb,et al.  The Undecidability of the Second-Order Unification Problem , 1981, Theor. Comput. Sci..

[7]  Donald Sannella Formal program development in Extended ML for the working programmer , 1990 .

[8]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[9]  Donald Sannella,et al.  The Semantics of Extended ML: A Gentle Introduction , 1993, Semantics of Specification Languages.

[10]  Carl A. Gunter,et al.  Computing ML Equality Kinds Using Abstract Interpretation , 1993, Inf. Comput..

[11]  Donald Sannella,et al.  The definition of Extended ML , 1994 .

[12]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.