Affiliation:
1. Indiana University, USA
Abstract
Compact closed categories include objects representing higher-order functions and are well-established as models of linear logic, concurrency, and quantum computing. We show that it is possible to construct such compact closed categories for conventional sum and product types by defining a dual to sum types, a negative type, and a dual to product types, a fractional type. Inspired by the categorical semantics, we define a sound operational semantics for negative and fractional types in which a negative type represents a computational effect that ``reverses execution flow'' and a fractional type represents a computational effect that ``garbage collects'' particular values or throws exceptions.
Specifically, we extend a first-order reversible language of type isomorphisms with negative and fractional types, specify an operational semantics for each extension, and prove that each extension forms a compact closed category. We furthermore show that both operational semantics can be merged using the standard combination of backtracking and exceptions resulting in a smooth interoperability of negative and fractional types. We illustrate the expressiveness of this combination by writing a reversible SAT solver that uses backtracking search along freshly allocated and de-allocated locations. The operational semantics, most of its meta-theoretic properties, and all examples are formalized in a supplementary Agda package.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. How to Bake a Quantum Π;Proceedings of the ACM on Programming Languages;2024-08-15
2. The Relational Machine Calculus;Proceedings of the 39th Annual ACM/IEEE Symposium on Logic in Computer Science;2024-07-08
3. Sparcl: A language for partially invertible computation;Journal of Functional Programming;2024
4. Reconciling Partial and Local Invertibility;Lecture Notes in Computer Science;2024
5. Embedding by Unembedding;Proceedings of the ACM on Programming Languages;2023-08-30