2018
DOI: 10.1145/3174802
|View full text |Cite
|
Sign up to set email alerts
|

Program Synthesis for Program Analysis

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 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. … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
6
0

Year Published

2019
2019
2022
2022

Publication Types

Select...
3
2
1

Relationship

1
5

Authors

Journals

citations
Cited by 9 publications
(6 citation statements)
references
References 80 publications
0
6
0
Order By: Relevance
“…The interpreter loops through all the instructions in the proдram (lines [4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20]. If the skip instruction flag is set, the interpreter skips the next instruction and resets the flag (lines 5-8).…”
Section: Vocabularymentioning
confidence: 99%
See 2 more Smart Citations
“…The interpreter loops through all the instructions in the proдram (lines [4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20]. If the skip instruction flag is set, the interpreter skips the next instruction and resets the flag (lines 5-8).…”
Section: Vocabularymentioning
confidence: 99%
“…Lines 10-15 attempt to prove the Original function and program have the same effect on a fresh symbolic string of up to length max_ex_size on all possible paths. To be able to reason about all these paths at once, we merge them using StartMerge() and End-Merge() (lines [12][13][14][15][16].…”
Section: Counterexample-guided Synthesismentioning
confidence: 99%
See 1 more Smart Citation
“…Further developments in synthesis typically fall into one of two categories. The first comprises innovative search algorithms to search the space more efficiently; for instance, genetic algorithms [16], reinforcement learning [28], or partitioning the search space in creative ways [6]. The second category comprises extensions to the communication paradigm permitted between the synthesis and the verification phase.…”
Section: Introductionmentioning
confidence: 99%
“…Synthesizers, on the other hand, can accept various types of high-level specifications, such as logic formula, domain-specific language, grammar, natural language, and even partial program source code. Instead of applying direct translation into low-level executable code, a suitable search technique is applied over some space [2] in order to achieve the solution language (final code) or proof (logical…”
Section: Introductionmentioning
confidence: 99%