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.
This is a book about structural operational semantics; more precisely it is a book that describes how this approach to semantics can be used to describe common programming language constructs and to reason about the behaviour of programs.
The text grew out of the lecture notes that I have used over a period of more than 10 years in the course Syntax and semantics which is taught to all students following the various degree programmes in computer science at Aalborg University. What began as a 10-page set of notes in Danish is now a textbook in English.
The book also includes chapters on related material, namely short introductions to type systems, denotational semantics and the mathematics necessary to understand recursive definitions.
Related work
This work was inspired by lecture notes by Plotkin (1981) (also written in Denmark), where this approach to programming language semantics was first presented.
The topic of structural operational semantics also appears in later books, three of which I will mention here.
Reynolds' book (Reynolds, 1999) is an excellent text that covers some of the same topics as this book but uses denotational and axiomatic semantics as well as structural operational semantics.
The book by Winskel (1993) is another very good textbook that covers many of the same topics as Reynolds' book.
Finally, I should mention Nielson and Nielson (2007), which introduces and relates denotational, axiomatic and structural operational semantics and then gives an introduction to how these can be used in connection with static program analysis.
This chapter gives a short introduction to functional programming languages and their structural operational semantics.
In the first sections we take a look at the characteristic features of programming languages of this kind (Section 12.1) and how they arose (Section 12.2). Then, in Section 12.3, we provide a short introduction to the theoretical foundations of functional programming languages, the λ-calculus.
Finally, in Section 12.4 we introduce the language Flan, which is a subset of ML, and show how to give it a big-step and a small-step semantics.
What is a functional programming language?
In languages such as C, Java, Pascal and Bims variable assignment is a central language construct. A program in any of these languages is essentially a highly structured sequence of variable assignments that change the contents of the store. Languages with this central characteristic are known as imperative languages. It is not particularly surprising that the environment-store model is well suited for the semantics of imperative languages.
However, there are programming languages that take a very different approach. A functional programming language is an expression-based language – a functional program is essentially a collection of declarations of functions, as opposed to a sequence of statements. A function f is a function in the sense of ordinary mathematics – given an argument x, the value of the application f(x) depends only on the value of x.
§1. The Hilbert problems and Hilbert's Program. In 1900 the great mathematician David Hilbert laid down a list of 23 mathematical problems which exercised a great influence on subsequent mathematical research. From the perspective of foundational studies, it is noteworthy that Hilbert's Problems 1 and 2 are squarely in the area of foundations of mathematics, while Problems 10 and 17 turned out to be closely related to mathematical logic.
1. Cantor's Problem of the Cardinal Number of the Continuum.
2. Compatibility of the Arithmetical Axioms.
10. Determination of the Solvability of a Diophantine Equation.
17. Expression of Definite Forms by Squares.
Our starting point here is Problem 2, the consistency (= “compatibility”) of the arithmetical axioms. In a later paper published in 1926, Hilbert further elaborated his ideas on the importance of consistency proofs. Hilbert's Program asks for a finitistic consistency proof for all of mathematics. Although we are not concerned with consistency proofs in Hilbert's sense, we are interested in certain logical structures which grew out of Hilbert's original concerns.
In answer to Hilbert's Problem 2 and Hilbert's Program, Gödel proved the famous Incompleteness Theorems. Let T be any theory in the predicate calculus satisfying certain well-known mild conditions. Then we have the following results:
T is incomplete (First Incompleteness Theorem, Gödel 1931).
The statement “T is consistent” is not a theorem of T
Kurt Gödel (1906–1978) with his work on the constructible universe L established the relative consistency of the Axiom of Choice (AC) and the Continuum Hypothesis (CH). More broadly, he ensured the ascendancy of first-order logic as the framework and a matter of method for set theory and secured the cumulative hierarchy view of the universe of sets. Gödel thereby transformed set theory and launched it with structured subject matter and specific methods of proof. In later years Gödel worked on a variety of settheoretic constructions and speculated about how problems might be settled with new axioms. We here chronicle this development from the point of view of the evolution of set theory as a field of mathematics. Much has been written, of course, about Gödel's work in set theory, from textbook expositions to the introductory notes to his collected papers. The present account presents an integrated view of the historical and mathematical development as supported by his recently published lectures and correspondence. Beyond the surface of things we delve deeper into the mathematics. What emerges are the roots and anticipations in work of Russell and Hilbert, and most prominently the sustained motif of truth as formalizable in the “next higher system”. We especially work at bringing out how transforming Gödel's work was for set theory. It is difficult now to see what conceptual and technical distance Gödel had to cover and how dramatic his re-orientation of set theory was.
The philosopher Rudolf Carnap (1891–1970), although not himself an originator of mathematical advances in logic, was much involved in the development of the subject. He was the most important and deepest philosopher of the Vienna Circle of logical positivists, or, to use the label Carnap later preferred, logical empiricists. It was Carnap who gave the most fully developed and sophisticated form to the linguistic doctrine of logical and mathematical truth: the view that the truths of mathematics and logic do not describe some Platonistic realm, but rather are artifacts of the way we establish a language in which to speak of the factual, empirical world, fallouts of the representational capacity of language. (This view has its roots in Wittgenstein's Tractatus, but Wittgenstein's remarks on mathematics beyond first-order logic are notoriously sparse and cryptic.) Carnap was also the thinker who, after Russell, most emphasized the importance of modern logic, and the distinctive advances it enables in the foundations of mathematics, to contemporary philosophy. It was through Carnap's urgings, abetted by Hans Hahn, once Carnap arrived in Vienna as Privatdozent in philosophy in 1926, that the Vienna Circle began to take logic seriously and that positivist philosophy began to grapple with the question of how an account of mathematics compatible with empiricism can be given (see Goldfarb 1996).
A particular facet of Carnap's influence is not widely appreciated: it was Carnap who introduced Kurt Gödel to logic, in the serious sense.
There are some puzzles about Gödel's published and unpublished remarks concerning finitism that have led some commentators to believe that his conception of it was unstable, that he oscillated back and forth between different accounts of it. I want to discuss these puzzles and argue that, on the contrary, Gödel's writings represent a smooth evolution, with just one rather small double-reversal, of his view of finitism. He used the term “finit” (in German) or “finitary” or “finitistic” primarily to refer to Hilbert's conception of finitary mathematics. On two occasions (only, as far as I know), the lecture notes for his lecture at Zilsel's (Gödel [*1938a]) and the lecture notes for a lecture at Yale (Gödel [*1941]), he used it in a way that he knew—in the second case, explicitly—went beyond what Hilbert meant.
Early in his career, he believed that finitism (in Hilbert's sense) is openended, in the sense that no correct formal system can be known to formalize all finitist proofs and, in particular, all possible finitist proofs of consistency of first-order number theory, PA; but starting in the Dialectica paper Gödel [1958], he expressed in writing the view that ε0 is an upper bound on the finitist ordinals, and that, therefore, the consistency of PA, cannot be finitistically proved. Although I do not understand the “therefore” (see §8 below), here was a genuine change in his views.
Abstract. Two young logicians, whose work had a dramatic impact on the direction of logic, exchanged two letters in early 1931. Jacques Herbrand initiated the correspondence on 7 April and Kurt Gödel responded on 25 July, just two days before Herbrand died in a mountaineering accident at La Bérarde (Isère). Herbrand's letter played a significant role in the development of computability theory. Gödel asserted in his 1934 Princeton Lectures and on later occasions that it suggested to him a crucial part of the definition of a general recursive function. Understanding this role in detail is of great interest as the notion is absolutely central. The full text of the letter had not been available until recently, and its content (as reported by Gödel) was not in accord with Herbrand's contemporaneous published work. Together, the letters reflect broader intellectual currents of the time: they are intimately linked to the discussion of the incompleteness theorems and their potential impact on Hilbert's Program.
Introduction. Two important papers in mathematical logic were published in 1931, one by Jacques Herbrand in the Journal für reine und angewandte Mathematik and the other by Kurt Gödel in the Monatshefte für Mathematik und Physik. At age 25, Gödel was Herbrand's elder by just two years. Their work dramatically impacted investigations in mathematical logic, but also became central for theoretical computer science as that subject evolved in the fifties and sixties.
The best known and most widely discussed aspect of Kurt Gödel's philosophy of mathematics is undoubtedly his robust realism or platonism about mathematical objects and mathematical knowledge. This has scandalized many philosophers but probably has done so less in recent years than earlier. Bertrand Russell's report in his autobiography of one or more encounters with Gödel is well known:
Gödel turned out to be an unadulterated Platonist, and apparently believed that an eternal “not” was laid up in heaven, where virtuous logicians might hope to meet it hereafter.
On this Gödel commented:
Concerning my “unadulterated” Platonism, it is no more unadulterated than Russell's own in 1921 when in the Introduction to Mathematical Philosophy … he said, “Logic is concerned with the real world just as truly as zoology, though with its more abstract and general features.” At that time evidently Russell had met the “not” even in this world, but later on under the influence of Wittgenstein he chose to overlook it.
One of the tasks I shall undertake here is to say something about what Gödel's platonism is and why he held it.
A feature of Gödel's view is the manner in which he connects it with a strong conception of mathematical intuition, strong in the sense that it appears to be a basic epistemological factor in knowledge of highly abstract mathematics, in particular higher set theory. Other defenders of intuition in the foundations of mathematics, such as Brouwer and the traditional intuitionists, have a much more modest conception of what mathematical intuition will accomplish.
There are many combinatorial properties that are shared by all constructions using the trees of strategies approach, some of which are relevant only to constructions of a fixed level. We gather some of these properties together in this chapter. We have attempted to isolate many combinatorial lemmas in this chapter, so that the proofs presented in other chapters depend only on the statements of these lemmas together with some special properties of the construction.
The lemmas of the current chapter are true of all assignments of requirements and derivatives to trees that satisfy the conditions of Chapter 2. These lemmas deal, among other things, with existence of initial and principal derivatives, an analysis of the ability to take both switching and nonswitching extensions of nodes, an analysis of the link creation process, and an analysis of the situations in which we can find free derivatives of a node. We begin, in Section 8.1, with some lemmas about the path generating and outcome functions λ and out. In Section 8.2, we demonstrate the ability to take both switching and nonswitching extensions. We prove some technical lemmas about links in Section 8.3, and apply these in Section 8.4 to conclude that certain nodes will be free at various stages of the construction. More general theorems are proved in Section 8.5. The remaining sections deal with lemmas that are level-specific, i.e., depend on the specific starting tree, or are more technical in nature.
Many of the lemmas deal with relationships between successive trees Tk and Tk+1. We will state these lemmas in full generality, but frequently present only the proof for k = 0, noting that the proofs relativize.