Title: Thinking about thinking by thinking with memo!
Abstract: memo (
https://github.com/kach/memo) is a new probabilistic programming language designed for modeling how rational agents reason recursively about each other. memo is built around a set of specialized syntactic constructs (e.g. "knows", "chooses", "wants", "imagines," …) that allow scientists to easily implement sophisticated theory-of-mind/cognitive-hierarchy models in just a few lines of code. memo then compiles these models to JAX array programs for efficient inference on modern hardware, including on GPUs. For example, in memo, you can write a POMDP solver with state-of-the-art performance with just 15 lines of code.
Several labs now use memo, in a variety of disciplines: from linguistics, social cognition, and behavioral economics, to AI, computational psychiatry, and moral psychology. memo has been used in many published papers, as well as in courses, textbooks, and workshops around the world. In this talk, I will give you a little demo of memo, show you what memo is useful for, and (if time) share my thoughts on what programming languages like memo can teach us about human cognition more broadly.
(See OOPSLA '25 and CogSci '25 for some of the material covered in this talk.)