Interleaving classical and reversible

02/18/2021
by   Armando B. Matos, et al.
0

Given a simple recursive function, we show how to extract two interacting processes from it. The two processes can be described by means of iterative programs, one of which is intrinsically reversible, in a language that, up to minor details, belongs to the core of widely used imperative programming languages. We implement the two processes as interleaving synchronous JAVA threads whose interaction is equivalent to the recursive function they are extracted from.

READ FULL TEXT

page 3

page 6

page 8

page 12

page 14

05/11/2021

Splitting recursion schemes into reversible and classical interacting threads

Given a simple recursive function, we show how to extract from it a reve...
02/14/2019

Introducing Yet Another REversible Language

Yarel is a core reversible programming language that implements a class ...
10/10/2017

A categorical foundation for structured reversible flowchart languages: Soundness and adequacy

Structured reversible flowchart languages is a class of imperative rever...
02/21/2021

Patterns of Cognition: Cognitive Algorithms as Galois Connections Fulfilled by Chronomorphisms On Probabilistically Typed Metagraphs

It is argued that a broad class of AGI-relevant algorithms can be expres...
10/27/2009

Temporal Debugging using URDB

A new style of temporal debugging is proposed. The new URDB debugger can...
02/12/2016

Bouncing Towers move faster than Hanoi Towers, but still require exponential time

The problem of the Hanoi Tower is a classic exercise in recursive progra...
03/10/2020

Differentiate Everything with a Reversible Programming Language

This paper considers the source-to-source automatic differentiation (AD)...