2019-07-05: Conor McBride (MSP)

Tue, 14 Oct 2025 16:51:42 +0000

Conor McBride (MSP)

The Thing with Thinnings: CodeBruijn is (Free;Stuff)

Abstract

I've been hacking away on tools to do metatheory using "codebruijn" representation of syntax. The method, as with scoped de Bruijn representation, is to index terms by their scope, but the codebruijn method goes further, by systematically treating the support of terms, i.e., the particular subscope of variables which are actually relevant, paired with the thinning that embeds support into scope. The key codebruijn type constructor is "pair a thing with a thinning from some support", and it turns any old sort of thing into something which uniformly admits further thinning just by postcomposition, without affecting either the thing or its support.

Stuff-which-uniformly-admits-thinning is stuff with structure, so there is a forgetful functor back to plain old Stuff. The Free functor which adds uniform thinning, is its left adjoint. The codebruijn type constructor is the monad (Free;Stuff). The corresponding comonad, (Stuff;Free), is rather more familiar to semanticists as the abstraction over larger scopes found in Kripke models.

I've always been a bit shaky on adjunctions, presheaves and what have you, so this talk will not assume categorical confidence, but rather seek to build intuition, guided by a concrete example grounded in the practicalities of manipulating syntax.

2019-07-05 16:00:00 UTC
LT1310