arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1710.02804cs.PL
收藏

项重写中的可逆计算

Reversible Computation in Term Rewriting

Naoki Nishida, Adrián Palacios, Germán Vidal

摘要:

本质上,在可逆程序设计语言中,对于从状态$S$到状态$S'$的每个前向计算,存在从状态$S'$到状态$S$的反向的构造性方法。除了理论上的兴趣,可逆计算是一个基本概念,在许多不同的领域,如细胞自动机,双向程序转换或量子计算,仅举几例。在这项工作中,我们专注于长期重写,计算模型,基于大多数规则的程序设计语言。一般来说,项重写是不可逆的,即使对于内射函数也是如此;也就是说,给定重写步骤$t_1 \rightarrow t_2$,我们并不总是有一个可判定的方法从$t_2$得到$t_1$。在这里,我们介绍了一个保守的长期重写,成为可逆的扩展。此外,我们还定义了两个转换,内射化和反演,使重写系统可逆使用标准项重写。我们说明了我们的转换的双向程序转换的上下文中的有用性。

英文摘要:

Essentially, in a reversible programming language, for each forward computation from state $S$ to state $S'$, there exists a constructive method to go backwards from state $S'$ to state $S$. Besides its theoretical interest, reversible computation is a fundamental concept which is relevant in many different areas like cellular automata, bidirectional program transformation, or quantum computing, to name a few. In this work, we focus on term rewriting, a computation model that underlies most rule-based programming languages. In general, term rewriting is not reversible, even for injective functions; namely, given a rewrite step $t_1 \rightarrow t_2$, we do not always have a decidable method to get $t_1$ from $t_2$. Here, we introduce a conservative extension of term rewriting that becomes reversible. Furthermore, we also define two transformations, injectivization and inversion, to make a rewrite system reversible using standard term rewriting. We illustrate the usefulness of our transformations in the context of bidirectional program transformation.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑