Skip to main content

Algorithmic program synthesis: introduction


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.

This is a preview of subscription content, access via your institution.


  1. Alur, R., Dill, D.L.: A theory of timed automata. Theor. Comput. Sci. 126, 183–235 (1994)

    Article  MathSciNet  MATH  Google Scholar 

  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)

  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)

  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. Angluin, D., Smith, C.H.: Inductive inference: theory and methods. ACM Comput. Surv. 15(3), 237–269 (1983)

    Article  MathSciNet  Google Scholar 

  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)

  7. Batory, D.S., Thomas, J.: P2: a lightweight dbms generator. J. Intell. Inf. Syst. 9(2), 107–123 (1997)

    Article  Google Scholar 

  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)

  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)

  10. Bertoli, P., Pistore, M., Traverso, P.: Automated composition of web services via planning in asynchronous domains. Artif. Intell. 174(3), 316–361 (2010)

    Article  MathSciNet  Google Scholar 

  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. 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)

    Article  Google Scholar 

  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)

  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)

  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)

  16. Bloem, R., Galler, S., Jobstmann, B., Piterman, N., Pnueli, A., Weiglhofer, M.: Automatic hardware synthesis from specifications: a case study. In: DATE (2007)

  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)

  18. Bloem, R., Greimel, K., Henzinger, T.A., Jobstmann, B.: Synthesizing robust systems. In: FMCAD, pp. 85–92 (2009)

  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)

  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)

  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)

  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)

  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)

  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)

  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. 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)

  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)

  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)

  29. Cheung, A., Solar-Lezama, A., Madden, S.: Optimizing database-backed applications with query synthesis. In: Boehm and Flanagan, vol. 19, pp. 3–14

  30. Church, A.: Logic, arithmetic and automata. In: Proceedings International Mathematical Congress (1962)

  31. Codd, E.F.: A relational model of data for large shared data banks. Commun. ACM 13(6), 377–387 (1970)

    Article  MATH  Google Scholar 

  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. 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)

  34. de Luca, A.: How to specify and verify the long-run average behavior of probabilistic systems. In: LICS, pp. 454–465 (1998)

  35. de Luca, A., Henzinger, T.A., Majumdar, R.: Discounting the future in systems theory. In: ICALP, pp. 1022–1037 (2003)

  36. de Luca, A., Majumdar, R., Raman, V., Stoelinga, M.: Game relations and metrics. In: LICS, pp. 99–108 (2007)

  37. De Giuseppe, G., Patrizi, F.: Automated composition of nondeterministic stateful services. In: Web Services and Formal Methods, pp. 147–160. Springer, Berlin (2010)

  38. Demsky, B., Rinard, M.C.: Goal-directed reasoning for specification-based data structure repair. IEEE Trans. Softw. Eng. 32(12), 931–951 (2006)

    Article  Google Scholar 

  39. Desharnais, J., Gupta, V., Jagadeesan, R.: Metrics for labelled markov processes. Theor. Comput. Sci. 318(3), 323–354 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  40. Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3), 365–473 (2005)

    Article  MathSciNet  Google Scholar 

  41. Donzé, A.: Breach, a toolbox for verification and parameter synthesis of hybrid systems. In: CAV, pp. 167–170 (2010)

  42. Doyen, L., Henzinger, T.A., Legay, A., Nickovic, D.: Robustness of sequential circuits. In: ACSD, pp. 77–84 (2010)

  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)

  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)

  45. Emerson, E.A., Clarke, E.M.: Using branching time temporal logic to synthesize synchronization skeletons. Sci. Comput. Program. 2, 241–266 (1982)

    Article  MATH  Google Scholar 

  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)

  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)

  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)

  49. Filiot, Emmanuel: Jin, N., Raskin. J.-F.. Exploiting structure in ltl synthesis, STTT (2013, in this issue)

  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)

  51. Finkbeiner, B., Schewe, S.: Bounded synthesis. STTT (2013, in this issue)

  52. Fischer, B., Schumann, J.: Autobayes: a system for generating data analysis programs from statistical models. J. Funct. Program. 13(3), 483–508 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  53. Fisman, D., Kupferman, O., Lustig, Y.: Rational synthesis. In: TACAS, pp. 190–204 (2010)

  54. Flener, P.: Logic program synthesis from incomplete information. The Kluwer International Series in Engineering and Computer Science. Kluwer Academic Publishers, Boston (1995)

  55. Flener, P., Schmid, U.: An introduction to inductive programming. Artif. Intell. Rev. 29(1), 45–62 (2008)

    Article  Google Scholar 

  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)

  57. Freitag, B., Margaria, T., Steffen, B.: A pragmatic approach to software synthesis. SIGPLAN Not. 29(8), 46–58 (1994)

    Article  Google Scholar 

  58. Frigo, M.: A fast fourier transform compiler. In: Ryder, B.G., Zorn, B.G. (eds.), PLDI, pp. 169–180. ACM, New York (1999)

  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)

  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)

    Article  MATH  Google Scholar 

  61. Godhal, Y., Chatterjee, K., Henzinger, T.A.: Synthesis of amba ahb from formal specifications: a case study. STTT (2013, in this issue)

  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)

  63. Graf, S., Peled, D., Quinton, S.: Achieving distributed control through model checking. Formal Methods Syst. Des. 40(2), 263–281 (2012)

    Article  MATH  Google Scholar 

  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)

  65. Gulwani, S.: Dimensions in program synthesis. In: Bloem, R., Sharygina, N. (eds.), FMCAD, p. 1. IEEE, New York (2010)

  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)

  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)

  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)

  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)

    Article  MATH  Google Scholar 

  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)

  71. Gvero, T.: Kuncak, V., Kuraj, I., Piskac, R.: Complete completion using types and weights. In: ACM SIGPLAN PLDI, Ruzica (2013)

  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)

  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)

  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)

  75. Harel, David, Marelly, Rami: Come, Let’s Play: Scenario-Based Programming Using LSC’s and the Play-Engine. Springer, Secaucus (2003)

    Book  Google Scholar 

  76. Harel, D., Segall, I.: Synthesis from scenario-based specifications. J. Comput. Syst. Sci. 78(3), 970–980 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  77. Hawkins, P., Aiken, A., Fisher, K., Rinard, M.C., Sagiv, M.: Data representation synthesis. In: Hall and Padua, vol. 72, pp. 38–49

  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)

  79. Henzinger, T.A., Piterman, N.: Solving games without determinization. In: Proceedings of the 15th Conference on Computer Science Logic, pp. 395–410 (2006)

  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)

    Article  MathSciNet  MATH  Google Scholar 

  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)

  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)

  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)

  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)

  85. Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided component-based program synthesis. In: ICSE 2010 (2010)

  86. Jobstmann, B., Bloem, R.: Optimizations for LTL synthesis. In: Conference on Formal Methods in Computer Aided Design, pp. 117–124 (2006)

  87. Jobstmann, B., Galler, S., Weiglhofer, M., Bloem, R.: Anzu: a tool for property synthesis. In: Comput. Aided Verif., pp. 258–262 (2007)

  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)

  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)

    Article  Google Scholar 

  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)

  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. 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)

  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)

  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)

  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. Könighofer, R., Hofferek, G., Bloem, R.: Debugging formal specications—a practical approach using model-based diagnosis and counterstrategies. STTT (2013, in this issue)

  97. Kretínský, J., Esparza, J.: Deterministic automata for the (f, g)-fragment of ltl. In: CAV, pp. 7–22 (2012)

  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. 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)

  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)

  101. Kugler, H., Segall, I.: Compositional synthesis of reactive systems from live sequence chart specifications. In: TACAS, pp. 77–91 (2009)

  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)

  103. Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Complete functional synthesis. In: PLDI (2010)

  104. Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Functional synthesis for linear arithmetic and sets. STTT (2013, in this issue)

  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)

  106. Kupferman, O., Piterman, N., Vardi, M.Y.: Safraless compositional synthesis. In: Eighteenth Conference on Computer Aided Verification, pp. 31–44, LNCS 4144 (2006)

  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)

  108. Kupferman, O., Vardi, M.Y.: Synthesis with incomplete informatio. Adv. Temp. Logic 16, 109–127 (2000)

    Article  MathSciNet  Google Scholar 

  109. Kupferman, O., Vardi, M.Y.: Safraless decision procedures. In: Foundations of Computer Science, pp. 531–542, Pittsburgh, (2005)

  110. Kupferman, O., Vardi, M.Y., Wolper, P.: An automata-theoretic approach to branching-time model checking. J. ACM 47(2), 312–360 (2000)

    Article  MathSciNet  MATH  Google Scholar 

  111. Lamprecht, A.-L., Margaria, T., Steffen, B.: Bio-jeti: a framework for semantics-based service composition. BMC Bioinf. 10(S–10), 8 (2009)

    Article  Google Scholar 

  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)

  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)

  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)

    Article  MATH  Google Scholar 

  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)

  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)

  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)

  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)

  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)

  120. Lustig, Y., Vardi, M.Y.: Synthesis from component libraries. STTT (2013, in this issue)

  121. Lygeros, J., Tomlin, C., Sastry, S.: Controllers for reachability specifications for hybrid systems. Automatica 35(3), 349–370 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  122. Madhusudan, P.: Synthesizing reactive programs. Proceedings of the Comp. Sci. Log., CSL 2011, pp. 428–442 (2011)

  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)

  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)

  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)

  126. Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems *Specification*. Springer, Berlin (1991)

  127. Manna, Z., Pnueli, A.: Temporal Verification of Reactive Systems: Safety. Springer, Berlin (1995)

    Book  Google Scholar 

  128. Manna, Z., Wolper, P.: Synthesis of communicating processes from temporal logic specifications. ACM Trans. Program. Lang. Syst. 6, 68–93 (1984)

    Article  MATH  Google Scholar 

  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)

  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)

  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. Mazo Jr, M., Davitian, A., Tabuada, P.: Pessoa: a tool for embedded controller synthesis. In: Computer Aided Verification, pp. 566–569. Springer, Berlin (2010)

  133. Michel, M.: Complementation is more difficult with automata on infinite words. Manuscript, CNET, Paris (1988)

  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)

  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)

  136. Morgenstern, A.: Symbolic Controller Synthesis for LTL Specifications. PhD thesis, Universität Kaiserslautern (2010)

  137. Morgenstern, A., Schneider, K.: Program sketching via ctl* model checking. In: Model Checking Software, pp. 126–143. Springer, Berlin (2011)

  138. Muggleton, S.: Inductive logic programming. New Gener. Comput. 8(4), 295–318 (1991)

    Article  MATH  Google Scholar 

  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)

    Article  MathSciNet  MATH  Google Scholar 

  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)

  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)

  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)

  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)

  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)

  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)

  146. Pnueli, A.: The temporal logic of programs. In: IEEE Symposium on Foundations of Computer Science, pp. 46–57, Providence (1977)

  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)

  148. Pueschel, M., Franchetti, F., Voronenko, Y.: Encyclopedia of Parallel Computing. In: Padua, D.A. (ed.), chapter Spiral. Springer Reference, Berlin (2011)

  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. Ramadge, P.J.G., Wonham, W.M.: The control of discrete event systems. Proc. IEEE 77, 81–98 (1989)

    Article  Google Scholar 

  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)

  152. Rosner, R.: Modular Synthesis of Reactive Systems. PhD thesis, Weizmann Institute of Science (1992)

  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)

  154. Safra, S.: On the complexity of \(\omega \)-automata. In: Symposium on Foundations of Computer Science, pp. 319–327 (1988)

  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)

  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)

  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)

    Article  MathSciNet  MATH  Google Scholar 

  158. Schewe, S.: Bounded synthesis. In: Automated Technology for Verification and Analysis, pp. 474–488 (2007)

  159. Schkufza, E., Sharma, R., Aiken, A.: Stochastic superoptimization. In: Sarkar, V., Bodík, R. (eds.) ASPLOS. ACM, New York (2013)

    Google Scholar 

  160. Althoff, C.S., Thomas, W., Wallmeier, N.: Observations on determinization of Büchi automata. Theor. Comput. Sci. 363, 224–233 (2006)

    Article  MATH  Google Scholar 

  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. Shapiro, E.Y.: Algorithmic program diagnosis. In: DeMillo, R.A. (ed.) POPL, pp. 299–308. ACM Press, New York (1982)

    Google Scholar 

  163. Shapiro, E.Y.: Algorithmic Program DeBugging. MIT Press, Cambridge (1983)

    Google Scholar 

  164. Singh, R., Gulwani, S.: Learning semantic string transformations from examples. PVLDB 5(8), 740–751 (2012)

    Google Scholar 

  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)

  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. Sistla, A.P., Clarke, E.M.: The complexity of propositional linear temporal logic. J. ACM 3(32), 733–749 (1985)

    Article  MathSciNet  Google Scholar 

  168. Smaragdakis, Y., Batory, D.S.: Distil: a transformation library for data structures. In DSL. USENIX (1997)

  169. Smith, D.R.: Kids: a semiautomatic program development system. IEEE Trans. Softw. Eng. 16(9), 1024–1043 (1990)

    Article  Google Scholar 

  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)

  171. Sohail, S., Somenzi, F.: Safety first: a two-stage algorithm for the synthesis of reactive systems. STTT (2013, in this issue)

  172. Sohail, S., Somenzi, F., Ravi, K.: A hybrid algorithm for LTL games. In: VMCAI. LNCS, vol. 4905, pp. 309–323. Springer, Berlin (2008)

  173. Solar-Lezama, A.: Program sketching. STTT (2013, in this issue)

  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)

  175. Solar-Lezama, A., Jones, C.G., Bodík, R.: Sketching concurrent data structures. In: PLDI, pp. 136–148 (2008)

  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)

  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)

  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)

  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)

  180. Srivastava, S., Gulwani, S., Foster, J.S.: From program verification to program synthesis. In: POPL, pp. 313–326 (2010)

  181. Srivastava, S., Gulwani, S., Foster, J.S.: Template-based program verication and program synthesis. STTT (2013, in this issue)

  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)

  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)

    Article  MATH  Google Scholar 

  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)

  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)

  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)

  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. 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–296

  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)

  190. Van Loan, C.: Computational Frameworks for the Fast Fourier Transform. Society for Industrial and Applied Mathematics, Philadelphia (1992)

    Book  MATH  Google Scholar 

  191. Vardi, M.Y.: Branching vs. linear time: final showdown. Lecture Notes in Computer Science 2031, 1–22 (2001)

    Article  MathSciNet  Google Scholar 

  192. Vechev, M., Yahav, E., Yorsh, G.: Abstraction-guided synthesis of synchronization. STTT (2013, in this issue)

  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. 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. 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)

  196. von Essen, C., Jobstmann, B.: Program repair without regret. In: CAV 2013. Springer, Berlin (2013)

  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)

  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. 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)

  200. Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic program repair with evolutionary computation. Commun. ACM 53(5), 109–116 (2010)

    Article  Google Scholar 

  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)

  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)

  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 

Download references

Author information

Authors and Affiliations


Corresponding author

Correspondence to Rastislav Bodik.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Bodik, R., Jobstmann, B. Algorithmic program synthesis: introduction. Int J Softw Tools Technol Transfer 15, 397–411 (2013).

Download citation

  • Published:

  • Issue Date:

  • DOI:


  • Program synthesis
  • Controller Synthesis
  • Formal Methods
  • Specifications of Program Correctness