Synthesis of Programs in Computational Logic David Basin1, Yves Deville2, Pierre Flener3, Andreas Hamfelt4,and Jørgen Fischer Nilsson5 1 Department of Computer Science ETH Zurich Z¨urich Switzerland
[email protected] 2 Department of Computing Science and Engineering Universit´e catholique de Louvain, Pl. Ste Barbe 2, B-1348 Louvain-la-Neuve, Belgium
[email protected] 3 Computing Science Division, Department of Information Technology Uppsala University, Box 337, S-751 05 Uppsala, Sweden
[email protected] 4 Computer Science Division, Department of Information Science Uppsala University, Box 513, S-751 20 Uppsala, Sweden
[email protected] 5 Informatics and Mathematical Modelling Technical University of Denmark DK-2800 Lyngby, Denmark
[email protected] Abstract. Since the early days of programming and automated reason- ing, researchers have developed methods for systematically constructing programs from their specifications. Especially the last decade has seen a flurry of activities including the advent of specialized conferences, such as LOPSTR, covering the synthesis of programs in computational logic. In this paper we analyze and compare three state-of-the-art methods for synthesizing recursive programs in computational logic. The three ap- proaches are constructive/deductive synthesis, schema-guided synthesis, and inductive synthesis. Our comparison is carried out in a systematic way where, for each approach, we describe the key ideas and synthesize a common running example. In doing so, we explore the synergies be- tween the approaches, which we believe are necessary in order to achieve progress over the next decade in this field. 1 Introduction Program synthesis is concerned with the following question: Given a not nec- essarily executable specification, how can an executable program satisfying the specification be developed? The notions of “specification” and “executable” are M.