Example-Guided Synthesis of Relational Queries Aalok Thakkar Aaditya Naik Nathaniel Sands University of Pennsylvania University of Pennsylvania University of Southern California Philadelphia, USA Philadelphia, USA Los Angeles, USA
[email protected] [email protected] [email protected] Rajeev Alur Mayur Naik Mukund Raghothaman University of Pennsylvania University of Pennsylvania University of Southern California Philadelphia, USA Philadelphia, USA Los Angeles, USA
[email protected] [email protected] [email protected] Abstract 1 Introduction Program synthesis tasks are commonly specified via input- Program synthesis aims to automatically synthesize a pro- output examples. Existing enumerative techniques for such gram that meets user intent. While the user intent is classi- tasks are primarily guided by program syntax and only make cally described as a correctness specification, synthesizing indirect use of the examples. We identify a class of synthesis programs from input-output examples has gained much trac- algorithms for programming-by-examples, which we call tion, as evidenced by the many applications of programming- Example-Guided Synthesis (EGS), that exploits latent struc- by-example and programming-by-demonstration, such as ture in the provided examples while generating candidate spreadsheet programming [25], relational query synthesis [51, programs. We present an instance of EGS for the synthesis 57], and data wrangling [19, 33]. Nevertheless, their scalabil- of relational queries and evaluate it on 86 tasks from three ity remains an important challenge, and often hinders their application domains: knowledge discovery, program analy- application in the field [5]. sis, and database querying. Our evaluation shows that EGS Existing synthesis tools predominantly adapt a syntax- outperforms state-of-the-art synthesizers based on enumer- guided approach to search through the space of candidate ative search, constraint solving, and hybrid techniques in programs.