CMSC 654, Program Verification Instructor: Howard E. Motteler Office: TF 111 Phone: 455-2590 Office hours: before class Text: David A. Schmidt, Denotational Semantics In addition, lecture notes will be provided, including a review of mathematical logic, material on the lambda calculus, and a chapter on axiomatic semantics, by John Gannon, of UMCP. Copies of recommended outside readings will be placed on reserve in the library. Course Outline Introduction 1 week Topics in Program Verification Review of Mathematical Logic Axiomatic Semantics 3-4 weeks Hoare's Axiomatic Method Proofs of partial and total correctness Dijkstra's Method of Weakest Preconditions Program derivation and logic programming Denotational Semantics 11-12 weeks Review: syntax, sets, functions and domains Functions as "first class" objects Lambda Calculus and Combinators Church-Rosser Theorem Syntactic fixpoint operators Models of the lambda and combinator calculus. Domain Theory, recursive definitions and fixed point operators Denotational definitions and imperative languages (This section will cover material from the Schmidt text, lecture notes, and Ch. 5 of Stoy's text.) Grading: 2 midterms, each worth 100 points, a 150 point final, and 50 points of homework. The homework may include some simple programming exercises. 85% of the total points gets you an "A", 65% a "B", etc. Related Readings C.A.R. Hoare, "An Axiomatic Basis for Computer Programming," CACM, vol. 12, pp. 576-580. The "origional" paper on axiomatic sematics. C.A.R. Hoare, "Communicating Sequential Processes," CACM, Aug. 1978, vol. 21, no. 8, pp. 666-677. Some of the ideas presented here may be covered, as time permits. The transputer programming environment is a implementation of some of Hoare's ideas. J.E. Stoy, Denotational Semantics: The Scott-Strachey Approach to Programming Language theory, MIT Press, Cambridge Mass., 1977. Chapter 5 is a very readable introduction to the lambda calculus, and contains a number of useful exercises. Hindley and Seldin, Introduction to Combinators and the lambda-calculus, Cambridge Press, 1986. An up to date and comprehensive survey of the theory of combinators and the lambda-calculus. This covers the theoretical side of denotational semantics, while the Schmidt text covers the (relatively) applied aspects.