A unified treatment of structural definitions on syntax for capture-avoiding substitution, context application, named substitution, partial differentiation, and so on
Abstract
We introduce a category-theoretic
abstraction of a syntax with auxiliary functions, called an admissible
monad morphism. Relying on an abstract form of structural recursion,
we then design generic tools to construct admissible monad morphisms
from basic data. These tools automate ubiquitous standard patterns
like (1) defining auxiliary functions in successive, potentially
dependent layers, and (2) proving properties of auxiliary functions by
induction on syntax. We cover significant examples from the
literature, including the standard lambda-calculus with
capture-avoiding substitution, a lambda-calculus with binding
evaluation contexts, the lambda-mu-calculus with named substitution, and
the differential lambda-calculus.
Origin | Files produced by the author(s) |
---|