/category-theory-resources

Resources for learning Category Theory for an enthusiast

Category Theory Resources

./img/category-theory-cover.png

This is a curation of introductory materials aimed at an enthusiast who wants to learn Category Theory. I have only recently gotten into learning Category Theory and as a result this list is only a partial sampling of the great wealth of materials out there. Please send a tweet or a PR, if you think I have missed out some great work in the field in this repo.

Why learn Category Theory?

Category Theory is considered by many to be an involved domain of study to get into. It becomes a ground for unification of mathematical ideas for a wide variety of domains. And the way it achieves this is by taking an abstract vantage point on the ideas, their properties, and processes in these disciplines. This viewpoint gives it the ability to reason about analogies happening in distinct domains and draw rigorous analogies across the patterns happening in them in a rigorous way.

This abstract viewpoint is both a strength and weakness of the approach. The abstract nature of the subject makes it very powerful by giving it the generality to unite very different fields of study such as say algebraic topology, probability theory, real analysis, functional analysis, number theory, combinatorics, and computation. But at the same time this abstract nature means that it becomes a rather tough endeavour to make its bearings on concrete subjects of study. It makes it hard to elucidate these without first learning enough terminology and understanding to set up a framework for discourse for the discipline under the study.

Category theory in certain communities of practice has moved towards being the heart of capturing the correspondences across different systems under study. One of the great papers that catalogues the gems by taking this vantage point is the Rosetta Stone paper by John Carlos Baez and Mike Stay.

In this paper they detail how disparate domains like physics, topology, logic, and computation show strong parallels between their concepts when seen from the Category Theory viewpoint. As can be seen in the table, they point out the parallels between concepts among different domains of inquiry. Seen this way, Category Theory gives a language and a setting to talk about working concepts in different domains of inquiries and unifies them using higher level abstractions.

If you feel this is getting highly theoretical, ultimately, as Christopher Strachey put it, the divide between theory and practice is artificial and injurious. For doing computing both needs to be put together in a symbiotic circle to make each other a fertile field of knowledge and action. Category Theory in this manner can be said to be a subject whose keen study will payoff in the form of better decision-making in your day-to-day job over the long term. To articulate exactly how this is something a bit elusive to me at the moment, I am only seeing glimpses of how the concepts give me a way to talk about ideas happening in my daily programming. As I am a learner only trying to come in terms with the deep implications Category Theory has on my work, I will need some more time to reframe this section to articulate the benefits of Category Theory in the long term on my daily practice.

So at this moment, this repository is a curation of the best resources that were recommended to me. It also includes the ones that came across my way and those that have helped me in understanding the lay of the land better. Hope you enjoy going through it as much as I enjoyed in putting it together. Happy learning!

Introduction

Category Theory is a field of study that emerged around 1940s. By that time, the tangled web of inquiries in mathematics had accumulated many ideas from other fields. The inventors used Category Theory as a ground for unifying these different ideas under a common set of abstractions by studying these broad ranging ideas deeply. It was introduced by Samuel Eilenberg and Saunders Mac Lane to study algebraic topology, where they wanted to introduce the idea of natural transformation to make tractable the idea of naturality occuring on functors between functors (A functor is a category theoretical term that roughly means functions and the idea of naturality can very roughly be compared to the idea of talking about a concept without a given frame of reference).


If you enjoy reading the history of the subject before diving into it, I highly recommend this accessible work by Garlandus describing the emergence of Category Theory. Garlandus’ essay holds a high place in my mind, it is the kind of work that gives a sufficient background on the field discussing details of how it took shape as a result of contributions between multiple people. He locates Hilbert’s Göttingen as a central locus that lead to the germination of work on Category Theory.


Now, seeing that the subject emerged from algebraic topology, the application to Computer Science may seem arbitrary. But this came after deep investigations into computational structures and programming since around 1960s, where multiple links between algebra, automata, computational control/data structures, recursion schemes were unearthed. If you are interested in knowing about it more deeply, I have a repo, which is a work in progress, where I try to unravel these links. A curious fact that I have to mention is that, one of the co-inventors of Category Theory, Samuel Eilenberg, went on to apply his ideas to automata after inventing Category Theory!

Now that we have seen how Category Theory came around, let us look at the resources that can guide us in building a working knowledge of the subject.

Overview

Because of the standing of Category Theory as a general domain of inquiry, I have constantly felt it better to first get a cursory knowledge in functional programming and abstract algebra before tackling the subject. These paradigms are closer to the work done in Category Theory. If you come around to Category Theory without having some concrete experience in dealing with problems to which you can relate the ideas you learn here, I feel it might be a bit hard to connect with this domain of study and gain intuition into to why such machinery is needed.

Functional programming techniques are a way in which a lot of these concepts find a space to talk about them and ground them in a concrete setting where their behaviours can be probed and pondered. So I proceed to recommend some resource that might help you develop some functional programming knowledge before you come around to Category Theory.

How to Design Programs is an accessible introduction to functional programming. The book is thorough in its coverage of essential ideas and slowly walks a novice through exercises to understand the concepts and how to put them to use in practical problems that one may encounter in their daily practice.







Introduction to Functional Programming by Richard Bird and Philipp Wadler is a more formal treatment of functional programming. They use the language Miranda to elucidate the concepts.









SICP by Abelson and Sussman is considered a classic text that provides a synthesis of great ideas of computer science using LISP. It is a natural second choice once you have mastered the ideas in HtDP.









Reading some or all of the books here will give you a solid footing in functional programming. With that knowledge under your belt, next step is to develop sufficient understanding of the field of mathematics. This knowledge would make the transition into CT much more smooth as there are deep links within CT that lead you onto very different domains and having a well-rounded knowledge of the field would help you to ease into fields which might be remote from your experience, but would nevertheless hold the gold, so to speak.

Breadth and Depth


To make this case, let me first mention this book by Saunders Mac Lane, the co-inventor of Category Theory, where he gives a tour of ideas of mathematics in a comprehensive way. This book doubles out as an atlas of mathematical inquiry as there are multiple maps in this book that give you an idea on how to navigate the field. Such is the kind of breadth and depth that has gone into building Category Theory. I don’t mean this as something to intimidate the reader, but just to provide the awareness that the field is vast and finds application in many areas, computation being one among many. Mastery of all these fields is not a pre-requisite to be proficient in it. But it has to be pointed out that the masters of the subject have done a great deal of exploration to bring forth the fruits of Category Theory.

Introduction through Abstract Algebra

Now an adjacent field to Category Theory is Abstract Algebra. The route I have taken is to first learn abstract algebra which undergirds the algebraic species that are often subjects of study in Category Theory. To make sense of these, let me mention a few books. It is not mandatory reading, if you want to dive first into Category Theory. In fact some of the books that I have put together here allows one to learn Category Theory without much prerequisite knowledge but abstract algebra is a field that I have felt is most proximate and has aided me ease into Category Theory texts.


Charles Pinter

This book by Charles Pinter reads not like a textbook but like a description of the field.









W. W. Sawyer

A narrative approach for Abstract Algebra is given by Sawyer by focussing on concrete applications.









Visual Group Theory

Nathan Carter

Visual Group Theory by Nathan Carter gives an overview of the field by relying on visualizations. His playground for the cayley diagram explorations gives a good idea of the quality of work that has gone into producing this book.









I will try to expand on this catalogue once I have better perspective, but these three seem to be the most promising to get a good overview of the algebraic structures.

Once the above works are studied, starting with Category Theory texts should be an easy process. I will now proceed to list the works which will help an enthusiast to navigate the field of Category Theory and understand it deeper.

Visual Nature of Category Theory

Category Theory is the study of objects and morphisms and for this purpose, I find it most important to have a visual setting for exploring these ideas. Many of the ideas being talked about in Category Theory spawns dynamic pictures of morphisms in my head, but I find it hard to visualize them as there is so little Category Theory with pictures around. What is pictured here is an animation by James McKeown of a modular lattice rotating on its vertical axis. These sort of algebraic structures are a part of what we study with Category Theory. And I think there is a certain truth to the idea that geometry is the missing link to ground the abstract ideas that is being studied under Category Theory.





Jamie Vicary’s work

I came across this talk by Jamie Vicary on building tools for exploring Category Theory. His works Globular.science and Homotopy.io are (awe)inspiring. Do check out his talk titled Category Theory: Visual Mathematics for the 21st Century and his works to see how he connects proofs, programs, and geometry together in a triad!

Category Theory: Visual Mathematics for the 21st Century

Globular.science and Homotopy.io





Now when studying category theory, to start seeing how the pieces fit together one has to recourse to abstract diagrams and attempt to connect these concepts with how the same concepts model things in a more visual domain, say topology. This recourse is my best bet at the moment to gain the geometric intuitions in Category Theory when learning. If you find geometric intuitions helpful in understanding mathematics, let me draw your attention to this incomplete but beautiful work by Boris Marinov.

Another work, which is something I am looking forward to work out in detail after I have built up enough fluency is Eduardo Ochs’ internal/external diagrams. He has consistently put out some great set of works where the diagrammatic undercurrent of Category Theory is brought to the forefront. One of his recent works in this direction is: http://angg.twu.net/math-b.html#favorite-conventions The whole page is fully of Category Theory goodness!

./img/ochs-convention1.png ./img/ochs-convention2.png

Books

David I. Spivak and Brendan Fong (2019), 348 pages







This book is considered to be an entry level read into Category Theory. The book samples 7 topics from category to offer a tour of its applications. By showing concrete real life examples are emphasized, a taste for the abstract theoretical concepts is given. It is a pretty good book to get an understanding of the use of Category Theory which a lot of people are puzzled about.

A free electronic edition is available here: https://arxiv.org/abs/1803.05316

A course to go along with this book is available here: https://forum.azimuthproject.org/discussion/1717/welcome-to-the-applied-category-theory-course

Paolo Aluffii (2009), 728 pages







Once you have covered the abstract algebra books described above, Aluffi’s book is a natural segue as a second course. The book starts by reviewing the basics and very early on gives the reader exposure to Category theoretical language to make sense of the algebraic structures. One curious fact about this book is that there are almost no references to outside resources in this book as the author wanted it to be self-contained. Aluffi explains each topics in a personal style without losing rigour and this book is a favourite among many who have learnt Category Theory. The book is a bit dense at 700 pages but the added advantage is that you get exposed to homological algebra, something that connects algebra with topology, towards the end of the book. I consider this a great read to widen your expertise once you have gotten a cursor understanding of abstract algebra and categorical language.

William Lawvere and Stephen Schaneul (2nd edition 2009, 1st edition 1991), 408 pages





Conceptual Mathematics is a popular favourite choice as an introduction to Category Theory. It starts with set theory and goes upto introducing toposes. It does this with minimal amount of prerequisites. The lucid introductions are said to give a conceptual understanding of the ideas of Category Theory.

Steve Awodey (2010), 311 pages







Steve Awodey’s work is considered to be a book that goes slightly braoder that Lawvere and Schaneul’s work but for the prerequisities it assumes is on the same level as Conceptual Mathematics. It is a highly recommended work among Category Theorists.

Lectures to this book is available here: https://www.youtube.com/playlist?list=PLGCr8P_YncjVjwAxrifKgcQYtbZ3zuPlb

Tom Leinster (2014), 190 pages





Tom Leinster’s book is an edited version of his lecture notes. This concise work with focussed attention given on the topics it addresses. The fundamental topics are covered in this book and a free version is available online here: https://arxiv.org/abs/1612.09375

Bartosz Milewski (2018), 350 pages





Bartosz version features a rich blend of images with descriptions of Category Theory oriented towards a practicing programmer. He frequently blogs about ideas on Category Theory and gives examples in of programming instances where category theory provides leverage. He is an active figure in the discourse surrounding Category Theory on the internet.

Videos for this book is available as a series here: https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_

PDF versions that is compiled from the blogposts with support for different language is available here: https://github.com/hmemcpy/milewski-ctfp-pdf

Emily Riehl, 2016, 272 pages





This is an advanced text that can be read by a serious student after one or more of the previous texts have been mastered. The prose is said to be very well written as an exposition ta Category Theory and an example driven approach is relied upon before the category theoretical language is shown to encompass the ideas.

Definitely a book to keep in mind on your journey once you have crossed the rubicon of having understood the basics and has become fluent in the language.

Available as a free PDF here: http://www.math.jhu.edu/~eriehl/context.pdf

Harold Simmons (2011), 238 pages





This is a lesser known introduction to Category Theory. But from the people who have read it, I have heard only good words about it.

Samson Abramsky and Nikos Tzevelekos (2011), 1010 pages





This book was suggested to me by Eduardo Ochs.

This is a short read at around 100 pages, but is said to build up the concepts by giving examples of how category theory captures things in the large and in the small, which showcases ideas like naturality, generality, and rigour that powers Category Theory.

David Rydehead and Rod Burstall (1988), 263 pages





Computational Category Theory uses the Standard ML programming language to give a hands on experience into the category theory ideas. Having an REPL for interacting with your ideas is a solid way to build your understanding of how these ideas can be represented and manipulated with the computer. It is available for free online.

Benjamin Pierce (1991), 114 pages







Pierce’s book is a concise treatment of category theoretical concepts oriented towards a computer scientist. At around 60 pages, the book touches on basic ideas like categories, products, pullbacks, limits, functors, F-algebras, natural transformations, adjoints and gives a discuss on the application of these ideas.

Paper by Pierce on Category Theory

Robert Goldblatt (1984), 569 pages







This book begins from a set theorical standpoint of logic and walks the user carefully to develop an understanding of the Category theoretic perspective. Author presents the concrete examples in logic and then abstracts out the common patterns to ground it in the categorical language. I think I wouldn’t be too off if I say that this book is close to Sawyer’s A Concrete Approach to Abstract Algebra. The application of topology to logic makes it a natural segue to understanding Steven Vickers’ work mentioned below.

The book is available online here: https://projecteuclid.org/euclid.bia/1403013939

David I. Spivak (2014), 486 pages







These are the edited version of Spivak’s notes for his 2013 Category Theory course. The original lectures are available online: http://math.mit.edu/~dspivak/CT4S.pdf

Saunders Mac Lane, (1st Edition 1971, 2nd Edition 1998), 317 pages







An comprehensive reference on the book written by the co-founder of the field. The book is said to be thorough on its treatment and a bit demanding on the reader as the mathematics is involved. But this pays off by giving you a rigorous grounding in the material. It is recommended to read this book after one or two of the above books are read before or simultaneously with it.

Adjacent Reads

Now these are works a bit removed from Category Theory, but still I feel will give one a good understanding of the big picture if put in the effort to understand these:

Steven Vickers (1989), 220 pages







Topology via Logic is a book that intrigued me for it showed the link between geometry and logic that I have been always enamoured about. As I have indicated above, there is something geometrical about the abstract mathematical structures and this one is a book that I wish to explore once I have developed sufficient mathematical rigour to understand what is happening in the intersection of topology and logic.

Rocco Gangle (2015), 264 pages







I found out about this book accidentally when searching on Twitter for Category Theory related topics. Once I looked into it, I found the material addressing philosophy from a Category Theoretical standpoint. The work builds on previous works of the author and tries to identify how Category Theory gives us the visual tools to ground the ideas immanent in the work of Spinoza, Peirce, and Deleuze. It contains a rich amount of diagrams showing how category theoretical concepts allows one to locate different kinds of morphisms between different levels and across them. This is something I intend to read once I have worked myself on Peirce’s ouevre and built some amount of category theoretical fluency. But if you are into philosophy and mathematics, I recommend you check it out.

Univalent Foundations Project (2015), 620 pages

Homotopy came out as the result of Voevodsky’s attempt at trying to create an environment for theorem proving.

And some of the results from this line of inquiry is stunning to say the least. There are interpretations of topological shapes as corresponding types. It is a bit above my level of understanding to fully articulate what this means for computation and Category Theory. But definitely one of those aspiring reads for me.

Under investigation

Papers and Presentations

Steve Easterbrook

Bob Coecke and Eric Oliver Paquette

Notes from Coecke and Paquette that introduces category theory for an interested physicist. They introduce the ideas by connecting with vector spaces and tensors.

Goguen

Tatsuya Hagino

Tools

Charity

An interpreter for Tatsuya’s work above.

Talks

Series

The Catsers

Single Session

Blogs

A brief introductory post by Tai-Danae Bradley on Category Theory

A really nice post by Neel Krishnaswami on the applications of Category Theory to programming language research.

Compilations

This is a really nice collection of some of the resources laid out in a “graph”ical format by Dragan.

Compilation of applications of Category Theory

A really good roundup of resources for learning Category Theory

Pretty nice curation by Johannes Drever which includes softwares to explore Category Theory and podcasts for being in the know.

Contributors

People who have helped me with resources: