2-Functoriality of Initial Semantics, and Applications
This work addresses foundational issues in programming language theory for researchers and practitioners dealing with variable binding and semantics, though it appears incremental as it builds on existing initial semantics frameworks.
The paper tackles the problem of comparing models of languages with variable binding across different monoidal categories by establishing a 2-categorical structure for initial semantics, and applies this to relate implementations like de Bruijn vs. locally nameless and finite vs. infinite contexts, while providing a generalized recursion principle for simply-typed syntax.
Initial semantics aims to model inductive structures and their properties, and to provide them with recursion principles respecting these properties. An ubiquitous example is the fold operator for lists. We are concerned with initial semantics that model languages with variable binding and their substitution structure, and that provide substitution-safe recursion principles. There are different approaches to implementing languages with variable binding depending on the choice of representation for contexts and free variables, such as unscoped syntax, or well-scoped syntax with finite or infinite contexts. Abstractly, each approach corresponds to choosing a different monoidal category to model contexts and binding, each choice yielding a different notion of "model" for the same abstract specification (or "signature"). In this work, we provide tools to compare and relate the models obtained from a signature for different choices of monoidal category. We do so by showing that initial semantics naturally has a 2-categorical structure when parametrized by the monoidal category modeling contexts. We thus can relate models obtained from different choices of monoidal categories provided the monoidal categories themselves are related. In particular, we use our results to relate the models of the different implementation -- de Bruijn vs locally nameless, finite vs infinite contexts -- , and to provide a generalized recursion principle for simply-typed syntax.