Principles of a reversible programming language

T Yokoyama, HB Axelsen, R Glück - Proceedings of the 5th Conference …, 2008 - dl.acm.org
The principles of reversible programming languages are explicated and illustrated with
reference to the design of a high-level imperative language, Janus. The fundamental …

Fundamentals of reversible flowchart languages

T Yokoyama, HB Axelsen, R Glück - Theoretical Computer Science, 2016 - Elsevier
This paper presents the fundamentals of reversible flowcharts. Reversible flowcharts are
intended to naturally represent the structure and control flow of reversible (imperative) …

Reversible computation and reversible programming languages

T Yokoyama - Electronic Notes in Theoretical Computer Science, 2010 - Elsevier
A reversible programming language supports deterministic forward and backward
computation. This tutorial focuses on a high-level reversible programming language Janus …

Sparcl: a language for partially-invertible computation

K Matsuda, M Wang - Proceedings of the ACM on Programming …, 2020 - dl.acm.org
Invertibility is a fundamental concept in computer science, with various manifestations in
software development (serializer/deserializer, parser/printer, redo/undo, compressor …

Applications and extensions of context-sensitive rewriting

S Lucas - Journal of Logical and Algebraic Methods in …, 2021 - Elsevier
Context-sensitive rewriting is a restriction of term rewriting which is obtained by imposing
replacement restrictions on the arguments of function symbols. It has proven useful to …

A grammar-based approach to invertible programs

K Matsuda, SC Mu, Z Hu, M Takeichi - … , ESOP 2010, Held as Part of the …, 2010 - Springer
Program inversion has many applications such as in the implementation of serialization/
deserialization and in providing support for redo/undo, and has been studied by many …

Synbit: synthesizing bidirectional programs using unidirectional sketches

M Yamaguchi, K Matsuda, C David… - Proceedings of the ACM on …, 2021 - dl.acm.org
We propose a technique for synthesizing bidirectional programs from the corresponding
unidirectional code plus a few input/output examples. The core ideas are:(1) constructing a …

Program inversion for tail recursive functions

N Nishida, G Vidal - … Techniques and Applications (RTA'11)(2011 …, 2011 - drops.dagstuhl.de
Program inversion is a fundamental problem that has been addressed in many different
programming settings and applications. In the context of term rewriting, several methods …

Soundness of unravelings for conditional term rewriting systems via ultra-properties related to linearity

N Nishida, M Sakai, T Sakabe - Logical Methods in Computer …, 2012 - lmcs.episciences.org
Unravelings are transformations from a conditional term rewriting system (CTRS, for short)
over an original signature into an unconditional term rewriting systems (TRS, for short) over …

Defunctionalized interpreters for call-by-need evaluation

O Danvy, K Millikin, J Munk, I Zerny - International Symposium on …, 2010 - Springer
Starting from the standard call-by-need reduction for the λ-calculus that is common to Ariola,
Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic …