论文标题

通过可用的隐式参数分析在危险中分支执行对称性

Branching execution symmetry in Jeopardy by available implicit arguments analysis

论文作者

Kristensen, Joachim Tilsted, Kaarsgaard, Robin, Thomsen, Michael Kirkedal

论文摘要

当算法的倒数被明确定义时 - 也就是说,当它的输出可以确定性地转换为产生其输入的输出时,我们说该算法是可逆的。虽然可以使用通用编程语言来描述一种可逆算法,但通常不可能保证其逆向不及定义而没有其他参数。可逆语言通过限制可以构建算法的构建块来强制以表达性成本为代价的确定性反向解释。 危险是一种功能性编程语言,旨在编写可逆算法\ emph {没有}可逆编程的句法限制。尤其是,危险允许有限使用本地不可逆转的操作,前提是它们以静态确定为全球可逆的方式使用。但是,保证危险中的可逆性并不明显。 保证可逆性的核心问题之一是决定程序是否面对分支控制流程是对称的。在本文中,我们使用称为“可用参数分析”的程序分析来展示危险如何解决此问题,以近似分支对称性。

When the inverse of an algorithm is well-defined -- that is, when its output can be deterministically transformed into the input producing it -- we say that the algorithm is invertible. While one can describe an invertible algorithm using a general-purpose programming language, it is generally not possible to guarantee that its inverse is well-defined without additional argument. Reversible languages enforce deterministic inverse interpretation at the cost of expressibility, by restricting the building blocks from which an algorithm may be constructed. Jeopardy is a functional programming language designed for writing invertible algorithms \emph{without} the syntactic restrictions of reversible programming. In particular, Jeopardy allows the limited use of locally non-invertible operations, provided that they are used in a way that can be statically determined to be globally invertible. However, guaranteeing invertibility in Jeopardy is not obvious. One of the central problems in guaranteeing invertibility is that of deciding whether a program is symmetric in the face of branching control flow. In this paper, we show how Jeopardy can solve this problem, using a program analysis called available implicit arguments analysis, to approximate branching symmetries.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源