Abstract
Adaptive concretization is a program synthesis technique that enables efficient parallelization of challenging synthesis problems. The key observation behind adaptive concretization is that in a challenging synthesis problem, there are some unknowns that are best suited for explicit search and some that are best suited for symbolic search through constraint solving. At a high level, the main idea behind adaptive concretization is to dynamically identify which unknowns are best suited to which kind of search, and to parallelize the explicit search on those unknowns for which that style of search is more suitable. We first introduced adaptive concretization in an earlier paper [Jeon et al. in Computer aided verification, Springer, Berlin 2015]. Our original algorithm involved a few arbitrary design decisions, leaving open the question of whether different choices could achieve better performance. In this paper, we systematically evaluate several dimensions of the design space to better understand the tradeoffs. We show that, in general, adaptive concretization is robust along those dimensions, and our initial choices were reasonable.
Similar content being viewed by others
Notes
Our testing infrastructure, benchmarks, and raw experimental data are open-sourced and explained at: http://plum-umd.github.io/adaptive-concretization/.
\(\text {ite}(a,b,c)\) corresponds to if (a) b else c, as in SMT-LIB.
References
Alur R, Bodík R, Juniwal G, Martin MMK, Raghothaman M, Seshia SA, Singh R, Solar-Lezama A, Torlak E, Udupa A (2013) Syntax-guided synthesis. In: Formal methods in computer-aided design, FMCAD 2013, Portland, OR, USA, October 20–23, 2013, pp 1–17
Ansel J, Kamil S, Veeramachaneni K, Ragan-Kelley J, Bosboom J, O’Reilly U, Amarasinghe SP (2014) Opentuner: an extensible framework for program autotuning. In: International conference on parallel architectures and compilation, PACT ’14, Edmonton, AB, Canada, August 24–27, 2014, pp 303–316
Chaganty A, Nori AV, Rajamani SK (2013) Efficiently sampling probabilistic programs via program analysis. In: Proceedings of the sixteenth international conference on artificial intelligence and statistics, AISTATS 2013, Scottsdale, AZ, USA, April 29–May 1, 2013, pp 153–160
Chaudhuri S, Clochard M, Solar-Lezama, A (2014) Bridging boolean and quantitative synthesis using smoothed proof search. In: The 41st annual ACM SIGPLAN-SIGACT symposium on principles of programming languages, POPL ’14, San Diego, CA, USA, January 20–21, 2014, pp 207–220
Chaudhuri S, Solar-Lezama A (2010) Smooth interpretation. In: Proceedings of the 2010 ACM SIGPLAN conference on programming language design and implementation, PLDI 2010, Toronto, ON, Canada, June 5–10, 2010, pp 279–291
Cheung A, Solar-Lezama A, Madden S (2013) Optimizing database-backed applications with query synthesis. In: ACM SIGPLAN conference on programming language design and implementation, PLDI ’13, Seattle, WA, USA, June 16–19, 2013, pp 3–14
Efron B (1979) Bootstrap methods: another look at the jackknife. Ann Stat 7(1):1–26
Gaudin W, Mallinson A, Perks O, Herdman J, Beckingsale D, Levesque J, Jarvis S (2014) Optimising hydrodynamics applications for the cray xc30 with the application tool suite. The Cray User Group, pp 4–8
Gulwani S (2011) Automating string processing in spreadsheets using input-output examples. In: Proceedings of the 38th ACM SIGPLAN-SIGACT symposium on principles of programming languages, POPL 2011, Austin, TX, USA, January 26–28, 2011, pp 317–330
Hamadi Y, Jabbour S, Sais L (2009) Manysat: a parallel SAT solver. JSAT 6(4):245–262
Harris WR, Gulwani S (2011) Spreadsheet table transformations from examples. In: Proceedings of the 32nd ACM SIGPLAN conference on programming language design and implementation, PLDI 2011, San Jose, CA, USA, June 4–8, 2011, pp 317–328
Jeon J, Qiu X, Fetter-Degges J, Foster JS, Solar-Lezama A synthesizing framework models for symbolic execution. (Under submission)
Jeon J, Qiu X, Solar-Lezama A, Foster JS (2015) Adaptive concretization for parallel program synthesis. In: Computer aided verification (CAV), volume 9207 of lecture notes in computer science, pp 377–394, San Francisco, CA, USA, July 2015. Springer International Publishing
Jha S, Gulwani S, Seshia SA, Tiwari A (2010) Oracle-guided component-based program synthesis. In: Proceedings of the 32nd ACM/IEEE international conference on software engineering - Vol 1, ICSE ’10, pp 215–224, New York, NY, USA, 2010. ACM
Mann HB, Whitney DR (1947) On a test of whether one of two random variables is stochastically larger than the other. Ann Math Stat 18(1):50–60
Qiu X, Solar-Lezama A synthesizing data-structure manipulations with natural proofs. (Under submission)
Schkufza E, Sharma R, Aiken A (2013) Stochastic superoptimization. In: Architectural support for programming languages and operating systems, ASPLOS ’13, Houston, TX, USA, March 16–20, 2013, pp 305–316
Schkufza E, Sharma R, Aiken A (2014) Stochastic optimization of floating-point programs with tunable precision. In: ACM SIGPLAN conference on programming language design and implementation, PLDI ’14, Edinburgh, UK, June 09–11, 2014, p 9
Sharma R, Aiken A (2014) From invariant checking to invariant inference using randomized search. In: Computer aided verification—26th international conference, CAV 2014, held as part of the Vienna summer of logic, VSL 2014, Vienna, Austria, July 18–22, 2014. Proceedings, pp 88–105
Singh R, Gulwani S (2012) Synthesizing number transformations from input-output examples. In: Computer aided verification—24th international conference, CAV 2012, Berkeley, CA, USA, July 7–13, 2012 Proceedings, pp 634–651
Singh R, Gulwani S, Solar-Lezama A (2013) Automated feedback generation for introductory programming assignments. In: ACM SIGPLAN conference on programming language design and implementation, PLDI ’13, Seattle, WA, USA, June 16–19, 2013, pp 15–26
Solar-Lezama A (2013) Program sketching. Int J Softw Tools Technol Transf 15(5–6):475–495
Solar-Lezama A, Jones CG, Bodik R (2008) Sketching concurrent data structures. In: Proceedings of the 2008 ACM SIGPLAN conference on programming language design and implementation, PLDI ’08, pp 136–148
Torlak E, Bodík R (2014) A lightweight symbolic virtual machine for solver-aided host languages. In: ACM SIGPLAN conference on programming language design and implementation, PLDI ’14, Edinburgh, United Kingdom, June 09–11, 2014, p 54
Udupa A, Raghavan A, Deshmukh JV, Mador-Haim S, Martin MMK, Alur R (2013) TRANSIT: specifying protocols with concolic snippets. In: ACM SIGPLAN conference on programming language design and implementation, PLDI ’13, Seattle, WA, USA, June 16–19, 2013, pp 287–296
Vechev MT, Yahav E (2008) Deriving linearizable fine-grained concurrent objects. In: Proceedings of the ACM SIGPLAN 2008 conference on programming language design and implementation, Tucson, AZ, USA, June 7–13, 2008, pp 125–135
Wilcoxon F (1945) Individual comparisons by ranking methods. Biom Bullet 1(6):80–83
Wintersteiger CM, Hamadi Y, de Moura LM (2009) A concurrent portfolio approach to SMT solving. In: Computer aided verification, 21st international conference, CAV 2009, Grenoble, France, June 26–July 2, 2009. Proceedings, pp 715–720
Zhang H, Hsiang Bonacina MP, Psato J (1996) A distributed propositional prover and its application to quasigroup problems. J Symb Comput 21(4–6):543–560
Acknowledgements
Supported in part by NSF CCF-1139021, CCF-1139056, CCF-1161775, and the partnership between UMIACS and the Laboratory for Telecommunication Sciences.
Author information
Authors and Affiliations
Corresponding author
Additional information
X. Qiu: This work was partially done when the author was at MIT as a postdoc.
Rights and permissions
About this article
Cite this article
Jeon, J., Qiu, X., Solar-Lezama, A. et al. An empirical study of adaptive concretization for parallel program synthesis. Form Methods Syst Des 50, 75–95 (2017). https://doi.org/10.1007/s10703-017-0269-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10703-017-0269-8