To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
As we saw in Section 1.3, the concept of validity, which abstracts away from the effects of particular valuations, allows modal languages to get to grips with frame structure. As we will now see, this makes it possible for modal languages to define classes of frames, and most of the chapter is devoted to exploring this idea.
The following picture will emerge. Viewed as tools for defining frames, every modal formula corresponds to a second-order formula. Although this second-order formula sometimes has a first-order equivalent, even quite simple modal formulas can define classes of frames that no first-order formula can. In spite of this, there are extremely simple first-order definable frame classes which no modal formula can define. In short, viewed as frame description languages, modal languages exhibit an unusual blend of first- and second-order expressive powers.
The chapter has three main parts. The first, consisting of the first four sections, introduces frame definability, explains why it is intrinsically second-order, presents the four fundamental frame constructions and states the Goldblatt-Thomason Theorem, and discusses finite frames. The second part, consisting of the next three sections, is essentially a detailed exposition of the Sahlqvist Correspondence Theorem, which identifies a large class of modal formulas which correspond to first-order formulas. The final part, consisting of the last section, studies further frame constructions and gives a model-theoretic proof of the Goldblatt-Thomason Theorem. With the exception of the last two sections, all the material in this chapter lies on the basic track.
In this appendix we review some basic (universal) algebraic notions used in Chapter 5. The first part deals with algebras and operations on (classes of) algebras, the second part is about algebraic model theory, and in the third part we discuss equational logic. Birkhoff's fundamental theorems are stated without proof.
For an introduction to universal algebra, see Burris and Sankappanavar [81] or Grätzer [198]; McKenzie, McNulty and Taylor [321] provide more comprehensive reading. Basic track readers may like the algebraic accounts of propositional logic given in Chapter 3 of Bell and Machover [32] and Chapters 1 and 2 of Bell and Slomson [33]. Many readers will find Davey and Priestly [105] useful supplementary reading.
Universal Algebra
An algebra is a set together with a collection of functions over the set; these functions are usually called operations. Algebras come in various similarity types, determined by the number and arity of the operations.
Definition B.1 (Similarity Type) An algebraic similarity type is an ordered pair ƒ = (F, ρ) where F is a non-empty set and ρ is a function F → ℕ. Elements of F are called function symbols; the function ρ assigns to each operator f ∈ F a finite arity or rank, indicating the number of arguments that f can be applied to.
Ask three modal logicians what modal logic is, and you are likely to get at least three different answers. The authors of this book are no exception, so we will not try to start off with a neat definition. Nonetheless, a number of general ideas guide our thinking about the subject, and we will present the most important right away as a series of three slogans. These are meant to be read now, and, perhaps more importantly, referred back to occasionally; doing so will help you obtain a firm grasp of the ideas and intuitions that have shaped this book. Following the slogans we will discuss the aims and content of the book in more detail.
Our first slogan is the simplest and most fundamental. It sets the basic theme on which the others elaborate:
Slogan 1: Modal languages are simple yet expressive languages for talking about relational structures.
In this book we will be examining various propositional modal languages: that is, the familiar language of propositional logic augmented by a collection of modal operators. Like the familiar boolean connectives (¬ ∧, ∨, →, ⊥, and ⊤), modal operators do not bind variables. Thus, as far as syntax is concerned, we will be working with the simplest non-trivial languages imaginable.
But in spite of their simplicity, propositional modal languages turn out to be an excellent way of talking about relational structures, and this book is essentially an attempt to map out some of the ramifications of this.
This chapter is about the completeness — and incompleteness — of normal modal logics. As we saw in Section 1.6, normal modal logics are collections of formulas satisfying certain simple closure conditions. They can be specified either syntactically or semantically, and this gives rise to the questions which dominate the chapter: Given a semantically specified logic, can we give it a syntactic characterization, and if so, how? And: Given a syntactically specified logic, can we give it a semantic characterization (and in particular, a characterization in terms of frames), and if so, how? To answer either type of question we need to know how to prove (soundness and) completeness theorems, and the bulk of the chapter is devoted to developing techniques for doing so.
The chapter has two major parts. The first, comprising the first four sections, is an introduction to basic completeness theory. It introduces canonical models, explains and applies the completeness-via-canonicity proof technique, discusses the Sahlqvist Completeness Theorem, and proves two fundamental limitative results. The material introduced in these sections (which are all on the basic track) is needed to follow the second part and the algebraic investigations of Chapter 5.
In the second part of the chapter we turn to the following question: what are we to do when canonicity fails? (As will become clear, canonicity failure is a fact of life for temporal logic, propositional dynamic logic, and other applied modal languages.)
Here we list and briefly describe a number of textbooks, survey articles, and more specialized books which the reader may find useful. We have not aimed for comprehensive coverage. Rather, we have commented on the sources the reader is most likely to run into, provided pointers to topics not discussed in this book (in particular, modal proof theory and theorem proving, and first-order modal logic) and drawn attention to some interesting emerging themes.
This is a good place to mention the Advances in Modal Logic initiative, which attempts to bring together scholars working in various areas of modal logic and its applications. You can find out more at: http://www.aiml.net. The collection Advances in Modal Logic, Volume 1, edited by Kracht et al. [281], contains a selection of papers from the first conference hosted by the initiative. Selections from later workshops have also been published; see Advances in Modal Logic, Volume 2, edited by Zakharyaschev et al. [469]; Advances in Modal Logic, Volume 3, edited by Wolter et al. [461]; and Advances in Modal Logic, Volume 4, edited by Balbiani et al. [18].
Textbooks on Modal Logic
To start, here is an annotated list of textbooks on modal logic.
ο A Manual of Intensional Logic, van Benthem [44]. What is modal logic? What is not! This inspiring little book takes the reader on a whirlwind tour of the many faces of modal logic.
In this chapter we investigate the computability and complexity of normal modal logics. In particular, we examine the computability of satisfiability problems (given a modal formula ø and a class of models M, is it computable whether ø is M-satisfiable?) and validity problems (given a modal formula ø and a class of models M, is it computable whether ø is valid on M?). When the answer is ‘yes’, we probe further: how complex is the problem — in particular, what resources of time (that is, computation steps) or space (that is, memory) are needed to carry out the required computations? When the answer is ‘no’, we pose a similar question: how uncomputable is the problem? There are vast differences in the complexities of modal satisfiability problems: some are no worse than the satisfiability problem for propositional calculus, while others are highly undecidable.
This chapter has two main parts. The first, consisting of the five sections on the basic track, introduces the basic ideas and discusses modal (un-)decidability. Three techniques for proving decidability are discussed (finite models, interpretations in monadic second-order theories of trees, and quasi-models and mosaics) and undecidability is approached via tiling problems. In the second part, consisting of the last three sections of the chapter, we examine the complexity of some key modal satisfiability problems. These sections are on the advanced track, but the initial part of each of them should be accessible to all readers.
In this chapter we develop an algebraic semantics for modal logic. The basic idea is to extend the algebraic treatment of classical propositional logic (which uses boolean algebras) to modal logic. The algebras employed to do this are called boolean algebras with operators (BAOs). The boolean part handles the underlying propositional logic, the additional operators handle the modalities.
But why algebraize modal logic? There are two main reasons. First, the algebraic perspective allows us to bring powerful new techniques to bear on modal-logical problems. Second, the algebraic semantics turns out to be better-behaved than frame-based semantics: we will be able to prove an algebraic completeness result for every normal modal logic. As our discussion of incompleteness in Section 4.4 makes clear, no analogous result holds for frames.
This chapter has three main parts. The first, consisting of the first three sections, introduces the algebraic approach: we survey the basic ideas in the setting of classical propositional logic, extend them to modal logic, and prove the Jónsson-Tarski Theorem. The second part, which consists of the fourth section, introduces duality theory, the study of correspondences between the universe of algebras and the universe of frames. The last part (the only part on the advanced track) is devoted to general frames. These turn out to be set-theoretic representations of boolean algebras with operators, and we examine their properties in detail, and use them to prove the Sahlqvist Completeness Theorem. Background information on universal algebra can be found in Appendix B.
As promised in the preface, this chapter is the party at the end of the book. We have chosen six of our favorite topics in extended modal logic, and we are going to tell you a little about them. There is no point in offering detailed advice here: simply read these introductory remarks and the following Chapter Guide and turn to whatever catches your fancy.
Roughly speaking, the chapter works its way from fairly concrete to more abstract. A recurrent theme is the interplay between modal and first-order ideas. We start by introducing a number of important logical modalities (and learn that we have actually been using logical modalities all through the book). We then examine languages containing the since and until operators, and show that first-order expressive completeness can be used to show modal deductive completeness. We then explore two contrasting strategies, namely the strategy underlying hybrid logic (import first-order ideas into modal logic, notably the ability to refer to worlds) and the strategy that leads to the guarded fragment of first-order logic (export the modal locality intuition to classical logic). Following this we discuss multi-dimensional modal logic (in which evaluation is performed at a sequence of states), and see that first-order logic itself can be viewed as modal logic. We conclude by proving a Lindström Theorem for modal logic.
Chapter guide
Section 7.1: Logical Modalities (Basic track). Logical modalities have a fixed interpretation in every model.
Languages of propositional modal logic are propositional languages to which sentential operators (usually called modalities or modal operators) have been added. In spite of their syntactic simplicity, such languages turn out to be useful tools for describing and reasoning about relational structures. A relational structure is a non-empty set on which a number of relations have been defined; they are widespread in mathematics, computer science, artificial intelligence and linguistics, and are also used to interpret first-order languages.
Now, when working with relational structures we are often interested in structures possessing certain properties. Perhaps a certain transitive binary relation is particularly important. Or perhaps we are interested in applications where ‘dead ends,’ ‘loops,’ and ‘forkings’ are crucial, or where each relation is a partial function. Wherever our interests lie, modal languages can be useful, for modal operators are essentially a simple way of accessing the information contained in relational structures. As we will see, the local and internal access method that modalities offer is strong enough to describe, constrain, and reason about many interesting and important aspects of relational structures.
Much of this book is essentially an exploration and elaboration of these remarks. The present chapter introduces the concepts and terminology we will need, and the concluding section places them in historical context.
Chapter guide
Section 1.1: Relational Structures. Relational structures are defined, and a number of examples are given.
Section 1.2: Modal Languages. We define the basic modal language and some of its extensions.
In this appendix we introduce the basic ideas of computability theory (the study of which problems are, and which problems are not, computationally solvable), and provide some background information on complexity theory (the study of the computational resources required to solve problems).
For detailed discussions of computability, see Rogers [391] or Odifreddi [343]. For accessible introductions to the subject, see Boolos and Jeffrey [70], or Cutland [103]. But the single most useful source is probably the (second edition of) Lewis and Papadimitriou [301]; this introduces computability theory, and then goes on to treat computational complexity. For more on computational complexity, try Garey and Johnson [163] and Papadimitriou [352]. Garey and Johnson's book is a source for information on NP-complete problems, but it discusses the basic ideas of computational complexity lucidly, and gives background information on other complexity classes. Papadimitriou's book is a well-written introduction to computational complexity covering far more than is needed to understand Chapter 6; if you want to go deeper into computational complexity, it is a good place to start.
Computability and Uncomputability
To prove theorems about computability — and in particular to prove that some problem is not computable — we need a robust mathematical model of computability. One of the most widely used models is the Turing machine. A Turing machine is a device which manipulates symbols written on a tape. The symbols are taken from some alphabet fixed in advance (often the alphabet simply consists of the two symbols 0 and 1).
In this book we've talked a lot about programming using ENVY System classes. At the simplest level this involves implementing methods such as loaded or removing on our own application classes. At the most complex level, we've seen code to create checkpoint versions directly out of application editions in the repository. All of this requires manipulating the classes that make up ENVY itself.
This kind of programming can be quite difficult. Although we refer to this as an API, many of these classes and methods are not well documented and have changed over time. The most difficult part of writing ENVY system code is understanding the relationships between components and finding the methods necessary to manipulate these relationships. This is complicated by a few factors. First, the components are not directly related through instance variables; rather, many of the most important relationships are implicit in methods. Further, these methods are not concentrated in the components themselves, but are spread out over three distinct groups of classes: the browsers, the “helper” classes such as EmInterface, and the components themselves.
In the earliest versions of ENVY almost everything was done directly in the browser code. Over time much of the code was moved to the components themselves or to utility classes such as EtTools and EmInterface. This reduced code duplication but the utility classes became very complex, with many methods that manipulate different types of components, making it harder to find any given piece of functionality.
So far, we've seen ENVY as a code organizing tool and as a version control system. These are powerful facilities, but the most important aspects of ENVY are in its support for working in teams. ENVY differs from traditional team programming tools in many respects. Because it is a Smalltalk-based tool it can deal with software components as objects, rather than working with coarse-grained source files. It also breaks away from the check-in/check-out mechanisms to a more concurrent mechanism in which conflicts are resolved through component ownership and through separation of the versioning and releasing operations. This enables developers to work with maximum concurrency while still providing a disciplined process that maintains the consistency of the system.
Team Development with Class Editions
Recall that applications specify a group of class versions that are loaded when the application is loaded, and that these are called the released versions. As we look at team development, this concept becomes more important, and we will see how class and application editions and versions are used to control the team development process.
Before we begin, let's review what it means for a class version to be released:
▪ When an application edition is loaded, the released versions of its classes are automatically loaded.
▪ Once an application is versioned, the list of released class versions cannot be modified.
▪ Most important, the released version is the approved or official edition. Ifwe release a class, we are saying it is stable enough and approved for otherdevelopers to use.