Institute for Categorical Cybernetics

Governance and control for the age of AI

Our mission is to develop theory and software for governing systems that learn and make decisions, for the benefit of their users and of humanity.

Latest posts

  • Programming Pipelines Using Dependent Types

    Sometimes, writing a large program is conceptually as simple as translating from a big unstructured input into a more and more structured output. In this post, we present a data structure to talk about such programs and demonstrate its use and flexbility using a single-pass compiler as case-study.
  • Foundations of Bidirectional Programming IV: Running Forwards and Running Backwards

    We are now at the point where we can write an interpreter to run some programs. To be clear, this is mainly for demonstration and debugging purposes, and the eventual goal is to write an optimising compiler. By the end of this post we will be able to demonstrate interpreting some very simple straight-line differentiable programs, and also demonstrate just how horrendous it is to actually write programs in our kernel syntax. This will motivate several follow-up posts where we slowly work upwards towards a human-usable surface language.
  • Mathematics for Governance Design

    Recently we held a workshop in Edinburgh titled Mathematics for Governance Design, consisting of a roughly 50/50 split between social scientists and category theorists.
  • On Hopfield Networks and Boltzmann Machines

    In which we connect the physics Nobel Prize to machine learning and economic design.
  • Foundations of Bidirectional Programming III: The Logic of Lenses

    In this post we will make probably the single most important step from a generic type theory to one specialised to bidirecional programming.
  • Foundations of Bidirectional Programming II: Negative Types

    In this post we'll begin designing a kernel language in which all programs are optics. What I mean by a "kernel language" is that it will serve as a compiler intermediate representation, with a surface language compiling down to it. I intend the surface language to be imperative style like the current Open Game Engine (with an approximately Python-like syntax), but the kernel language will reflect the category theory as closely as possible. I plan the kernel language to be well typed by construction, something that seems like overkill until I think about the problem of figuring out how pattern matching should work in a bidirectional language.
  • On Modelling

    In which we learn why "flat earth" is a perfectly sound scientific proposition and why being wrong two thirds of the time can actually be quite lucrative.
  • Foundations of Bidirectional Programming I: Well-Typed Substructural Languages

    This is the first post in a new series documenting my work developing a bidirectional programming language, in which all programs are interpreted as optics. This is something I've been thinking about for a long time, and eventually I became convinced that there were enough subtle issues that I should take things extremely slowly and actually learn some programming language theory. As a result, this post will not be about categorical cybernetics at all, but is a foundation to a huge tower of categorical cybernetics machinery that I will build later.
  • Beliefs, Belief Propagation and Belief Clusters

    In which we try to capture all the ways how beliefs can shape social and economic interaction.
  • Compositionality and the Mass Customization of Economic Models

    Are economic models useful for making decisions? One might expect that there is clear answer to this simple question. But in fact opinions on the usefulness or non-usefulness of models as well as what exactly makes models useful vary widely. In this post, I want to explore the question of usefulness. Even more so, I want to explore how the usefulness ties into the modelling process. The reason for doing so is simple: Part of our efforts at CyberCat is to build software tools to improve and accelerate the modelling process.
  • The Yoga of Contexts I

    Suppose we have some category, whose morphisms are some kind of processes or systems that we care about. We would like to be able to talk about contexts (or environments) in which these processes or systems can be located.
  • Reinforcement Learning through the Lens of Categorical Cybernetics

    This is an overview of the 'RL lens', a construction that we recently introduced to understand some reinforcement learning algorithms like Q-learning
  • The Blurry Boundary between Economics and Operations Research

    In which we bring back together the estranged fraternal disciplines of economics and operations research and map out how we can combine them to design cybernetic economies.
  • Exploring best response dynamics

    I explore the effect of players following their best response dynamics in large random normal form games.
  • The Build Your Own Open Games Engine Bootcamp — Part I: Lenses

    The first installment of a multi-part series demistifying the underlying mechanics of the open games engine in a simple manner.