D Harel, D. Kozen and J. Tiuryn, Dynamic Logic, MIT Press, 2000.
Part I: Fundamental Concepts1. Mathematical Preliminaries 1.1 Notational Conventions2. Computability and Complexity 3. Logic
4. Reasoning About Programs
Part II: Propositional Dynamic Logic5. Propositional Dynamic Logic 6. Basic Properties
7. Filtration and Decidability
8. Deductive Completeness
9. Complexity of PDL
10. Nonregular PDL
11. Other Variants of PDL
Part III: First-Order Dynamic Logic12. First-Order Dynamic Logic
13. Relationships with Static Logics
14. Complexity
15. Axiomatization
16. Expressive Power 17. Variants of DL
18. Other Approaches
BibliographyIndex
Dynamic Logic is a formal system for reasoning about programs. Traditionally, this has meant formalizing correctness specifications and proving rigorously that those specifications are met by a particular program. Other activities fall into this category as well: determining the equivalence of programs, comparing the expressive power of various programming constructs, synthesizing programs from specifications, etc. Formal systems too numerous to mention have been proposed for these purposes, each with its own peculiarities. This book presents a comprehensive introduction to one system, or rather family of systems, collectively called Dynamic Logic (DL). Among the myriad approaches to formal reasoning about programs, DL enjoys the singular advantage of strong connections with classical logic. It can be described as a blend of three complementary classical ingredients: propositional and predicate logic, modal logic, and the algebra of regular events. These components merge to form a system of remarkable unity that is theoretically rich as well as practical. The name Dynamic Logic emphasizes the principal feature distinguishing
it from classical predicate logic. In the latter, truth is static:
the truth value of a formula
Such changes occur on a metalogical level in classical predicate logic. For example, in the Tarski definition of a formula, if u:{x,y,...} -> N is a valuation of variables over the natural numbers N, then the formula exists>x x**2=y is defined to be true under the valuation u iff there exists an a in N such that the formula x**2=y is true under the valuation u[x/a], where u[x/a] agrees with u everywhere except x, on which it takes the value a. This definition involves a metalogical operation which produces u[x/a], from u for all possible values a in N. This operation becomes explicit in Dynamic Logic in the form of the program x:=?, called a nondeterministic or wildcard assignment. This is a rather unconventional program, since it is not effective; however, it is quite useful as a descriptive tool. A more conventional way to obtain a square root of y, if it exists, would be the program x:=0; while x**2 < y do x:=x+1. (1) In Dynamic Logic, such programs are first-class objects on a par with
formulas, complete with a collection of operators for forming compound
programs inductively from a basis of primitive programs. In the simplest
version of DL, these program operators are U (nondeterministic
choice), ; (sequential composition), * (iteration), and ? (test). These
operators are already sufficient to generate all while programs,
which over N are sufficient to compute all partial recursive functions.
To discuss the effect of the execution of a program
This book is divided into three parts. Part I reviews the fundamental concepts of logic and computability theory that are needed in the study of Dynamic Logic. Part II discusses Propositional Dynamic Logic and its variants, and Part III discusses First-Order Dynamic Logic and its variants. Examples are provided throughout, and a collection of exercises and a short historical section are included at the end of each chapter. Part I was included in an effort to achieve a certain level of self-containment, although the level achieved is far from absolute, since DL draws on too many disciplines to cover adequately. The treatment of some topics in Part I is therefore necessarily abbreviated, and a passing familiarity with the basic concepts of mathematical logic, computability, formal languages and automata, and program verification is a desirable prerequisite. This background material can be found in Shoenfield [185] (logic), Rogers [174] (recursion theory), Kozen [118] (formal languages, automata, and computability), Keisler [99] (infinitary logic), Manna [127] (program verification), and Harel [] (computability and complexity). Apart from the obvious heavy reliance on classical logic, computability theory and programming, the subject has its roots in the work of Thiele [198] and Engeler [42] in the late 1960's, who were the first to advance the idea of formulating and investigating formal systems dealing with properties of programs in an abstract setting. Research in program verification flourished thereafter with the work of many researchers, notably Floyd [50], Hoare [92], Manna [127], and Salwicki [179]. The first precise development of a Dynamic Logic-like system was carried out by Salwicki [179], following Engeler [42]. This system was called Algorithmic Logic. A similar system, called Monadic Programming Logic, was developed by Constable [?]. Dynamic Logic, which emphasizes the modal nature of the program/assertion interaction, was introduced by Pratt in 1976 [162]. There are by now a number of books and survey papers treating logics of programs and Dynamic Logic. We refer the reader to [70,71,150,56,57,106,31,36,117]. The material of this book has been used as the basis for graduate courses at the Weizmann Institute of Science, Bar-Ilan University, Aarhus University, Waraw University, and Cornell University. We welcome comments and criticism from readers.
|
||
|