当前位置: X-MOL 学术Sci. Comput. Program. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
A family of multi-concept program synthesisers in Alloy⁎
Science of Computer Programming ( IF 1.5 ) Pub Date : 2020-09-02 , DOI: 10.1016/j.scico.2020.102536
Alexandre Correia , Juliano Iyoda , Alexandre Mota

Program synthesis aims to mechanise the task of programming from the user intent (using pre and post condition, examples and sketches). There are many approaches (or concepts) in program synthesis that are usually implemented in isolation: deductive, syntax-based, inductive, etc. In this paper, we present a characterisation of program synthesis as model finding, using Alloy. Such a characterisation unifies several of these concepts in a single model. Through model finding, we obtain a general framework for rapid development of a program synthesiser accommodating denotational semantics based synthesis, simultaneous deductive and inductive synthesis, software reuse, syntactic ingredients (the Alloy scope of entities), and a new one: a soft sketch (a set of commands that must appear in the synthesised program but in no particular order of execution). Our family of synthesisers produce general purpose programs in the Java language. As the Alloy synthesiser requires several rounds of user assistance to set scope, sketches, etc., particularly for complex problems, we integrated the model finder to a genetic algorithm module, where candidate solutions and user inputs are generated and mutated automatically. We carried out empirical evaluations on program synthesis successfully. As results, we verified that: (i) we can synthesise thirteen programs (Maj5, Maj8, IntSQRT, Max4, Modu, Fact, Fib, aMax, aDouble, aSum, eCount, aBubSort, aSelSort); (ii) inductive synthesis was faster than deductive synthesis; (iii) synthesis with reuse was faster; and (iv) Genetic Algorithm is better than user trial and error approach.



中文翻译:

在合金多概念方案合成器的家庭

程序综合旨在根据用户意图(使用前后条件,示例和草图)使编程任务机械化。有许多方法(或概念)的程序合成,其通常在隔离实现:演绎,语法为主,电感等。在本文中,我们提出的程序合成的表征为模型的发现,使用合金。这样的表征将这些概念中的几个统一在一个模型中。通过模型发现,我们获得了用于程序合成器快速开发的通用框架,该程序合成器可容纳基于指称语义的合成,同时演绎和归纳合成,软件重用,句法成分(Alloy⁎实体范围)和一个新的:软草图(必须在合成程序中出现但没有特定执行顺序的一组命令)。我们的综合器系列使用Java语言生成通用程序。作为合金合成器需要几个回合组范围,草图,等等,特别是对于复杂的问题的用户帮助的,我们综合模型取景器的遗传算法模块,其中候选解决方案和用户输入被自动生成和突变。我们成功地进行了程序综合的实证评估。作为结果,我们验证了:(i)我们可以合成13个程序(Maj5Maj8IntSQRTMax4ModuFactFibaMaxaDoubleaSumeCountaBubSortaSelSort);(ii)归纳合成比演绎合成快;(iii)可以重复使用的合成速度更快;(iv)遗传算法优于用户反复试验法。

更新日期:2020-09-02
down
wechat
bug