Branching execution symmetry in Jeopardy by available implicit arguments analysis

When the inverse of an algorithm is well-defined – that is, when its output can be deterministically transformed into the input producing it – we say that the algorithm is invertible. While one can describe an invertible algorithm using a general-purpose programming language, it is generally not possible to guarantee that its inverse is well-defined without additional argument. Reversible languages enforce deterministic inverse interpretation at the cost of expressibility, by restricting the building blocks from which an algorithm may be constructed. Jeopardy is a functional programming language designed for writing invertible algorithms without the syntactic restrictions of reversible programming. In particular, Jeopardy allows the limited use of locally non-invertible operations, provided that they are used in a way that can be statically determined to be globally invertible. However, guaranteeing invertibility in Jeopardy is not obvious. One of the central problems in guaranteeing invertibility is that of deciding whether a program is symmetric in the face of branching control flow. In this paper, we show how Jeopardy can solve this problem, using a program analysis called available implicit arguments analysis, to approximate branching symmetries.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/06/2022

Jeopardy: An Invertible Functional Programming Language

Algorithms are ways of mapping problems to solutions. An algorithm is in...
research
05/20/2021

Join inverse rig categories for reversible functional programming, and beyond

Reversible computing is a computational paradigm in which computations a...
research
08/09/2017

From Reversible Programs to Univalent Universes and Back

We establish a close connection between a reversible programming languag...
research
09/13/2023

CRIL: A Concurrent Reversible Intermediate Language

We present a reversible intermediate language with concurrency for trans...
research
08/30/2023

A Dataflow Analysis for Comparing and Reordering Predicate Arguments

In this work, which is done in the context of a (moded) logic programmin...
research
03/10/2020

Differentiate Everything with a Reversible Programming Language

This paper considers the source-to-source automatic differentiation (AD)...
research
07/12/2019

Language Support for Adaptation: Intent-Driven Programming in FAST

Historically, programming language semantics has focused on assigning a ...

Please sign up or login with your details

Forgot password? Click here to reset