Program synthesis by type-guided abstraction refinement
Program synthesis by type-guided abstraction refinement
复制标题
通过类型引导的抽象细化进行程序合成
DOI:
10.1145/3371080
复制
发表时间:
2020
影响因子:
--
通讯作者:
Polikarpova, Nadia
中科院分区:
文献类型:
--
作者:
Guo, Zheng;James, Michael;Justo, David;Zhou, Jiaxiao;Wang, Ziteng;Jhala, Ranjit;Polikarpova, Nadia
We consider the problem of type-directed component-based synthesis where, given a set of (typed) components and a querytype, the goal is to synthesize atermthat inhabits the query. Classical approaches based on proof search in intuitionistic logics do not scale up to the standard libraries of modern languages, which span hundreds or thousands of components. Recent graph reachability based methods proposed for Java do scale, but only apply to monomorphic data and components: polymorphic data and components infinitely explode the size of the graph that must be searched, rendering synthesis intractable. We introducetype-guided abstraction refinement(TYGAR), a new approach for scalable type-directed synthesis over polymorphic datatypes and components. Our key insight is that we can overcome the explosion by building a graph overabstract typeswhich represent a potentially unbounded set of concrete types. We show how to use graph reachability to search for candidate terms over abstract types, and introduce a new algorithm that usesproofs of untypeabilityof ill-typed candidates to iterativelyrefinethe abstraction until a well-typed result is found.We have implemented TYGAR in H+, a tool that takes as input a set of Haskell libraries and a query type, and returns a Haskell term that uses functions from the provided libraries to implement the query type. Our support for polymorphism allows H+ to work with higher-order functions and type classes, and enables more precise queries due to parametricity. We have evaluated H+ on 44 queries using a set of popular Haskell libraries with a total of 291 components. H+ returns an interesting solution within the first five results for 32 out of 44 queries. Our results show that TYGAR allows H+ to rapidly return well-typed terms, with the median time to first solution of just 1.4 seconds. Moreover, we observe that gains from iterative refinement over exhaustive enumeration are more pronounced on harder queries.
登录
查看更多内容
DOI:
10.1007/978-3-540-73589-2_2
发表时间:
2007-07
期刊:
--
影响因子:
--
作者:
Jeremy G. Siek;Walid Taha
通讯作者:
Jeremy G. Siek;Walid Taha
DOI:
--
发表时间:
2016
期刊:
ACM-SIGACT Symposium on Principles of Programming Languages
影响因子:
--
作者:
Ronald Garcia;Alison M. Clark;É. Tanter
通讯作者:
É. Tanter
影响因子:
--
作者:
Xinyu Wang;Işıl Dillig;Rishabh Singh
通讯作者:
Xinyu Wang;Işıl Dillig;Rishabh Singh
DOI:
10.2307/j.ctv1ccbggs.36
发表时间:
2019
期刊:
Hand Over Mouth Music
影响因子:
--
作者:
D. Alvarez
通讯作者:
D. Alvarez
DOI:
10.1145/2535838.2535861
发表时间:
2014
期刊:
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
影响因子:
--
作者:
Ilya Sergey;Dimitrios Vytiniotis;S. Jones
通讯作者:
S. Jones