一句话:提出可呈现签名与初始语义框架,为带变量绑定等的语法构造提供组合式规范及机器检验的替换与归纳递归原理。
论文研究如何为数据类型、编程语言和逻辑演算指定语法并对其推理。作者在初始语义(Initial Semantics)思想下,将“由签名生成的语法”定义为合适模型范畴中的初始对象。由于并非每个签名都保证对应语法存在,文章引入签名呈现(presentation)的概念,刻画出一大类确实生成语法的可呈现签名。该框架涵盖经典代数签名(例如带变量绑定的纯 lambda 演算),并扩展到更多语法构造;其签名、语法与呈现均高度可组合,可由简单实例粘合构造复杂实例。初始语义还给出项代数、性质良好的替换以及归纳与递归原理。主要结果已在 UniMath 系统中机器检验。
We present a device for specifying and reasoning about syntax for datatypes, programming languages, and logic calculi. More precisely, we study a notion of "signature" for specifying syntactic constructions. In the spirit of Initial Semantics, we define the "syntax generated by a signature" to be the initial object -- if it exists -- in a suitable category of models. In our framework, the existence of an associated syntax to a signature is not automatically guaranteed. We identify, via the notion of presentation of a signature, a large class of signatures that do generate a syntax. Our (presentable) signatures subsume classical algebraic signatures (i.e., signatures for languages with variable binding, such as the pure lambda calculus) and extend them to include several other significant examples of syntactic constructions. One key feature of our notions of signature, syntax, and presentation is that they are highly compositional, in the sense that complex examples can be obtained by gluing simpler ones. Moreover, through the Initial Semantics approach, our framework provides, beyond the desired algebra of terms, a well-behaved substitution and the induction and recursion principles associated to the syntax. This paper builds upon ideas from a previous attempt by Hirschowitz-Maggesi, which, in turn, was directly inspired by some earlier work of Ghani-Uustalu-Hamana and Matthes-Uustalu. The main results presented in the paper are computer-checked within the UniMath system.
@article{paperbot1311,
title = {Presentable signatures and initial semantics},
author = {Benedikt Ahrens and André Hirschowitz and Ambroise Lafont and Marco Maggesi},
journal = {Logical Methods in Computer Science},
volume = {Volume 17, Issue 2},
year = {2021},
doi = {10.23638/lmcs-17(2:17)2021}
}