Automatic program inversion using symbolic transducers

Automatic program inversion using symbolic transducers
复制标题

使用符号转换器自动程序反演

DOI:
10.1145/3062341.3062345
复制
发表时间:
2017
期刊:
Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
通讯作者:
Loris D'antoni
Loris D'antoni
中科院分区:
--
文献类型:
--
作者:
Qinheping Hu;Loris D'antoni

文献摘要

被引文献

相似文献

我们为反转功能程序提出了一种完全自动化的技术,该技术在字符串编码器和解码器等列表上运行。我们考虑可以使用符号扩展有限传感器()进行建模的程序,该模型可以描述复杂的列表操纵程序,同时保留多个可决定性属性。具体而言,给定一个程序p表示为一个,我们提出了:(1)检查p是否为indoxtive,如果是这种情况,(2)构建一个描述其逆的P-1。我们首先表明,不可确定要检查一个是注射剂,并提出了用于检查限制性但实际类别的注入性的算法。然后,我们提出了一种基于以下想法倒转的算法:如果一个是注入性的,则反转它等于反转其所有单个过渡。我们利用最近的进步计划的综合,并表明过渡反转问题可以表示为语法引导的合成框架的实例。最后,我们在称为和显示的工具中实现了所提出的技术,该工具可以将13个真正的复杂字符串编码器和解码器倒出,从而产生与手动编写基本相同的逆程序。
We propose a fully-automated technique for inverting functional programs that operate over lists such as string encoders and decoders. We consider programs that can be modeled using symbolic extended finite transducers (), an expressive model that can describe complex list-manipulating programs while retaining several decidable properties. Concretely, given a program P expressed as an , we propose techniques for: (1) checking whether P is injective and, if that is the case, (2) building an P-1 describing its inverse. We first show that it is undecidable to check whether an is injective and propose an algorithm for checking injectivity for a restricted, but a practical class of . We then propose an algorithm for inverting based on the following idea: if an is injective, inverting it amounts to inverting all its individual transitions. We leverage recent advances program synthesis and show that the transition inversion problem can be expressed as an instance of the syntax-guided synthesis framework. Finally, we implement the proposed techniques in a tool called and show that can invert 13 out 14 real complex string encoders and decoders, producing inverse programs that are substantially identical to manually written ones.