2022-02-24: Bob Atkey (MSP)

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

Bob Atkey (MSP)

An introduction to Non-idempotent Intersection Types

Abstract

Are types for telling us what to program, or for telling us what we have programed? MSP dogma leans to the former, but it is worth looking at the latter too.

If we take types to be explanations of programs' behaviour, then it is only natural that they can have multiple types, since programs may have multiple behaviours. Intersection types are the basic tool that allows the assignment of multiple behavioural descriptions to a single program.

Traditional intersection types are idempotent: if we know that a term has some behaviour, then it is of no interest to know this twice. Inspired by linear logic, however, we can start to wonder what happens if we record how many times we will need a program to have some behaviour -- non-idempotent intersection types.

When we start counting behaviours, something remarkable happens. In a result due to Daniel de Carvalho, it turns out that the size of the typing derivation is equal to the number of steps taken to evaluate the program in the Krivine Abstract Machine.

I'll describe the non-idempotent intersection type system for a CBN untyped lambda-calculus, and how to prove de Carvalho's result. If here is time, I'll also discuss how non-idempotent intersection types relate to the relational semantics of Linear Logic.

An Agda formalisation of de Carvalho's result is written up here: https://bentnib.org/posts/2020-08-13-non-idempotent-intersection-types.html

2022-02-24 14:00:00 UTC
Online