Interleaving classical and reversible

by   Armando B. Matos, et al.

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.


page 3

page 6

page 8

page 12

page 14


Splitting recursion schemes into reversible and classical interacting threads

Given a simple recursive function, we show how to extract from it a reve...

Introducing Yet Another REversible Language

Yarel is a core reversible programming language that implements a class ...

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

Structured reversible flowchart languages is a class of imperative rever...

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...

Temporal Debugging using URDB

A new style of temporal debugging is proposed. The new URDB debugger can...

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...

Differentiate Everything with a Reversible Programming Language

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