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
DOI related publication
https://doi.org/10.1145/3497775.3503678
More Info
expand_more
Publication Year
2022
Language
English
Research Group
Programming Languages
Pages (from-to)
307-323
ISBN (print)
978-1-4503-9182-5
Event
11th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP ’22) (2022-01-17 - 2022-01-18), Virtual at Philadelphia, United States
Downloads counter
213
Collections
Institutional Repository
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.