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.
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.
Learn to program more effectively, faster, with better results… and enjoy both the learning experience and the benefits it ultimately brings. This undergraduate-level textbook is motivated by Formal Methods, encouraging habits that lead to correct and concise computer programs; but its informal approach sidesteps reliance on Formal Logic that 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, with full solutions available online for instructors' use, plus mini-projects and automated quizzes to support instructors in building their own courses.
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.
We define the category of polynomial functors by introducing its morphisms, called dependent lenses or lenses for short, and we show how they model interaction protocols. We introduce several methods for working with these lenses, including visual tools such as corolla forests and polybox pictures. We explain how these lenses represent bidirectional communication between polynomials and describe how they compose. By the end of the chapter, readers will have a comprehensive understanding of how polynomial functors and their morphisms can be used to model complex interactive behaviors.
We review relevant concepts from and properties of the categories of sets and of endofunctors on the category of sets relevant to our work. We discuss representable functors on the category of sets, introducing our exponential notation for them, and we state and prove the Yoneda lemma for these with the help of an exercise. We then examine sums (or coproducts) and products of sets and functions through the language of indexed families of sets. In particular, we characterize products of sets in terms of dependent functions, generalizing functions by allowing their codomains to vary depending on their inputs. We study nested sums and products of sets, explaining how distributivity allows us to expand products of sums of sets. By lifting all of this material to endofunctors on the category of sets, and using the fact that its limits and colimits are computed pointwise, we set ourselves up to introduce polynomial functors as sums of representable functors in the next chapter. Throughout the chapter, we emphasize key categorical principles and provide detailed explanations to ensure solid comprehension of these fundamental ideas.
We examine a monoidal structure on the category of polynomial functors, defined through the operation of substituting one polynomial into another. We explain how this composition product transforms polynomials into a richer algebraic structure, enabling the modeling of more complex interactions and processes. The chapter explores the properties of this monoidal structure, how it relates to existing constructions in category theory, and its implications for understanding time evolution and dynamical behavior. We also provide examples and visual representations to clarify how substitution works in practice.
We study the structure and utility of the category formed by small categories and retrofunctors. We analyze key properties of this category, such as limits, colimits, and factorizations, and explain how these structures support various forms of composition and interaction. The chapter delves into the cofree comonoid construction, exploring how it connects to familiar concepts in category theory, and extends our understanding of state-based systems. We also discuss applications of retrofunctors and demonstrate how they can be used to model complex processes in a structured way.
We formally define polynomial endofunctors on the category of sets, referring to them as polynomial functors or simply polynomials. These are constructed as sums of representable functors on the category of sets. We provide concrete examples of polynomials and highlight that the set of representable summands of a polynomial is isomorphic to the set obtained by evaluating the functor at the singleton set, which we term the positions of the polynomial. For each position, the elements of the representing set of the corresponding representable summand are called the directions. Beyond representables, we define three additional special classes of polynomials: constants, linear polynomials, and monomials. We close the chapter by offering three intuitive interpretations of positions and directions: as menus and options available to a decision-making agent, as roots and leaves of specific directed graphs called corolla forests, and as entries in two-cell spreadsheets we refer to as polyboxes.
We show that the category of comonoids, defined with respect to the composition product in the category of polynomial functors, is equivalent to a category of small categories as objects but with an interesting type of morphism called retrofunctors. Unlike traditional functors, retrofunctors operate in a forward-backward manner, offering a different kind of relationship between categories. We introduce this concept of retrofunctors, provide examples to illustrate their behavior, and explain their role in modeling state systems.