Programming languages traditionally describe computations going one way: a program might compute a hash value from a string, or an encrypted message from a plaintext. However, sometimes it is also of interest to go the other way around: for encryption, we not only want to encrypt messages but also to decrypt them, and to be sure that the decryption correctly reproduces the original message. In an invertible programming language, a single program specifies two directions of a transformation, and the language guarantees that the two correspond as inverses. Invertible languages often require programs to be composed from atomic invertible fragments, a property known as local invertibility. This requirement has connections to applications such as low-energy and quantum computing. However, many invertible algorithms are more naturally expressed as depending unidirectionally on some inputs, e.g., the encryption key—this property is known as partial invertibility. Existing work largely lacks a systematic treatment of partial invertibility, and the connection to the locally invertible paradigm is not yet well-understood. In this thesis, we show that with the right design tradeoff, partial invertibility can be expressed within a locally invertible setting. We present KALPIS, a new functional language supporting expressive partial invertibility, yet maintaining a straightforward locally invertible semantics. This is made formal by a novel arrow combinator language RRARR, with primitives embodying functions, parameterized bijections, and interactions between the two. The formulation is based on recent work on effects in invertible computation, namely the irreversibility effect and the reversible reader. We substantiate the work with a prototype implementation of KALPIS, and demonstrate its utility through a number of nontrivial examples. Further, we give a complete formalization of the two systems, including the operational semantics and type system of KALPIS and a locally invertible interpretation and equational characterization of RRARR. Finally, we give a compositional translation from KALPIS into RRARR, motivating us to call it an arrow metalanguage. Most of the formalization is mechanized using the proof assistant Agda. / Programmeringsspråk beskriver traditionellt beräkningar som går åt ett håll: ett program kan till exempel beräkna ett hash-värde från en sträng eller ett krypterat meddelande från en klartext. Ibland är det dock även av intresse att gå åt andra hållet: vid kryptering vill vi inte bara kryptera meddelanden utan också avkryptera dem, och vara säkra på att avkrypteringen korrekt återskapar det ursprungliga meddelandet. I ett inverterbart programmeringsspråk beskriver ett enskilt program två riktningar av en transformation, och språket garanterar att de två motsvarar varandra som inverser. Inverterbara språk kräver ofta att program konstrueras från enskilt inverterbara komponenter, en egenskap som kallas lokal inverterbarhet. Denna egenskap har kopplingar till tillämpningar som lågenergioch kvantdatorer. Å andra sidan är det ofta naturligt att inverterbara algoritmer beror enkelriktat på vissa indata, till exempel krypteringsnyckeln—något som kallas partiell inverbarhet. Tidigare forskning saknar i stor utsträckning en systematisk behandling av partiell inverterbarhet, och kopplingen till lokal inverterbarhet är ännu inte välförstådd. I denna avhandling visar vi att med rätt designavvägning kan partiell inverterbarhet uttryckas ovanpå en lokalt inverterbar grund. Vi presenterar KALPIS, ett nytt funktionellt språk som stöder uttrycksfull partiell inverterbarhet, samtidigt som det bibehåller en enkel lokalt inverterbar semantik. Detta formaliseras genom ett nytt Arrow-kombinatorspråk RRARR, vars primitiver representerar funktioner, parameteriserade bijektioner och interaktioner mellan de två. Formuleringen baseras på ny forskning om sidoeffekter i inverterbar beräkning, nämligen irreversibilitetseffekten och reversible reader. Vi substantierar arbetet med en prototypimplementation av KALPIS och visar dess användbarhet genom ett antal icketriviala exempel. Dessutom ger vi en komplett formalisering av de två systemen, inklusive operativ semantik och typsystem för KALPIS och en lokalt inverterbar tolkning och ekvationskaraktärisering av RRARR. Slutligen ger vi en kompositionell översättning från KALPIS till RRARR, vilket motiverar oss att kalla det ett Arrow-metaspråk. Det mesta av formaliseringen är mekaniserad med hjälp av bevisassistenten Agda.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-337228 |
Date | January 2023 |
Creators | Ågren Thuné, Anders |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2023:529 |
Page generated in 0.0021 seconds