Predicate Calculus and Program SemanticsThis booklet presents a reasonably self-contained theory of predicate trans former semantics. Predicate transformers were introduced by one of us (EWD) as a means for defining programming language semantics in a way that would directly support the systematic development of programs from their formal specifications. They met their original goal, but as time went on and program derivation became a more and more formal activity, their informal introduction and the fact that many of their properties had never been proved became more and more unsatisfactory. And so did the original exclusion of unbounded nondeterminacy. In 1982 we started to remedy these shortcomings. This little monograph is a result of that work. A possible -and even likely- criticism is that anyone sufficiently versed in lattice theory can easily derive all of our results himself. That criticism would be correct but somewhat beside the point. The first remark is that the average book on lattice theory is several times fatter (and probably less self contained) than this booklet. The second remark is that the predicate transformer semantics provided only one of the reasons for going through the pains of publication. |
Contents
1 | |
On substitution and replacement | 11 |
On functions and equality | 17 |
On our proof format | 21 |
The calculus of boolean structures | 30 |
Some properties of predicate transformers | 81 |
Semantics of straightline programs | 121 |
Other editions - View all
Predicate Calculus and Program Semantics Edsger W. Dijkstra,Carel S. Scholten No preview available - 2011 |
Predicate Calculus and Program Semantics Edsger W. Dijkstra,Carel S. Scholten No preview available - 1990 |
Predicate Calculus and Program Semantics Edsger W. Dijkstra,Carel S. Scholten No preview available - 2011 |
Common terms and phrases
and-continuous binding power boolean scalar boolean structures calc chapter class finally computation under control conjugate consequence defined definition denote denumerably deterministic disjunction distributes dummy End of Proof End of Remark equality equation equivalence everywhere existential quantification false finitely conjunctive formal formulae function application functional composition functional iteration g and h given global variable Hence hint holds in precisely idempotent identity element identity function infix integer introduce Leibniz Leibniz's Rule manipulation mathematical induction natural numbers negation non-empty notation one-point rule operands operational interpretation or-continuous postcondition postulate precisely those initial predicate calculus predicate pairs predicate transformer Proof We observe punctual function range reader requirement RO rewrite sequence space statement strongest solution subexpression substitution symmetric terminate Theorem transformer f true universal quantification universally conjunctive universally junctive Vi,j weakening weakest solution well-founded sets well-foundedness wlp.DO wlp.IF wlp.S wlp.S.X wp.DO.X wp.S wp.S.true