##
###
A Class of Reversible Primitive Recursive Functions

Luca Paolini, Mauro Piccolo, Luca Roversi

2016
*
Electronical Notes in Theoretical Computer Science
*

Reversible computing is bi-deterministic which means that its execution is both forward and backward deterministic, i.e. next/previous computational step is uniquely determined. Various approaches exist to catch its extensional or intensional aspects and properties. We present a class RPRF of reversible functions which holds at bay intensional aspects and emphasizes the extensional side of the reversible computation by following the style of Dedekind-Robinson Primitive Recursive Functions. The
## more »

... lass RPRF is closed by inversion, can only express bijections on integers -not only natural numbers -, and it is expressive enough to simulate Primitive Recursive Functions, of course, in an effective way. (room temperature), this is about 2.9×10 −21 Joules (roughly, the kinetic energy of a single air molecule at room temperature). Today's computers erase a bit of information (in the above sense) every time they perform a logic operation, so their hunger for energy is ever-increasing. Reversible computing can avoid to use irreversible operations and entropy increasing. Here above we have recalled the Physics related aspects that make reversible computation relevant. From a Computer Science foundational point of view reversible computing is interesting because it subsumes classical computing: every computation in a classical model can be simulated by a reversible one [14] . Moreover, aspects of reversible computation are ubiquitous in everyday classical computations. We can find them in activities spanning from software verification to programming languages, passing through computer architectures, as well as part of innovative computing models, like quantum, bio, chemical and molecular ones. Reversible Turing-machines. Foundational studies on the notion of "reversible computation" exist. They have been chiefly devoted to frame the thermodynamic relations between entropy and computation via Turing-machines [1,2,6]. A reversible Turing-machine is both deterministic (like a classical Turing-machine) and backward-deterministic, i.e. it is bi-directionally deterministic. The backward determinism allows to easily reverse the computation, viz. we can undo a reversible program step by step eventually re-establishing former situations [1]. Only recently, recursion-theoretic arguments have been surveyed with some degree of systematization in [1]. This work develops a starting proposal to a recursion theory of reversible functions, in the line of Dedekind-Robinson-Kleene. Dedekind-Robinson-Kleene Functions. We start recalling the distinguishing aspects of Kleene's Partial Recursive Functions [7], that we simply call Partial Recursive Functions, abbreviated as (RF). These functions form an extension of the Dedekind-Robinson Primitive Recursive Functions (PRF) this paper starts from. Our starting point are RF and PRF for various reasons. First, we want to manage entities that compose because they stand for and are written as functions. Second, RF, as well as PRF, balance intensional and extensional aspects. Intensionally, they can be taken as programming languages whose semantics is given informally. Extensionally, RF deals with partial functions 3 while PRF with total ones, both shifting the focus on functions closer to what other computational models can express and providing support to functional, or compositional, programming. We aim at giving a prominent computational status to the operation of functional inverse. The inverse f −1 of a function f is defined by reversing its underlying relation 4 , viz. (y, x) ∈ f −1 if and only if (x, y) ∈ f . 3 A relation between two sets A, B is a subset of the cartesian product A×B. A relation is functional when A relation is total whenever a ∈ A implies that b ∈ B exists such that (a, b) ∈ A × B. A relation is co-total whenever b ∈ B implies that a ∈ A exists such that (a, b) ∈ A × B. A function is a total functional relation. A partial function is a functional relation. A function is injective whenever its graph is a co-functional relation. A function is surjective whenever its graph is a co-total relation. 4 The inverse of a partial function may not be functional. The inverse of a total function may be not total. However, restricted (and effective) operation of inversion can be defined also in such cases, e.g. see [12] .

doi:10.1016/j.entcs.2016.03.016
fatcat:h36c4c7nvjh5zjyzgmshllnsf4