A central problem in the design of programming systems is to provide methods for verifying that computer code performs to specification. This book presents a rigorous foundation for defining Boolean categories, in which the relationship between specification and behaviour can be explored. Boolean categories provide a rich interface between program constructs and techniques familiar from algebra, for instance matrix- or ideal-theoretic methods. The book's distinction is that the approach relies on only a single program construct (the first-order theory of categories), the others being derived mathematically from four axioms. Development of these axioms (which are obeyed by an abundance of program paradigms) yields Boolean algebras of 'predicates', loop-free constructs, and a calculus of partial and total correctness which is shown to be the standard one of Hoare, Dijkstra, Pratt, and Kozen. The book is based in part on courses taught by the author, and will appeal to graduate students and researchers in theoretical computer science.

• Class tested: based on courses by Manes.

### Contents

1. Finite coproducts; 2. Structure of a Boolean category; 3. Metatheory; 4. Distributive categories; Bibliography; Index.