Predicate calculus : concepts and misconceptions

The paper focusses on the logical backgrounds of the Dijkstra-Hoare program development style for correct programs. For proving the correctness of a program (i.e. the fact that the program satisfies its specifications), one uses the so-called predicate calculus in this style of programming. Predicate calculus can be conceived of as a logically sound and complete manipulation technique for dealing with logical formulas which also contain programming variables. We relate predicate calculus to the classical logical formalism, by contrasting its syntax, derivation rules and semantics to the classical framework. We also comment on two abstractions of predicate calculus: the set-theoretical and the algebraic approach. In doing so) we give predicate calculus and its abstract variants a firm basis) on a par with the foundations of the well-known first order logic. Such a comparison of predicate calculus and classical logic has not yet been sufficiently elaborated before. We conclude our paper with a number of examples showing that the, up to now) unsatisfactory presentation of predicate calculus and some of its features (such as the square brackets notation) has led to errors and fallacies in the literature.

[1]  Joost Engelfriet,et al.  Context-free graph grammars and concatenation of graphs , 1997, Acta Informatica.

[2]  P. Niebert,et al.  On the connection of partial order logics and partial order reduction methods , 1995 .

[3]  P.D.V. van der Stok,et al.  Real-time distributed concurrency control algorithms with mixed time constraints , 1996 .

[4]  J.C.S.P. van der Woude Plat-etudes for Carel ende Elegance , 1991 .

[5]  Wil M.P. van der Aalst,et al.  A class of Petri nets for modeling and analyzing business processes , 1995 .

[6]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[7]  Fairouz Kamareddine,et al.  A Reflection on Russell's Ramified Types and Kripke's Hierarchy of Truths , 1996, Log. J. IGPL.

[8]  Frank Dignum,et al.  Solving a time tabling problem by constraint satisfaction , 1995 .

[9]  W.M.P. van der Aalst,et al.  Parallel computation of reachable dead states in a free-choice Petri net , 1996 .

[10]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[11]  A. van Deursen,et al.  Algebraic specification of a language for describing financial products , 1995 .

[12]  A. T. M. Aerts,et al.  OODB Support for WWW Applications: Disclosing the internal structure of Hyperdocuments , 1996, WebNet.

[13]  Orna Grumberg,et al.  Abstract interpretation of reactive systems : preservation of CTL* , 1995 .

[14]  Carel S. Scholten,et al.  Point-free Substitution , 1996, Sci. Comput. Program..

[15]  Arie van Deursen,et al.  Axiomatizing early and late input by variable elimination , 1995 .

[16]  Sabine Koppelberg,et al.  Handbook of Boolean Algebras , 1989 .

[17]  Ajh Jan Hidders,et al.  The formal model of a pattern browsing technique , 1995 .

[18]  Roland Carl Backhouse,et al.  A relational theory of datatypes , 1992 .

[19]  Lmg Loe Feijs Algebraic specification and simulation of lazy functional programs in a concurrent environment , 1996 .

[20]  Melvin Fitting,et al.  First-Order Logic and Automated Theorem Proving , 1990, Graduate Texts in Computer Science.

[21]  Jan A. Bergstra,et al.  Discrete Time Process Algebra with Abstraction , 1995, FCT.

[22]  Twan Basten,et al.  A process-algebraic approach to life-cycle inheritance : inheritance = encapsulation + abstraction , 1996 .

[23]  Roland Carl Backhouse,et al.  Program construction and verification , 1986, PHI Series in computer science.

[24]  Bertrand Meyer,et al.  Introduction to the Theory of Programming Languages , 1990 .

[25]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[26]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[27]  M. Voorhoeve Structural Petri net equivalence , 1996 .

[28]  Atm Ad Aerts,et al.  Multi-user publishing in the Web: DReSS, a Document Repository Service Station , 1996 .

[29]  Fairouz Kamareddine,et al.  A correspondence between Nuprl and the Ramified Theory of Types , 1996 .

[30]  Gerard Zwaan,et al.  A Taxonomy of Sublinear Multiple Keyword Pattern Matching Algorithms , 1996, Sci. Comput. Program..

[31]  Edward Cohen,et al.  Programming in the 1990s: An Introduction to the Calculation of Programs , 1990 .

[32]  Reniers,et al.  Empty interworkings and refinement semantics of interworkings revised , 1995 .

[33]  Fred B. Schneider,et al.  Equational Propositional Logic , 1995, Inf. Process. Lett..

[34]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[35]  Fred B. Schneider,et al.  A Logical Approach to Discrete Math , 1993, Texts and Monographs in Computer Science.

[36]  Michel A. Reniers,et al.  Static semantics of message sequence charts , 1996 .

[37]  Wan Fokkink,et al.  A conservative look at term deduction systems with variable binding , 1995 .

[38]  Rudolf Berghammer,et al.  Formalizing Dijkstra's Predicate Transformer wp in Weak Second-Order Logic , 1995, Theor. Comput. Sci..

[39]  Fred B. Schneider,et al.  Adding the Everywhere Operator to Propositional Logic , 1996, J. Log. Comput..

[40]  Rutger M. Dijkstra "Everywhere" in Predicate Algebra and Modal Logic , 1996, Inf. Process. Lett..

[41]  Dennis Dams,et al.  Practical symbolic model checking of the full µ-calculus using compositional abstractions , 1995 .