Algorithmic program synthesis: introduction

Introduction

Abstract

Program synthesis is a process of producing an executable program from a specification. Algorithmic synthesis produces the program automatically, without an intervention from an expert. While classical compilation falls under the definition of algorithmic program synthesis, with the source program being the specification, the synthesis literature is typically concerned with producing programs that cannot be (easily) obtained with the deterministic transformations of a compiler. To this end, synthesis algorithms often perform a search, either in a space of candidate programs or in a space of transformations that might be composed to transform the specification into a desired program. In this introduction to the special journal issue, we survey the history of algorithmic program synthesis and introduce the contributed articles. We divide the field into reactive synthesis, which is concerned with automata-theoretic techniques for controllers that handle an infinite stream of requests, and functional synthesis, which produces programs consuming finite input. Contributed articles are divided analogously. We also provide pointers to synthesis work outside these categories and list many applications of synthesis.

Keywords

Program synthesis Controller Synthesis Formal Methods Specifications of Program Correctness 

References

  1. 1.
    Alur, R., Dill, D.L.: A theory of timed automata. Theor. Comput. Sci. 126, 183–235 (1994)MathSciNetCrossRefMATHGoogle Scholar
  2. 2.
    Alur, R., La Torre, S.: Deterministic generators and games for LTL fragments. In: Symposium on Logic in Computer Science (LICS’01), pp. 291–302 (2001)Google Scholar
  3. 3.
    Andersen, E., Gulwani, S., Popovic, Z.: A trace-based framework for analyzing and synthesizing educational progressions. In: Mackay, W.E., Brewster, S.A., Bødker, S. (eds.), CHI. ACM, New York, pp. 773–782 (2013)Google Scholar
  4. 4.
    Andre, D., Russell, S.J.: State abstraction for programmable reinforcement learning agents. In: Dechter, R., Sutton, R.S. (eds.) AAAI/IAAI, pp. 119–125. AAAI Press/The MIT Press, Menlo Park (2002)Google Scholar
  5. 5.
    Angluin, D., Smith, C.H.: Inductive inference: theory and methods. ACM Comput. Surv. 15(3), 237–269 (1983)MathSciNetCrossRefGoogle Scholar
  6. 6.
    Bastoul, C., Cohen, A., Girbal, S., Sharma, S., Temam, O.: Putting polyhedral loop transformations to work. In: Languages and Compilers for Parallel Computing, pp. 209–225. Springer, Berlin (2004)Google Scholar
  7. 7.
    Batory, D.S., Thomas, J.: P2: a lightweight dbms generator. J. Intell. Inf. Syst. 9(2), 107–123 (1997)CrossRefGoogle Scholar
  8. 8.
    Baumgartner, J.: Integrating FV into main-stream verification: the IBM experience, 2006. Invited Talk at the Conference on Formal Methods in Computer Aided Design (FMCAD’06) (2006)Google Scholar
  9. 9.
    Behrmann, G., Cougnard, A., David, A., Fleury, E., Larsen, K.G., Lime, D.: Uppaal-tiga: time for playing games! In: CAV, pp. 121–125 (2007)Google Scholar
  10. 10.
    Bertoli, P., Pistore, M., Traverso, P.: Automated composition of web services via planning in asynchronous domains. Artif. Intell. 174(3), 316–361 (2010)MathSciNetCrossRefGoogle Scholar
  11. 11.
    Bickford, M., Constable, R.L., Halpern, J.Y., Petride, S.: Knowledge-based synthesis of distributed systems using event structures. Log. Methods Comput. Sci., 7(2:14), 1–36 (2011)Google Scholar
  12. 12.
    Bientinesi, P., Gunnels, J.A., Myers, M.E., Quintana-Ortí, E.S., van de Geijn, R.A.: The science of deriving dense linear algebra algorithms. ACM Trans. Math. Softw. 31(1), 1–26 (2005)CrossRefGoogle Scholar
  13. 13.
    Blaine, L., Gilham, L., Liu, J., Smith, D.R., Westfold, S.J.: Planware—domain-specific synthesis of high-performance schedulers. In: ASE, p. 270 (1998)Google Scholar
  14. 14.
    Bloem, R., Chatterjee, K., Henzinger, T.A., Jobstmann, B.: Better quality in synthesis through quantitative objectives. In: Bouajjani, A., Maler, O. (eds.), CAV. Lecture Notes in Computer Science, Vol. 5643, pp. 140–156. Springer, Berlin (2009)Google Scholar
  15. 15.
    Bloem, R., Cimatti, A., Greimel, K., Hofferek, G., Koenighofer, R., Roveri, M., Schuppan, V., Seeber, R.: Ratsy—a new requirements analysis tool with synthesis. In: Comput. Aided Verification (2010, To appear)Google Scholar
  16. 16.
    Bloem, R., Galler, S., Jobstmann, B., Piterman, N., Pnueli, A., Weiglhofer, M.: Automatic hardware synthesis from specifications: a case study. In: DATE (2007)Google Scholar
  17. 17.
    Bloem, R., Galler, S., Jobstmann, B., Piterman, N., Pnueli, A., Martin W.: Specify, compile, run: hardware from PSL. In: COCV, Electronic Notes in Computer Science, pp. 3–16 (2007)Google Scholar
  18. 18.
    Bloem, R., Greimel, K., Henzinger, T.A., Jobstmann, B.: Synthesizing robust systems. In: FMCAD, pp. 85–92 (2009)Google Scholar
  19. 19.
    Boehm, H.-J., Flanagan, C.: (eds.) ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, Seattle, 16–19 June 2013. ACM, New York (2013)Google Scholar
  20. 20.
    Bolton, C., Nelson, G.: Typsy: a type-based search tool for java programmers. Technical Report SRC Technical Note, 2001–004 (Selected: SRC Summer Intern Reports). Compaq SRC, December (2001)Google Scholar
  21. 21.
    Bonakdarpour, B., Kulkarni, S.S.: Sycraft: a tool for synthesizing distributed fault-tolerant programs. In: Breugel, F., Chechik, M. (eds.), CONCUR 2008—Concurrency Theory. Lecture Notes in Computer Science, vol. 5201, pp. 167–171. Springer, Berlin (2008)Google Scholar
  22. 22.
    Bondhugula, U., Hartono, A., Ramanujam, J., Sadayappan, P.: A practical automatic polyhedral parallelizer and locality optimizer. In: Gupta, R., Amarasinghe, S.P. (eds.), PLDI, pp. 101–113. ACM, New York (2008)Google Scholar
  23. 23.
    Bouyer, P.: Weighted timed automata: model-checking and games. In: Brookes, S., Mislove, M. (eds.), Proceedings of the 22nd Conference on Mathematical Foundations of Programming Semantics (MFPS’06). Electronic Notes in Theoretical Computer Science, vol. 158, pp. 3–17, Genova, Italy, May 2006. Elsevier Science Publishers, Amsterdam (2006, Invited paper)Google Scholar
  24. 24.
    Bouyer, P., Markey, N., Sankur, O.: Robust weighted timed automata and games. In: Braberman, V., Fribourg, L. (eds.), Proceedings of the 11th International Conference on Formal Modelling and Analysis of Timed Systems (FORMATS’13). Lecture Notes in Computer Science, Buenos Aires, Argentina, August 2013. Springer, Berlin (2013, To appear)Google Scholar
  25. 25.
    Büchi, J.R., Landweber, L.H.: Solving sequential conditions by finite-state strategies. Trans. Am. Math. Soc. 138, 295–311 (1969)Google Scholar
  26. 26.
    Chatterjee, S., Juvekar, S., Sen, K.: Sniff: a search engine for java using free-form queries. In: Chechik, M., Wirsing, M. (eds.), FASE. Lecture Notes in Computer Science, vol. 5503, pp. 385–400. Springer, Berlin (2009)Google Scholar
  27. 27.
    Chen, T., Forejt, V., Kwiatkowska, M., Parker, D., Simaitis, A.: PRISM-games: a model checker for stochastic multi-player games. In: Piterman, N., Smolka, S. (eds.), Proceedings of the 19th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’13). LNCS, vol. 7795, pp. 185–191. Springer, Berlin (2013)Google Scholar
  28. 28.
    Cheng, C.-H., Rueß, H., Knoll, A., Buckl, C.: Synthesis of fault-tolerant embedded systems using games: from theory to practice. In: Verification, Model Checking, and Abstract Interpretation, pp. 118–133. Springer, Berlin (2011)Google Scholar
  29. 29.
    Cheung, A., Solar-Lezama, A., Madden, S.: Optimizing database-backed applications with query synthesis. In: Boehm and Flanagan, vol. 19, pp. 3–14Google Scholar
  30. 30.
    Church, A.: Logic, arithmetic and automata. In: Proceedings International Mathematical Congress (1962)Google Scholar
  31. 31.
    Codd, E.F.: A relational model of data for large shared data banks. Commun. ACM 13(6), 377–387 (1970)CrossRefMATHGoogle Scholar
  32. 32.
    Cypher, A., Dontcheva, M., Lau, T., Nichols, J.: No Code Required: Giving Users Tools to Transform the Web. Morgan Kaufmann Publishers Inc., San Francisco (2010)Google Scholar
  33. 33.
    Daniele, M., Giunchiglia, F., Vardi, M.Y.: Improved automata generation for linear time temporal logic. In: Halbwachs, N., Peled, D. (eds.), Eleventh Conference on Computer Aided Verification (CAV’99), LNCS 1633, pp. 249–260. Springer, Berlin (1999)Google Scholar
  34. 34.
    de Luca, A.: How to specify and verify the long-run average behavior of probabilistic systems. In: LICS, pp. 454–465 (1998)Google Scholar
  35. 35.
    de Luca, A., Henzinger, T.A., Majumdar, R.: Discounting the future in systems theory. In: ICALP, pp. 1022–1037 (2003)Google Scholar
  36. 36.
    de Luca, A., Majumdar, R., Raman, V., Stoelinga, M.: Game relations and metrics. In: LICS, pp. 99–108 (2007)Google Scholar
  37. 37.
    De Giuseppe, G., Patrizi, F.: Automated composition of nondeterministic stateful services. In: Web Services and Formal Methods, pp. 147–160. Springer, Berlin (2010)Google Scholar
  38. 38.
    Demsky, B., Rinard, M.C.: Goal-directed reasoning for specification-based data structure repair. IEEE Trans. Softw. Eng. 32(12), 931–951 (2006)CrossRefGoogle Scholar
  39. 39.
    Desharnais, J., Gupta, V., Jagadeesan, R.: Metrics for labelled markov processes. Theor. Comput. Sci. 318(3), 323–354 (2004)MathSciNetCrossRefMATHGoogle Scholar
  40. 40.
    Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3), 365–473 (2005)MathSciNetCrossRefGoogle Scholar
  41. 41.
    Donzé, A.: Breach, a toolbox for verification and parameter synthesis of hybrid systems. In: CAV, pp. 167–170 (2010)Google Scholar
  42. 42.
    Doyen, L., Henzinger, T.A., Legay, A., Nickovic, D.: Robustness of sequential circuits. In: ACSD, pp. 77–84 (2010)Google Scholar
  43. 43.
    Ebnenasir, A., Kulkarni, S.S., Bonakdarpour, B.: Revising unity programs: possibilities and limitations. In: Principles of Distributed Systems, pp. 275–290. Springer, Berlin (2006)Google Scholar
  44. 44.
    Elkarablieh, B., Khurshid, S., Vu, D., McKinley, K.S.: Starc: static analysis for efficient repair of complex data. In: ACM SIGPLAN Notices, vol. 42, pp. 387–404. ACM, New York (2007)Google Scholar
  45. 45.
    Emerson, E.A., Clarke, E.M.: Using branching time temporal logic to synthesize synchronization skeletons. Sci. Comput. Program. 2, 241–266 (1982)CrossRefMATHGoogle Scholar
  46. 46.
    Etessami, K., Holzmann, G.J.: Optimizing Büchi automata. In: Proceedings of the 11th International Conference on Concurrency Theory (CONCUR2000), LNCS 1877, pp. 153–167. Springer, Berlin (2000)Google Scholar
  47. 47.
    Feautrier, P.: Automatic parallelization in the polytope model. In: Perrin, G., Darte, A. (eds.), The Data Parallel Programming Model. Lecture Notes in Computer Science, vol. 1132, pp. 79–103. Springer, Berlin (1996)Google Scholar
  48. 48.
    Filiot, E., Jin, N., Raskin, J.-F.: An antichain algorithm for ltl realizability. In: Proceedings of the Computer Aided Verification, pp. 263–277 (2009)Google Scholar
  49. 49.
    Filiot, Emmanuel: Jin, N., Raskin. J.-F.. Exploiting structure in ltl synthesis, STTT (2013, in this issue)Google Scholar
  50. 50.
    Finkbeiner, B., Schewe, S.: Uniform distributed synthesis. In: Proceedings of the 20th Annual IEEE Symposium on Logic in Computer Science, 2005. LICS 2005, pp. 321–330. IEEE, New York (2005)Google Scholar
  51. 51.
    Finkbeiner, B., Schewe, S.: Bounded synthesis. STTT (2013, in this issue)Google Scholar
  52. 52.
    Fischer, B., Schumann, J.: Autobayes: a system for generating data analysis programs from statistical models. J. Funct. Program. 13(3), 483–508 (2003)MathSciNetCrossRefMATHGoogle Scholar
  53. 53.
    Fisman, D., Kupferman, O., Lustig, Y.: Rational synthesis. In: TACAS, pp. 190–204 (2010)Google Scholar
  54. 54.
    Flener, P.: Logic program synthesis from incomplete information. The Kluwer International Series in Engineering and Computer Science. Kluwer Academic Publishers, Boston (1995)Google Scholar
  55. 55.
    Flener, P., Schmid, U.: An introduction to inductive programming. Artif. Intell. Rev. 29(1), 45–62 (2008)CrossRefGoogle Scholar
  56. 56.
    Franchetti, F., de Mesmay, F., McFarlin, D.S., Püschel, M.: Operator language: a program generation framework for fast kernels. In: Taha, W.M. (ed.), DSL. Lecture Notes in Computer Science, vol. 5658, pp. 385–409. Springer, Berlin (2009)Google Scholar
  57. 57.
    Freitag, B., Margaria, T., Steffen, B.: A pragmatic approach to software synthesis. SIGPLAN Not. 29(8), 46–58 (1994)CrossRefGoogle Scholar
  58. 58.
    Frigo, M.: A fast fourier transform compiler. In: Ryder, B.G., Zorn, B.G. (eds.), PLDI, pp. 169–180. ACM, New York (1999)Google Scholar
  59. 59.
    Gastin, P., Oddoux, D.: Fast LTL to Büchi automata translation. In: Berry, G., Comon, H., Finkel, A. (eds.), Thirteenth Conference on Computer Aided Verification (CAV ’01), LNCS 2102, pp. 53–65. Springer, Berlin (2001)Google Scholar
  60. 60.
    Girault, A., Rutten, E.: Automating the addition of fault tolerance with discrete controller synthesis. Formal Methods in System Design 35(2), 190–225 (2009)CrossRefMATHGoogle Scholar
  61. 61.
    Godhal, Y., Chatterjee, K., Henzinger, T.A.: Synthesis of amba ahb from formal specifications: a case study. STTT (2013, in this issue)Google Scholar
  62. 62.
    Grädel, E., Thomas, W., Wilke, T. (eds.) Automata, Logics, and Infinite Games: A Guide to Current Research [outcome of a Dagstuhl seminar, February 2001]. Lecture Notes in Computer Science, vol. 2500. Springer, Berlin (2002)Google Scholar
  63. 63.
    Graf, S., Peled, D., Quinton, S.: Achieving distributed control through model checking. Formal Methods Syst. Des. 40(2), 263–281 (2012)CrossRefMATHGoogle Scholar
  64. 64.
    Griesmayer, A., Bloem, R., Cook, B.: Repair of boolean programs with an application to c. In: Ball, T., Jones, R.B. (eds.), CAV. Lecture Notes in Computer Science, vol. 4144. Springer, Berlin (2006)Google Scholar
  65. 65.
    Gulwani, S.: Dimensions in program synthesis. In: Bloem, R., Sharygina, N. (eds.), FMCAD, p. 1. IEEE, New York (2010)Google Scholar
  66. 66.
    Gulwani, S.: Automating string processing in spreadsheets using input–output examples. In: Ball, T., Sagiv, M. (eds.), POPL, pp. 317–330. ACM, New York (2011)Google Scholar
  67. 67.
    Gulwani, S., Jha, S., Tiwari, A., Venkatesan, R.: Synthesis of loop-free programs. In: Hall, M.W., Padua, D.A. (eds.), Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, pp. 62–73. ACM, New York (2011)Google Scholar
  68. 68.
    Gulwani, S., Korthikanti, V.A., Tiwari, A.: Synthesizing geometry constructions. In: Hall, M.W., Padua, D.A. (eds.), Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, pp. 50–61. ACM, New York (2011)Google Scholar
  69. 69.
    Gunnels, J.A., Gustavson, F.G., Henry, G., van de Geijn, R.A.: Flame: formal linear algebra methods environment. ACM Trans. Math. Softw. 27(4), 422–455 (2001)CrossRefMATHGoogle Scholar
  70. 70.
    Gurevich, Y., Harrington, L.: Trees, automata, and games. In: Proceedings of the 14th ACM Symposium. Theory of Comp., pp. 60–65, San Francisco (1982)Google Scholar
  71. 71.
    Gvero, T.: Kuncak, V., Kuraj, I., Piskac, R.: Complete completion using types and weights. In: ACM SIGPLAN PLDI, Ruzica (2013)Google Scholar
  72. 72.
    Hall, M.W., Padua, D.A. (eds.) Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, San Jose, 4–8 June 2011. ACM, New York (2011)Google Scholar
  73. 73.
    Harding, A., Ryan, M., Schobbens, P.-Y.: A new algorithm for strategy synthesis in LTL games. In: Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2005), pp. 477–492, Edinburgh. LNCS 3440 (2005)Google Scholar
  74. 74.
    Harel, D., Kugler, H., Pnueli, A.: Synthesis revisited: generating statechart models from scenario-based requirements. In: Formal Methods in Software and Systems Modeling, pp. 309–324. Springer, Berlin (2005)Google Scholar
  75. 75.
    Harel, David, Marelly, Rami: Come, Let’s Play: Scenario-Based Programming Using LSC’s and the Play-Engine. Springer, Secaucus (2003)CrossRefGoogle Scholar
  76. 76.
    Harel, D., Segall, I.: Synthesis from scenario-based specifications. J. Comput. Syst. Sci. 78(3), 970–980 (2012)MathSciNetCrossRefMATHGoogle Scholar
  77. 77.
    Hawkins, P., Aiken, A., Fisher, K., Rinard, M.C., Sagiv, M.: Data representation synthesis. In: Hall and Padua, vol. 72, pp. 38–49Google Scholar
  78. 78.
    Hawkins, P., Aiken, A., Fisher, K., Rinard, M.C., Sagiv, M.: Concurrent data representation synthesis. In: Vitek, J., Lin, H., Frank, T. (eds.) PLDI, pp. 417–428. ACM, New York (2012)Google Scholar
  79. 79.
    Henzinger, T.A., Piterman, N.: Solving games without determinization. In: Proceedings of the 15th Conference on Computer Science Logic, pp. 395–410 (2006)Google Scholar
  80. 80.
    Kurshan, R.P., Touati, H.J., Brayton, R.K.: Testing language containment for \(\omega \)-automata using BDD’s. Inf. Comput. 118(1), 101–109 (1995)MathSciNetCrossRefMATHGoogle Scholar
  81. 81.
    Holmes, R., Walker, R.J., Murphy, G.C.: Strathcona example recommendation tool. In: Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC/FSE-13, pp. 237–240. ACM, New York (2005)Google Scholar
  82. 82.
    Huynh, D.F., Miller, R.C., Karger, D.R.: Enabling web browsers to augment web sites’ filtering and sorting functionalities. In: Proceedings of the 19th Annual ACM Symposium on User Interface Software and Technology, UIST ’06, pp. 125–134. ACM, New York (2006)Google Scholar
  83. 83.
    Itzhaky, S., Gulwani, S., Immerman, N., Sagiv, M.: A simple inductive synthesis methodology and its applications. In: Cook, W.R., Clarke, S., Rinard, M.C. (eds.), OOPSLA, pp. 36–46. ACM, New York (2010)Google Scholar
  84. 84.
    Jackson, D.: Alloy: a new technology for software modelling. In: Katoen, J.-P., Stevens, P. (eds.), TACAS. Lecture Notes in Computer Science, vol. 2280, p. 20. Springer, Berlin (2002)Google Scholar
  85. 85.
    Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided component-based program synthesis. In: ICSE 2010 (2010)Google Scholar
  86. 86.
    Jobstmann, B., Bloem, R.: Optimizations for LTL synthesis. In: Conference on Formal Methods in Computer Aided Design, pp. 117–124 (2006)Google Scholar
  87. 87.
    Jobstmann, B., Galler, S., Weiglhofer, M., Bloem, R.: Anzu: a tool for property synthesis. In: Comput. Aided Verif., pp. 258–262 (2007)Google Scholar
  88. 88.
    Jobstmann, B., Griesmayer, A., Bloem, R.: Program repair as a game. In: Etessami, K., Rajamani, S.K. (eds.), 17th Conference on Computer Aided Verification (CAV’05), pp. 226–238. Springer, Berlin. LNCS 3576 (2005)Google Scholar
  89. 89.
    Joshi, R., Nelson, G., Zhou, Y.: Denali: a practical algorithm for generating optimal code. ACM Trans. Program. Lang. Syst. 28(6), 967–989 (2006)CrossRefGoogle Scholar
  90. 90.
    Katz, G., Peled, D.: Model checking-based genetic programming with an application to mutual exclusion. In: Ramakrishnan, C.R., Rehof, J. (eds.), TACAS. Lecture Notes in Computer Science, vol. 4963, pp. 141–156. Springer, Berlin (2008)Google Scholar
  91. 91.
    Katz, G., Peled, D., Schewe, S.: Synthesis of distributed control through knowledge accumulation. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV. Lecture Notes in Computer Science, vol. 6806. Springer, Brelin (2011)Google Scholar
  92. 92.
    Kitzelmann, E.: Inductive programming: a survey of program synthesis techniques. In: Schmid, U., Kitzelmann, E., Plasmeijer, R. (eds.) AAIP. Lecture Notes in Computer Science, vol. 5812, pp. 50–73. Springer, Berlin (2009)Google Scholar
  93. 93.
    Klarlund, N.: Progress measures for complementation of \(\omega \)-automata with application to temporal logic. In: Proceedings of the 32nd IEEE Symposium on Foundations of Computer Science, pp. 358–367, San Juan (1991)Google Scholar
  94. 94.
    Klein, Joachim, Baier, Christel.: Experiments with deterministic omega-automata for formulas of linear temporal logic. In: Conference on Implementation and Application of Automata (CIAA’05), pp. 199–212. LNCS 3845 (2005)Google Scholar
  95. 95.
    Klonatos, Y., Nötzli, A., Spielmann, A., Koch, C., Kuncak, V.: Automatic synthesis of out-of-core algorithms. In: Ross, K.A., Srivastava, D., Papadias, D. (eds.) SIGMOD Conference, pp. 133–144. ACM, New York (2013)Google Scholar
  96. 96.
    Könighofer, R., Hofferek, G., Bloem, R.: Debugging formal specications—a practical approach using model-based diagnosis and counterstrategies. STTT (2013, in this issue)Google Scholar
  97. 97.
    Kretínský, J., Esparza, J.: Deterministic automata for the (f, g)-fragment of ltl. In: CAV, pp. 7–22 (2012)Google Scholar
  98. 98.
    Krishnamurthi, S., Fisler, K., Dougherty, D.J., Yoo, D.: Alchemy: transmuting base alloy specifications into implementations. In: Harrold, M.J., Murphy, G.C. (eds.) SIGSOFT FSE. ACM, New York (2008)Google Scholar
  99. 99.
    Krüger, I., Grosu, R., Scholz, P., Broy, M.: From mscs to statecharts. In: Proceedings of the IFIP WG10.3/WG10.5 International Workshop on Distributed and Parallel Embedded Systems, DIPES ’98, pp. 61–71, Norwell. Kluwer Academic Publishers, Dordrecht (1999)Google Scholar
  100. 100.
    Kubczak, C., Margaria, T., Steffen, B.: Mashup development for everybody: a planning—based approach. In: Proceedings of the 3rd International Workshop on Service Matchmaking and Resource Retrieval in the Semantic Web, SMR2 (2009)Google Scholar
  101. 101.
    Kugler, H., Segall, I.: Compositional synthesis of reactive systems from live sequence chart specifications. In: TACAS, pp. 77–91 (2009)Google Scholar
  102. 102.
    Kulkarni, S., Arora, A.: Automating the addition of fault-tolerance. In: Joseph, M. (ed.), Formal Techniques in Real-Time and Fault-Tolerant Systems. Lecture Notes in Computer Science, vol. 1926, pp. 82–93. Springer, Berlin (2000)Google Scholar
  103. 103.
    Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Complete functional synthesis. In: PLDI (2010)Google Scholar
  104. 104.
    Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Functional synthesis for linear arithmetic and sets. STTT (2013, in this issue)Google Scholar
  105. 105.
    Kupermann, O., Varfi, M.Y.: Synthesizing distributed systems. In: Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science, 2001, pp. 389–398. IEEE, New York (2001)Google Scholar
  106. 106.
    Kupferman, O., Piterman, N., Vardi, M.Y.: Safraless compositional synthesis. In: Eighteenth Conference on Computer Aided Verification, pp. 31–44, LNCS 4144 (2006)Google Scholar
  107. 107.
    Kupferman, O., Vardi, M.Y.: Freedom, weakness, and determinism: from linear-time to branching-time. In: Proceedings of the 13th IEEE Symposium on Logic in Computer Science (1998)Google Scholar
  108. 108.
    Kupferman, O., Vardi, M.Y.: Synthesis with incomplete informatio. Adv. Temp. Logic 16, 109–127 (2000)MathSciNetCrossRefGoogle Scholar
  109. 109.
    Kupferman, O., Vardi, M.Y.: Safraless decision procedures. In: Foundations of Computer Science, pp. 531–542, Pittsburgh, (2005)Google Scholar
  110. 110.
    Kupferman, O., Vardi, M.Y., Wolper, P.: An automata-theoretic approach to branching-time model checking. J. ACM 47(2), 312–360 (2000)MathSciNetCrossRefMATHGoogle Scholar
  111. 111.
    Lamprecht, A.-L., Margaria, T., Steffen, B.: Bio-jeti: a framework for semantics-based service composition. BMC Bioinf. 10(S–10), 8 (2009)CrossRefGoogle Scholar
  112. 112.
    Lau, T.A., Domingos, P., Weld, D.S.: Version space algebra and its application to programming by demonstration. In: Langley, P. (ed.), ICML, pp. 527–534. Morgan Kaufmann, Burlington (2000)Google Scholar
  113. 113.
    Lau, T.A., Domingos, P., Weld, D.S.: Learning programs from traces using version space algebra. In: Gennari, J.H., Porter, B.W., Gil, Y. (eds.), K-CAP, pp. 36–43. ACM, New York (2003)Google Scholar
  114. 114.
    Lau, T.A., Wolfman, S.A., Domingos, P., Weld, D.S.: Programming by demonstration using version space algebra. Machine Learn. 53(1–2), 111–156 (2003)CrossRefMATHGoogle Scholar
  115. 115.
    Leshed, G., Haber, E.M., Matthews, T., Lau, T.A.: Coscripter: automating & sharing how-to knowledge in the enterprise. In: Czerwinski, M., Lund, A.M., Tan, D.S. (eds.), CHI, pp. 1719–1728. ACM, New York (2008)Google Scholar
  116. 116.
    Lin, J., Wong, J., Nichols, J., Cypher, A., Lau, T.A.: End-user programming of mashups with vegemite. In: Conati, C., Bauer, M., Oliver, N., Weld, D.S. (eds.), IUI, pp. 97–106. ACM, New York (2009)Google Scholar
  117. 117.
    Liu, J., Ozay, N., Topcu, U., Murray, R.M.: Switching protocol synthesis for temporal logic specifications. In: American Control Conference (ACC), 2012, pp. 727–734. IEEE, New York (2012)Google Scholar
  118. 118.
    Löding, C.: Optimal bounds for transformations of omega-automata. In: Conference on Foundations of Software Technology and Theoretical Computer Science, pp. 97–109 (1999)Google Scholar
  119. 119.
    Logozzo, F., Ball, T.: Modular and verified automatic program repair. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, pp. 133–146. ACM, New York (2012)Google Scholar
  120. 120.
    Lustig, Y., Vardi, M.Y.: Synthesis from component libraries. STTT (2013, in this issue)Google Scholar
  121. 121.
    Lygeros, J., Tomlin, C., Sastry, S.: Controllers for reachability specifications for hybrid systems. Automatica 35(3), 349–370 (1999)MathSciNetCrossRefMATHGoogle Scholar
  122. 122.
    Madhusudan, P.: Synthesizing reactive programs. Proceedings of the Comp. Sci. Log., CSL 2011, pp. 428–442 (2011)Google Scholar
  123. 123.
    Maidl, M.: The common fragment of CTL and LTL. In: Proceedings of the 41th Annual Symposium on Foundations of Computer Science, pp. 643–652 (2000)Google Scholar
  124. 124.
    Maler, O., Pnueli, A., Sifakis, J.: On the synthesis of discrete controllers for timed systems (an extended abstract). In: STACS, pp. 229–242 (1995)Google Scholar
  125. 125.
    Mandelin, D., Xu, L., Bodík, R., Kimelman, D.: Jungloid mining: helping to navigate the api jungle. In: Sarkar, V., Hall, M.W. (eds.), PLDI, pp. 48–61. ACM, New York (2005)Google Scholar
  126. 126.
    Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems *Specification*. Springer, Berlin (1991)Google Scholar
  127. 127.
    Manna, Z., Pnueli, A.: Temporal Verification of Reactive Systems: Safety. Springer, Berlin (1995)CrossRefGoogle Scholar
  128. 128.
    Manna, Z., Wolper, P.: Synthesis of communicating processes from temporal logic specifications. ACM Trans. Program. Lang. Syst. 6, 68–93 (1984)CrossRefMATHGoogle Scholar
  129. 129.
    Maoz, S., Sa’ar, Y.: Aspectltl: an aspect language for ltl specifications. In: Proceedings of the Tenth International Conference on Aspect-Oriented Software Development, pp. 19–30. ACM, New York (2011)Google Scholar
  130. 130.
    Marthi, B., Russell, S.J., Latham, D., Guestrin, C.: Concurrent hierarchical reinforcement learning. In: Kaelbling, L.P., Saffiotti, A. (eds.) IJCAI. Professional Book Center, Mumbai (2005)Google Scholar
  131. 131.
    Massalin, H.: Superoptimizer—a look at the smallest program. In: Katz, R.H. (ed.) ASPLOS, pp. 122–126. ACM Press, New York (1987)Google Scholar
  132. 132.
    Mazo Jr, M., Davitian, A., Tabuada, P.: Pessoa: a tool for embedded controller synthesis. In: Computer Aided Verification, pp. 566–569. Springer, Berlin (2010)Google Scholar
  133. 133.
    Michel, M.: Complementation is more difficult with automata on infinite words. Manuscript, CNET, Paris (1988)Google Scholar
  134. 134.
    Mishne, A., Shoham, S., Yahav, E.: Typestate-based semantic code search over partial programs. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’12, pp. 997–1016. ACM, New York (2012)Google Scholar
  135. 135.
    Mohalik, S., Walukiewicz, I.: Distributed games. In: FST TCS 2003: Foundations of Software Technology and Theoretical Computer Science, pp. 338–351. Springer, Berlin (2003)Google Scholar
  136. 136.
    Morgenstern, A.: Symbolic Controller Synthesis for LTL Specifications. PhD thesis, Universität Kaiserslautern (2010)Google Scholar
  137. 137.
    Morgenstern, A., Schneider, K.: Program sketching via ctl* model checking. In: Model Checking Software, pp. 126–143. Springer, Berlin (2011)Google Scholar
  138. 138.
    Muggleton, S.: Inductive logic programming. New Gener. Comput. 8(4), 295–318 (1991)CrossRefMATHGoogle Scholar
  139. 139.
    Muller, D.E., Schupp, P.E.: Simulating alternating tree automata by nondeterministic automata: new results and new proofs of the theorems of Rabin, McNaughton and Safra. Theor. Comput. Sci. 141, 69–107 (1995)MathSciNetCrossRefMATHGoogle Scholar
  140. 140.
    Naujokat, S., Lamprecht, A.-L., Steffen, B.: Loose programming with PROPHETS. In: de Lara, J., Zisman, A. (eds.), FASE. Lecture Notes in Computer Science, vol. 7212, pp. 94–98. Springer, Berlin (2012)Google Scholar
  141. 141.
    Oddos, Y., Morin-Allory, K., Borrione, D.: From assertion-based verification to assertion-based synthesis. In: VLSI-SoC: Technologies for Systems Integration, pp. 94–117. Springer, Berlin (2011)Google Scholar
  142. 142.
    Paige, R.: Symbolic finite differencing—part i. In: Jones, N.D. (ed.), ESOP. Lecture Notes in Computer Science, vol. 432, pp. 36–56. Springer, Berlin (1990)Google Scholar
  143. 143.
    Piterman, N.: From nondeterministic Büchi and Streett automata to deterministic parity automata. In: 21st Symposium on Logic in Computer Science, pp. 255–264, Seattle (2006)Google Scholar
  144. 144.
    Piterman, N., Pnueli, A., Sa’ar, Y.: Synthesis of reactive(1) designs. In: 7th International Conference on Verification, Model Checking and Abstract Interpretation, pp. 364–380. Springer, Berlin. LNCS 3855 (2006)Google Scholar
  145. 145.
    Pneuli, A., Rosner, R.: Distributed reactive systems are hard to synthesize. In: 31st Annual Symposium on Foundations of Computer Science, 1990. Proceedings, pp. 746–757. IEEE, New York (1990)Google Scholar
  146. 146.
    Pnueli, A.: The temporal logic of programs. In: IEEE Symposium on Foundations of Computer Science, pp. 46–57, Providence (1977)Google Scholar
  147. 147.
    Pnueli, A., Rosner, R.: On the synthesis of a reactive module. In: Proceedings of the Symposium on Principles of Programming Languages (POPL ’89), pp. 179–190 (1989)Google Scholar
  148. 148.
    Pueschel, M., Franchetti, F., Voronenko, Y.: Encyclopedia of Parallel Computing. In: Padua, D.A. (ed.), chapter Spiral. Springer Reference, Berlin (2011)Google Scholar
  149. 149.
    Rabin, M.O.: Automata on Infinite Objects and Church’s Problem. Regional Conference Series in Mathematics. American Mathematical Society, Providence (1972)Google Scholar
  150. 150.
    Ramadge, P.J.G., Wonham, W.M.: The control of discrete event systems. Proc. IEEE 77, 81–98 (1989)CrossRefGoogle Scholar
  151. 151.
    Reiss, S.P.: Semantics-based code search. In: Proceedings of the 31st International Conference on Software Engineering, ICSE ’09, pp. 243–253, Washington, DC. IEEE Computer Society, New York (2009)Google Scholar
  152. 152.
    Rosner, R.: Modular Synthesis of Reactive Systems. PhD thesis, Weizmann Institute of Science (1992)Google Scholar
  153. 153.
    Sadigh, D., Seshia, S.A., Gupta, M.: Automating exercise generation: a step towards meeting the MOOC challenge for embedded systems. In: Proceedings of the Workshop on Embedded Systems Education (WESE) (2012)Google Scholar
  154. 154.
    Safra, S.: On the complexity of \(\omega \)-automata. In: Symposium on Foundations of Computer Science, pp. 319–327 (1988)Google Scholar
  155. 155.
    Samanta, R., Deshmukh, J.V., Emerson, E.A.: Automatic generation of local repairs for boolean programs. In: Formal Methods in Computer-Aided Design, 2008. FMCAD’08, pp. 1–10. IEEE, New York (2008)Google Scholar
  156. 156.
    Samimi, H., Schäfer, M., Artzi, S., Millstein, T.D., Tip, F., Hendren, L.J.: Automated repair of html generation errors in php applications using string constraint solving. In: Glinz, M., Murphy, G.C., Pezzè, M. (eds.), ICSE, pp. 277–287. IEEE, New York (2012)Google Scholar
  157. 157.
    Sandryhaila, A., Kovacevic, J., Püschel, M.: Algebraic signal processing theory: cooley-tukey-type algorithms for polynomial transforms based on induction. SIAM J. Matrix Anal. Appl. 32(2), 364–384 (2011)MathSciNetCrossRefMATHGoogle Scholar
  158. 158.
    Schewe, S.: Bounded synthesis. In: Automated Technology for Verification and Analysis, pp. 474–488 (2007)Google Scholar
  159. 159.
    Schkufza, E., Sharma, R., Aiken, A.: Stochastic superoptimization. In: Sarkar, V., Bodík, R. (eds.) ASPLOS. ACM, New York (2013)Google Scholar
  160. 160.
    Althoff, C.S., Thomas, W., Wallmeier, N.: Observations on determinization of Büchi automata. Theor. Comput. Sci. 363, 224–233 (2006)CrossRefMATHGoogle Scholar
  161. 161.
    Seshia, S.A.: Sciduction: combining induction, deduction, and structure for and synthesis. In: Groeneveld, P., Sciuto, D., Hassoun, S. (eds.) DAC. ACM, New York (2012)Google Scholar
  162. 162.
    Shapiro, E.Y.: Algorithmic program diagnosis. In: DeMillo, R.A. (ed.) POPL, pp. 299–308. ACM Press, New York (1982)Google Scholar
  163. 163.
    Shapiro, E.Y.: Algorithmic Program DeBugging. MIT Press, Cambridge (1983)Google Scholar
  164. 164.
    Singh, R., Gulwani, S.: Learning semantic string transformations from examples. PVLDB 5(8), 740–751 (2012)Google Scholar
  165. 165.
    Singh, R., Gulwani, S., Solar-Lezama, A.: Automated feedback generation for introductory programming assignments. In: Boehm, H.-J., Flanagan, C. (eds.), Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI’13, pp. 15–26. ACM, New York (2013)Google Scholar
  166. 166.
    Singh, R., Gulwani, S., Rajamani, S.K.: Automatically generating algebra problems. In: Hoffmann, J., Selman, B. (eds.) AAAI. AAAI Press, Menlo Park (2012)Google Scholar
  167. 167.
    Sistla, A.P., Clarke, E.M.: The complexity of propositional linear temporal logic. J. ACM 3(32), 733–749 (1985)MathSciNetCrossRefGoogle Scholar
  168. 168.
    Smaragdakis, Y., Batory, D.S.: Distil: a transformation library for data structures. In DSL. USENIX (1997)Google Scholar
  169. 169.
    Smith, D.R.: Kids: a semiautomatic program development system. IEEE Trans. Softw. Eng. 16(9), 1024–1043 (1990)CrossRefGoogle Scholar
  170. 170.
    Sohail, S., Somenzi, F.: Safety first: a two-stage algorithm for LTL games. In: FMCAD’09, pp. 77–84. IEEE Press, New York (2009)Google Scholar
  171. 171.
    Sohail, S., Somenzi, F.: Safety first: a two-stage algorithm for the synthesis of reactive systems. STTT (2013, in this issue)Google Scholar
  172. 172.
    Sohail, S., Somenzi, F., Ravi, K.: A hybrid algorithm for LTL games. In: VMCAI. LNCS, vol. 4905, pp. 309–323. Springer, Berlin (2008)Google Scholar
  173. 173.
    Solar-Lezama, A.: Program sketching. STTT (2013, in this issue)Google Scholar
  174. 174.
    Solar-Lezama, A., Arnold, G., Tancau, L., Bodík, R., Saraswat, V.A., Seshia, S.A.: Sketching stencils. In: PLDI, pp. 167–178 (2007)Google Scholar
  175. 175.
    Solar-Lezama, A., Jones, C.G., Bodík, R.: Sketching concurrent data structures. In: PLDI, pp. 136–148 (2008)Google Scholar
  176. 176.
    Solar-Lezama, A., Rabbah, R.M., Bodík, R., Ebcioglu, K.: Programming by sketching for bit-streaming programs. In: PLDI, pp. 281–294 (2005)Google Scholar
  177. 177.
    Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S.A., Saraswat, V.A.: Combinatorial sketching for finite programs. In: ASPLOS, pp. 404–415 (2006)Google Scholar
  178. 178.
    Somenzi, F., Bloem, R.: Efficient Büchi automata from LTL formulae. In: Emerson, E.A., Sistla, A.P. (eds.), Twelfth Conference on Computer Aided Verification (CAV’00), pp. 248–263. Springer, Berlin. LNCS 1855 (2000)Google Scholar
  179. 179.
    Srivastava, S., Gulwani, S.: Program verification using templates over predicate abstraction. In: Hind, M., Diwan, A. (eds.), PLDI, pp. 223–234. ACM, New York (2009)Google Scholar
  180. 180.
    Srivastava, S., Gulwani, S., Foster, J.S.: From program verification to program synthesis. In: POPL, pp. 313–326 (2010)Google Scholar
  181. 181.
    Srivastava, S., Gulwani, S., Foster, J.S.: Template-based program verication and program synthesis. STTT (2013, in this issue)Google Scholar
  182. 182.
    Steffen, B., Isberner, M., Naujokat, S., Margaria, T., Geske, M.: Property-driven benchmark generation. In: Bartocci, E., Ramakrishnan, C.R. (eds.), SPIN. Lecture Notes in Computer Science, vol. 7976, pp. 341–357. Springer, Berlin (2013)Google Scholar
  183. 183.
    Steffen, B., Margaria, T., Braun, V.: The electronic tool integration platform: concepts and design. Int. J. Softw. Tools Technol. Transfer 1(1–2), 9–30 (1997)CrossRefMATHGoogle Scholar
  184. 184.
    Strout, M.M., Georg, G., Olschanowsky, C.: Set and relation manipulation for the sparse polyhedral framework. In: Kasahara, H., Kimura, K. (eds.), LCPC. Lecture Notes in Computer Science, vol. 7760, pp. 61–75. Springer, Berlin (2012)Google Scholar
  185. 185.
    Thummalapenta, S., Xie, T.: Parseweb: a programmer assistant for reusing open source code on the web. In: Stirewalt, R.E.K., Egyed, A., Fischer, B. (eds.) ASE. ACM, New York (2007) Google Scholar
  186. 186.
    Uchitel, S., Brunet, G., Chechik, M.: Behaviour model synthesis from properties and scenarios. In: Proceedings of the 29th International Conference on Software Engineering, ICSE ’07, pp. 34–43, Washington, DC. IEEE Computer Society, New York (2007)Google Scholar
  187. 187.
    Uchitel, S., Kramer, J., Magee, J.: Synthesis of behavioral models from scenarios. IEEE Trans. Softw. Eng. 29(2), 99–115 (2003)Google Scholar
  188. 188.
    Udupa, A., Raghavan, A., Deshmukh, J.V., Mador-Haim, S., Martin, M.M.K., Alur, R.: Transit: specifying protocols with concolic snippets. In: Boehm and Flanagan, vol. 19, pp. 287–296Google Scholar
  189. 189.
    Van, H.T., van Lamsweerde, A., Massonet, P., Ponsard, C.: Goal-oriented requirements animation. In: Proceedings of the Requirements Engineering Conference, 12th IEEE International, RE ’04, pp. 218–228, Washington, DC. IEEE Computer Society, New York (2004)Google Scholar
  190. 190.
    Van Loan, C.: Computational Frameworks for the Fast Fourier Transform. Society for Industrial and Applied Mathematics, Philadelphia (1992)CrossRefMATHGoogle Scholar
  191. 191.
    Vardi, M.Y.: Branching vs. linear time: final showdown. Lecture Notes in Computer Science 2031, 1–22 (2001)MathSciNetCrossRefGoogle Scholar
  192. 192.
    Vechev, M., Yahav, E., Yorsh, G.: Abstraction-guided synthesis of synchronization. STTT (2013, in this issue)Google Scholar
  193. 193.
    Vechev, M.T., Yahav, E., Bacon, D.F.: Correctness-preserving derivation of concurrent garbage collection algorithms. In: Schwartzbach, M.I., Ball, T. (eds.) PLDI. ACM, New York (2006)Google Scholar
  194. 194.
    Vechev, M.T., Yahav, E., Bacon, D.F., Rinetzky, N.: Cgcexplorer: a semi-automated search procedure for provably correct concurrent collectors. In: Ferrante, J., McKinley, K.S. (eds.) PLDI. ACM, New York (2007)Google Scholar
  195. 195.
    Vechev, M.T., Yahav, E., Yorsh, G.: Inferring synchronization under limited observability. In: 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Lecture Notes in Computer Science, vol. 5505, pp. 139–154. Springer, Berlin (2009)Google Scholar
  196. 196.
    von Essen, C., Jobstmann, B.: Program repair without regret. In: CAV 2013. Springer, Berlin (2013)Google Scholar
  197. 197.
    Wallmeier, N., Hütten, P., Thomas, W.: Symbolic synthesis of finite-state controllers for request–response specifications. In: Proceedings of the International Conference on the Implementation and Application of Automata. Springer, Berlin (2003)Google Scholar
  198. 198.
    Wang, Y., Kelly, T., Kudlur, M., Lafortune, S., Mahlke, S.A.: Gadara: dynamic deadlock avoidance for multithreaded programs. In: Draves, R., van Renesse, R. (eds.) OSDI, pp. 281–294. USENIX Association, Berkeley (2008)Google Scholar
  199. 199.
    Wang, Y., Lafortune, S., Kelly, T., Kudlur, M., Mahlke, S.A.: The theory of deadlock avoidance via discrete control. In: POPL, pp. 252–263 (2009)Google Scholar
  200. 200.
    Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic program repair with evolutionary computation. Commun. ACM 53(5), 109–116 (2010)CrossRefGoogle Scholar
  201. 201.
    Whittle, J., Jayaraman, P.K.: Generating hierarchical state machines from use case charts. In: Proceedings of the 14th IEEE International Requirements Engineering Conference, RE ’06, pp. 16–25, Washington, DC. IEEE Computer Society, New York (2006)Google Scholar
  202. 202.
    Wolper, P., Vardi, M.Y., Sistla, A.P.: Reasoning about infinite computation paths. In: Proceedings of the 24th IEEE Symposium on Foundations of Computer Science, pp. 185–194 (1983)Google Scholar
  203. 203.
    Yessenov, K., Xu, Z., Solar-Lezama, A.: Data-driven synthesis for object-oriented frameworks. In: Lopes, C.V., Fisher, K. (eds.) OOPSLA. ACM, New York (2011)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  1. 1.Department of Electrical Engineering and Computer SciencesUniversity of CaliforniaBerkeleyUSA
  2. 2.École Polytechnique Fédérale de LausanneLausanneSwitzerland
  3. 3.CNRS-VERIMAGGièresFrance

Personalised recommendations