We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
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 [email protected]
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 book aims to be an introduction to model theory which can be used without any background in logic. We start from scratch, introducing first-order logic, structures, languages etc. but move on fairly quickly to the fundamental results in model theory and stability theory. We also decided to cover simple theories and Hrushovski constructions, which over the last decade have developed into an important subject. We try to give the necessary background in algebra, combinatorics and set theory either in the course of the text or in the corresponding section of the appendices. The exercises form an integral part of the book. Some of them are used later on, others complement the text or present aspects of the theory that we felt should not be completely ignored. For the most important exercises (and the more difficult ones) we include (hints for) solutions at the end of the book. Those exercises which will be used in the text have their solution marked with an asterisk.
The book falls into four parts. The first three chapters introduce the basics as would be contained in a course giving a general introduction to model theory. This first part ends with Chapter 4 which introduces and explores the notion of a type, the topology on the space of types and a way to make sure that a certain type will not be realized in a model to be constructed. The chapter ends with Fraïssé's amalgamation method, a simple but powerful tool for constructing models.
This book is an up-to-date introduction to simple theories and hyperimaginaries, with special attention to Lascar strong types and elimination of hyperimaginary problems. Assuming only knowledge of general model theory, the foundations of forking, stability and simplicity are presented in full detail. The treatment of the topics is as general as possible, working with stable formulas and types and assuming stability or simplicity of the theory only when necessary. The author offers an introduction to independence relations as well as a full account of canonical bases of types in stable and simple theories. In the last chapters the notions of internality and analyzability are discussed and used to provide a self-contained proof of elimination of hyperimaginaries in supersimple theories.
This book is devoted to recursion in programming, the technique by which the solution to a problem is expressed partly in terms of the solution to a simpler version of the same problem. Ultimately the solution to the simplest version must be given explicitly. In functional programming, recursion has received its full due since it is quite often the only repetitive construct. However, the programming language used here is Pascal and the examples have been chosen accordingly. It makes an interesting contrast with the use of recursion in functional and logic programming. The early chapters consider simple linear recursion using examples such as finding the highest common factor of a pair of numbers, and processing linked lists. Subsequent chapters move up through binary recursion, with examples which include the Towers of Hanoi problem and symbolic differentiation, to general recursion. The book contains well over 100 examples.
Driven by the question, 'What is the computational content of a (formal) proof?', this book studies fundamental interactions between proof theory and computability. It provides a unique self-contained text for advanced students and researchers in mathematical logic and computer science. Part I covers basic proof theory, computability and Gödel's theorems. Part II studies and classifies provable recursion in classical systems, from fragments of Peano arithmetic up to Π11–CA0. Ordinal analysis and the (Schwichtenberg–Wainer) subrecursive hierarchies play a central role and are used in proving the 'modified finite Ramsey' and 'extended Kruskal' independence results for PA and Π11–CA0. Part III develops the theoretical underpinnings of the first author's proof assistant MINLOG. Three chapters cover higher-type computability via information systems, a constructive theory TCF of computable functionals, realizability, Dialectica interpretation, computationally significant quantifiers and connectives and polytime complexity in a two-sorted, higher-type arithmetic with linear logic.
This book is about the deep connections between proof theory and recursive function theory. Their interplay has continuously underpinned and motivated the more constructively orientated developments in mathematical logic ever since the pioneering days of Hilbert, Gödel, Church, Turing, Kleene, Ackermann, Gentzen, Péter, Herbrand, Skolem, Malcev, Kolmogorov and others in the 1930s. They were all concerned in one way or another with the links between logic and computability. Gödel's theorem utilized the logical representability of recursive functions in number theory; Herbrand's theorem extracted explicit loop-free programs (sets of witnessing terms) from existential proofs in logic; Ackermann and Gentzen analysed the computational content of ε-reduction and cut-elimination in terms of transfinite recursion; Turing not only devised the classical machine-model of computation, but (what is less well known) already foresaw the potential of transfinite induction as a method for program verification; and of course the Herbrand–Gödel–Kleene equation calculus presented computability as a formal system of equational derivation (with “call by value” being modelled by a substitution rule which itself is a form of “cut” but at the level of terms).
That these two fields—proof and recursion—have developed side by side over the intervening seventy-five years so as to form now a cornerstone in the foundations of computer science, testifies to the power and importance of mathematical logic in transferring what was originally a body of philosophically inspired ideas and results, down to the frontiers of modern information technology.
The treatment of our subject—proof and computation—would be incomplete if we could not address the issue of extracting computational content from formalized proofs. The first author has over many years developed a machine-implemented proof assistant, Minlog, within which this can be done where, unlike many other similar systems, the extracted content lies within the logic itself. Many non-trivial examples have been developed, illustrating both the breadth and the depth of Minlog, and some of them will be seen in what follows. Here we shall develop the theoretical underpinnings of this system. It will be a theory of computable functionals (TCF), a self-generating system built from scratch and based on minimal logic, whose intended model consists of the computable functions on partial continuous objects, as treated in the previous chapter. The main tool will be (iterated) inductive definitions of predicates and their elimination (or least-fixed-point) axioms. Its computational strength will be roughly that of ID<ω, but it will be more adaptable and computationally applicable.
After developing the system TCF, we shall concentrate on delicate questions to do with finding computational content in both constructive and classical existence proofs. We discuss three “proof interpretations” which achieve this task: realizability for constructive existence proofs and, for classical proofs, the refined A-translation and Gödel's Dialectica interpretation. After presenting these concepts and proving the crucial soundness theorem for each of them, we address the question of how to implement such proof interpretations.