Abstract
Invertible programming languages specify transformations to be run in two directions, such as compression/decompression or encryption/decryption. Two key concepts in invertible programming languages are partial invertibility and local invertibility. Partial invertibility lets invertible code be parameterized by the results of non-invertible code, whereas local invertibility requires all code to be invertible. The former allows for more flexible programming, while the latter has connections to domains such as low-energy computing and quantum computing. We find that existing approaches lack a satisfying treatment of partial invertibility, leaving the connection to local invertibility unclear.
In this paper, we identify four core constructs for partially invertible programming, and show how to give them a locally invertible interpretation. We show the expressiveness of the constructs by designing the functional invertible language KALPIS, and show how to give them a locally invertible semantics using the novel arrow combinator language RRARR the key idea is viewing partial invertibility as an invertible effect. By formalizing the two systems and giving KALPIS semantics by translation to RRARR, we reconcile partial and local invertibility, solving an open problem in the field. All formal developments are mechanized in Agda.
In this paper, we identify four core constructs for partially invertible programming, and show how to give them a locally invertible interpretation. We show the expressiveness of the constructs by designing the functional invertible language KALPIS, and show how to give them a locally invertible semantics using the novel arrow combinator language RRARR the key idea is viewing partial invertibility as an invertible effect. By formalizing the two systems and giving KALPIS semantics by translation to RRARR, we reconcile partial and local invertibility, solving an open problem in the field. All formal developments are mechanized in Agda.
Original language | English |
---|---|
Title of host publication | Programming Languages and Systems |
Subtitle of host publication | 33rd European Symposium on Programming, ESOP 2024, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2024, Luxembourg City, Luxembourg, April 6–11, 2024, Proceedings, Part I |
Editors | Stephanie Weirich |
Place of Publication | Switzerland |
Publisher | Springer, Cham |
Pages | 59-89 |
Number of pages | 31 |
ISBN (Electronic) | 9783031572623 |
ISBN (Print) | 9783031572661 |
DOIs | |
Publication status | Published - 5 Apr 2024 |
Publication series
Name | Lecture Notes in Computer Science (LNCS) |
---|---|
Publisher | Springer |
ISSN (Print) | 0302-9743 |
ISSN (Electronic) | 1611-3349 |
Bibliographical note
Publisher Copyright:© The Author(s) 2024.
Research Groups and Themes
- Programming Languages