Skipping the Binder Bureaucracy with Mixed Embeddings in a Semantics Course (Functional Pearl)

Adam Chlipala. Skipping the Binder Bureaucracy with Mixed Embeddings in a Semantics Course (Functional Pearl). Proceedings of the 26th ACM SIGPLAN International Conference on Functional Programming (ICFP'21). August 2021.

Paper as PDF


Rigorous reasoning about programs calls for some amount of bureaucracy in managing details like variable binding, but, in guiding students through big ideas in semantics, we might hope to minimize the overhead. We describe our experiment introducing a range of such ideas, using the Coq proof assistant, without any explicit representation of variables, instead using a higher-order syntax encoding that we dub "mixed embedding": it is neither the fully explicit syntax of deep embeddings nor the syntax-free programming of shallow embeddings. Marquee examples include different takes on concurrency reasoning, including in the traditions of model checking (partial-order reduction), program logics (concurrent separation logic), and type checking (session types) -- all presented without any side conditions on variables.

Book home page