Implementing a Category-Theoretic Framework for Typed Abstract Syntax - Archive ouverte HAL Access content directly
Conference Papers Year : 2022

Implementing a Category-Theoretic Framework for Typed Abstract Syntax


In previous work (“From signatures to monads in UniMath”), we described a category-theoretic construction of abstract syntax from a signature, mechanized in the UniMath library based on the Coq proof assistant. In the present work, we describe what was necessary to generalize that work to account for simply-typed languages. First, some definitions had to be generalized to account for the natural appearance of non-endofunctors in the simply typed case. As it turns out, in many cases our mechanized results carried over to the generalized definitions without any code change. Second, an existing mechanized library on ω-cocontinuous functors had to be extended by constructions and theorems necessary for constructing multi-sorted syntax. Third, the theoretical framework for the semantical signatures had to be generalized from a monoidal to a bi-categorical setting, again to account for non-endofunctors arising in the typed case. This uses actions of endofunctors on functors with given source, and the corresponding notion of strong functors between actions, all formalized in UniMath using a recently developed library of bicategory theory. We explain what needed to be done to plug all of these ingredients together, modularly. The main result of our work is a general construction that, when fed with a signature for a simply-typed language, returns an implementation of that language together with suitable boilerplate code, in particular, a certified monadic substitution operation.

Dates and versions

hal-03475481 , version 1 (10-12-2021)





Benedikt Ahrens, Ralph Matthes, Anders Mörtberg. Implementing a Category-Theoretic Framework for Typed Abstract Syntax. 11th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2022), Jan 2022, Philadelphia, PA, United States. ⟨10.1145/3497775.3503678⟩. ⟨hal-03475481⟩
49 View
0 Download



Gmail Facebook Twitter LinkedIn More