Implementing a Category-Theoretic Framework for Typed Abstract Syntax

Conference Paper (2022)
Author(s)

Benedikt Ahrens (TU Delft - Programming Languages, University of Birmingham)

Ralph Matthes (Université de Toulouse)

Anders Mörtberg (Stockholm University)

Research Group
Programming Languages
Copyright
© 2022 B.P. Ahrens, Ralph Matthes, Anders Mörtberg
DOI related publication
https://doi.org/10.1145/3497775.3503678
More Info
expand_more
Publication Year
2022
Language
English
Copyright
© 2022 B.P. Ahrens, Ralph Matthes, Anders Mörtberg
Research Group
Programming Languages
Pages (from-to)
307-323
ISBN (print)
978-1-4503-9182-5
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

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 bicategorical 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.