Journal article
Program synthesis for program analysis
- Abstract:
- In this article, 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 model numerous static analysis problems (e.g., safety proving, bug finding, termination and non-termination proving, refactoring). As our focus is on programs that use bit-vectors, we build a decision procedure for this fragment over finite domains in the form of a program synthesiser. We provide instantiations of our framework for solving a diverse range of program verification tasks such as termination, non-termination, safety and bug finding, superoptimisation, and refactoring. Our experimental results show that our program synthesiser compares positively with specialised tools in each area as well as with general-purpose synthesisers.
- Publication status:
- Published
- Peer review status:
- Peer reviewed
Actions
Access Document
- Files:
-
-
(Preview, Accepted manuscript, pdf, 906.9KB, Terms of use)
-
- Publisher copy:
- 10.1145/3174802
Authors
- Publisher:
- Association for Computing Machinary
- Journal:
- ACM Transactions on Programming Languages and Systems More from this journal
- Volume:
- 40
- Issue:
- 2
- Article number:
- 5
- Publication date:
- 2018-05-28
- Acceptance date:
- 2017-12-03
- DOI:
- EISSN:
-
1558-4593
- ISSN:
-
0164-0925
- Keywords:
- Pubs id:
-
pubs:807765
- UUID:
-
uuid:85fc101f-0c8b-46bf-99b7-58277636198b
- Local pid:
-
pubs:807765
- Source identifiers:
-
807765
- Deposit date:
-
2017-12-04
- ARK identifier:
Terms of use
- Copyright holder:
- David et al
- Copyright date:
- 2018
- Notes:
- Copyright © 2018 Copyright the Authors. This is the accepted manuscript version of the article. The final version is available online from ACM at: https://doi.org/10.1145/3174802
If you are the owner of this record, you can report an update to it here: Report update to this record