Logic for Programming, Artificial Intelligence, and Reasoning

Logic for Programming, Artificial Intelligence, and Reasoning pp 483-498

Using Program Synthesis for Program Analysis

Conference paper

DOI: 10.1007/978-3-662-48899-7_34

Volume 9450 of the book series Lecture Notes in Computer Science (LNCS)
Cite this paper as:
David C., Kroening D., Lewis M. (2015) Using Program Synthesis for Program Analysis. In: Davis M., Fehnker A., McIver A., Voronkov A. (eds) Logic for Programming, Artificial Intelligence, and Reasoning. Lecture Notes in Computer Science, vol 9450. Springer, Berlin, Heidelberg

Abstract

In this paper, we propose a unified framework for designing static analysers based on program synthesis. For this purpose, we identify a fragment of second-order logic with restricted quantification that is expressive enough to capture numerous static analysis problems (e.g. safety proving, bug finding, termination and non-termination proving, superoptimisation). We call this fragment the synthesis fragment. We build a decision procedure for the synthesis fragment over finite domains in the form of a program synthesiser. Given our initial motivation to solve static analysis problems, this synthesiser is specialised for such analyses. Our experimental results show that, on benchmarks capturing static analysis problems, our program synthesiser compares positively with other general purpose synthesisers.

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  1. 1.University of OxfordOxfordUK
  2. 2.Improbable Worlds Ltd.LondonUK