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 volume introduces the fundamental results and the state of the art in infinite duration games on graphs. These versatile game models first appeared in the study of automata and logic, but later became important for program verification and synthesis. They have many more applications. In particular, this book covers models from the fields of optimisation, reinforcement learning, model theory, and set theory. The material is presented at a level accessible to beginning graduate students, requiring only a basic understanding of discrete algorithms and graphs. The book's primary objective is constructing efficient algorithms for analysing different types of games. Rather than describe their implementation in full detail, it investigates their theoretical foundations and proves their properties and winning strategies. This tutorial reference from experts across the field is ideal for students, researchers, and professionals in logic and automata, verification and synthesis, and related fields.
Learn to program more effectively, faster, with better results… and enjoy both the learning experience and the benefits it ultimately brings. While this undergraduate-level textbook is motivated by formal methods, so encouraging habits that lead to correct and concise computer programs, its informal presentation sidesteps any rigid reliance on formal logic which programmers are sometimes led to believe is required. Instead, a straightforward and intuitive use of simple 'What's true here?' comments encourages precision of thought without prescription of notation. Drawing on decades of the author's experience in teaching/industry, the text's careful presentation concentrates on key principles of structuring and reasoning about programs, applying them first to small, understandable algorithms. Then students can concentrate on turning those reliably into their corresponding – and correct – program source codes. The text includes over 200 exercises, for many of which full solutions are provided. A set of all solutions is available for instructors' use.
Computable structure theory quantifies and studies the relative complexity of mathematical structures. This text, in conjunction with the author's previous volume, represents the first full monograph on computable structure theory in two decades. It brings new results of the author together with many older results that were previously scattered across the literature and presents them all in a coherent framework. Geared towards graduate students and researchers in mathematical logic, the book enables the reader to learn all the main results and techniques in the area for application in their own research. While the previous volume focused on countable structures whose complexity can be measured within arithmetic, this second volume delves into structures beyond arithmetic, moving into the realm of the hyperarithmetic and the infinitary languages.
What defines a correct program? What education makes a good programmer? The answers to these questions depend on whether programs are seen as mathematical entities, engineered socio-technical systems or media for assisting human thought. Programmers have developed a wide range of concepts and methodologies to construct programs of increasing complexity. This book shows how those concepts and methodologies emerged and developed from the 1940s to the present. It follows several strands in the history of programming and interprets key historical moments as interactions between five different cultures of programming. Rooted in disciplines such as mathematics, electrical engineering, business management or psychology, the different cultures of programming have exchanged ideas and given rise to novel programming concepts and methodologies. They have also clashed about the nature of programming; those clashes remain at the core of many questions about programming today. This title is also available as Open Access on Cambridge Core.
This up-to-date introduction to type theory and homotopy type theory will be essential reading for advanced undergraduate and graduate students interested in the foundations and formalization of mathematics. The book begins with a thorough and self-contained introduction to dependent type theory. No prior knowledge of type theory is required. The second part gradually introduces the key concepts of homotopy type theory: equivalences, the fundamental theorem of identity types, truncation levels, and the univalence axiom. This prepares the reader to study a variety of subjects from a univalent point of view, including sets, groups, combinatorics, and well-founded trees. The final part introduces the idea of higher inductive type by discussing the circle and its universal cover. Each part is structured into bite-size chapters, each the length of a lecture, and over 200 exercises provide ample practice material.
Everywhere one looks, one finds dynamic interacting systems: entities expressing and receiving signals between each other and acting and evolving accordingly over time. In this book, the authors give a new syntax for modeling such systems, describing a mathematical theory of interfaces and the way they connect. The discussion is guided by a rich mathematical structure called the category of polynomial functors. The authors synthesize current knowledge to provide a grounded introduction to the material, starting with set theory and building up to specific cases of category-theoretic concepts such as limits, adjunctions, monoidal products, closures, comonoids, comodules, and bicomodules. The text interleaves rigorous mathematical theory with concrete applications, providing detailed examples illustrated with graphical notation as well as exercises with solutions. Graduate students and scholars from a diverse array of backgrounds will appreciate this common language by which to study interactive systems categorically.
Petri nets are one of the most popular tools for modeling distributed systems. This book provides a modern look at the theory behind them, by studying three classes of nets that model (i) sequential systems, (ii) non-communicating parallel systems, and (iii) communicating parallel systems. A decidable and causality respecting behavioral equivalence is presented for each class, followed by a modal logic characterization for each equivalence. The author then introduces a suitable process algebra for the corresponding class of nets and proves that the behavioral equivalence proposed for each class is a congruence for the operator of the corresponding process algebra. Finally, an axiomatization of the behavioral congruence is proposed. The theory is introduced step by step, with ordinary-language explanations and examples provided throughout, to remain accessible to readers without specialized training in concurrency theory or formal logic. Exercises with solutions solidify understanding, and the final chapter hints at extensions of the theory.
Providing in-depth coverage, this book covers the fundamentals of computation and programming in C language. Essential concepts including operators and expressions, input and output statements, loop statements, arrays, pointers, functions, strings and preprocessors are described in a lucid manner. A unique approach - 'Learn by quiz' - features questions based on confidence-based learning methodology. It helps the reader to identify the right answer with adequate explanation and reasoning as to why the other options are incorrect. Computer programs and review questions are interspersed throughout the text. The book is appropriate for undergraduate students of engineering, computer science and information technology. It can be used for self-study and assists in the understanding of theoretical concepts and their applications.
Session types are type-theoretic specifications of communication protocols in concurrent or distributed systems. By codifying the structure of communication, they make software more reliable and easier to construct. Over recent decades, the topic has become a large and active research area within the field of programming language theory and implementation. Written by leading researchers in the field, this is the first text to provide a comprehensive introduction to the key concepts of session types. The thorough theoretical treatment is complemented by examples and exercises, suitable for use in a lecture course or for self-study. It serves as an entry point to the topic for graduate students and researchers.
Mobile systems, whose components communicate and change their structure, now pervade the informational world and the wider world of which it is a part. The science of mobile systems is as yet immature, however. This book presents the pi-calculus, a theory of mobile systems. The pi-calculus provides a conceptual framework for understanding mobility, and mathematical tools for expressing systems and reasoning about their behaviours. The book serves both as a reference for the theory and as an extended demonstration of how to use pi-calculus to describe systems and analyse their properties. It covers the basic theory of pi-calculus, typed pi-calculi, higher-order processes, the relationship between pi-calculus and lambda-calculus, and applications of pi-calculus to object-oriented design and programming. The book is written at the graduate level, assuming no prior acquaintance with the subject, and is intended for computer scientists interested in mobile systems.
In a technologically advanced and competitive landscape dominated by major tech companies and burgeoning start-ups, the key asset lies in boosting monthly active users. Traditionally, product design has relied on fragmented insights from personal experience, common sense, or isolated experiments. This work endeavours to establish a theoretical framework for predicting and influencing the digital behaviour of technology users. Drawing on over a century of scientific research in behaviour, cognition, and physiology, this presents a comprehensive approach to customizing digital stimuli. The objective is to enhance user interactions with digital and virtual environments. Through real and cost-effective examples, diagrams, and formulas, the text offers theoretical knowledge and a practical methodology to elevate digital product designs, setting them apart from the competition. With the potential to reshape the digital design landscape, this book emerges as a game-changer, promising to revolutionize how digital products and services are conceived and delivered.
This is the first book to revisit the theory of rewriting in the context of strict higher categories, through the unified approach provided by polygraphs, and put it in the context of homotopical algebra. The first half explores the theory of polygraphs in low dimensions and its applications to the computation of the coherence of algebraic structures. Illustrated with algorithmic computations on algebraic structures, the only prerequisite in this section is basic category theory. The theory is introduced step-by-step, with detailed proofs. The second half introduces and studies the general notion of n-polygraph, before addressing the homotopy theory of these polygraphs. It constructs the folk model structure on the category on strict higher categories and exhibits polygraphs as cofibrant objects. This allows the formulation of higher-dimensional generalizations of the coherence results developed in the first half. Graduate students and researchers in mathematics and computer science will find this work invaluable.
Providing an in-depth treatment of an exciting research area, this text's central topics are initial algebras and terminal coalgebras, primary objects of study in all areas of theoretical computer science connected to semantics. It contains a thorough presentation of iterative constructions, giving both classical and new results on terminal coalgebras obtained by limits of canonical chains, and initial algebras obtained by colimits. These constructions are also developed in enriched settings, especially those enriched over complete partial orders and complete metric spaces, connecting the book to topics like domain theory. Also included are an extensive treatment of set functors, and the first book-length presentation of the rational fixed point of a functor, and of lifting results which connect fixed points of set functors with fixed points of endofunctors on other categories. Representing more than fifteen years of work, this will be the leading text on the subject for years to come.
The latest version of 'Programming in Ada' covers the full details of the core language Ada 2022 as approved by ISO in 2023, including new features that aid program proof and the efficient use of multicore architectures. The book is arranged in four parts. The first part introduces the key ideas to the newcomer with a working example illustrating the basic ideas. The algorithmic features, structural features such as OOP and multitasking, and details of the standard library and interaction with the external environment are all covered in subsequent parts. This comprehensive guide includes several working examples and is enhanced by a range of supplementary online materials, including a dozen complete executable programs, five of which illustrate important new features. 'Programming in Ada' is a must-have for anyone looking to learn Ada programming language, and will serve as a definitive reference for years to come.
Developing the theory up to the current state-of-the art, this book studies the minimal model of the Largest Suslin Axiom (LSA), which is one of the most important determinacy axioms and features prominently in Hugh Woodin's foundational framework known as the Ultimate L. The authors establish the consistency of LSA relative to large cardinals and develop methods for building models of LSA from other foundational frameworks such as Forcing Axioms. The book significantly advances the Core Model Induction method, which is the most successful method for building canonical inner models from various hypotheses. Also featured is a proof of the Mouse Set Conjecture in the minimal model of the LSA. It will be indispensable for graduate students as well as researchers in mathematics and philosophy of mathematics who are interested in set theory and in particular, in descriptive inner model theory.
Introducing Stone–Priestley duality theory and its applications to logic and theoretical computer science, this book equips graduate students and researchers with the theoretical background necessary for reading and understanding current research in the area. After giving a thorough introduction to the algebraic, topological, logical, and categorical aspects of the theory, the book covers two advanced applications in computer science, namely in domain theory and automata theory. These topics are at the forefront of active research seeking to unify semantic methods with more algorithmic topics in finite model theory. Frequent exercises punctuate the text, with hints and references provided.
The Java programming language has been one of the most powerful tools available to computer programmers since its inception in 1995. It has also consistently changed since then, making it a vast and powerful resource for object-oriented programming today. This lucid textbook introduces the student not only to the nuances of object-oriented programming, but also to the many syntaxes and semantics of the modern Java language. Each concept of programming is explained, and then illustrated with small but effective ready-to-run programs. Important points to be noted have been emphasized and hints have been given at the end of each discussion so that programmers are careful to avoid common pitfalls. Finally, a number of practice problems taken from real world scenarios encourage the student to think in terms of problem solving, consolidating the knowledge gained.
How should we treat the liar and kindred paradoxes? A Theory of Truth argues that we should diverge from classical logic, and presents a new formal theory of truth. The theory does not incorporate contradictions and is not substructural, but deviates from classical logic significantly, and endorses principles like 'No sentence is both true and false' and 'No sentence is neither true nor false'. The book starts with an introduction to the paradoxes, suitable for newcomers to the subject, before presenting its approach. Four versions of the theory are covered, extending the theory to a determinacy operator and to a full first-order language with quantifiers. Each includes all Tarskian biconditionals that can be formulated in its language. The author uses original methods to prove the consistency of each version and compares the theory to alternative non-classical theories, including Field's paracomplete approach, Ripley's nontransitive system and Zardini's contraction-free calculus.
String diagrams are powerful graphical methods for reasoning in elementary category theory. Written in an informal expository style, this book provides a self-contained introduction to these diagrammatic techniques, ideal for graduate students and researchers. Much of the book is devoted to worked examples highlighting how best to use string diagrams to solve realistic problems in elementary category theory. A range of topics are explored from the perspective of string diagrams, including adjunctions, monad and comonads, Kleisli and Eilenberg–Moore categories, and endofunctor algebras and coalgebras. Careful attention is paid throughout to exploit the freedom of the graphical notation to draw diagrams that aid understanding and subsequent calculations. Each chapter contains plentiful exercises of varying levels of difficulty, suitable for self-study or for use by instructors.