Abstract
Control-flow refinement refers to program transformations whose purpose is to make implicit control-flow explicit, and is used in the context of program analysis to increase precision. Several techniques have been suggested for different programming models, typically tailored to improving precision for a particular analysis. In this paper we explore the use of partial evaluation of Horn clauses as a general-purpose technique for control-flow refinement for integer transitions systems. These are control-flow graphs where edges are annotated with linear constraints describing transitions between corresponding nodes, and they are used in many program analysis tools. Using partial evaluation for control-flow refinement has the clear advantage over other approaches in that soundness follows from the general properties of partial evaluation; in particular, properties such as termination and complexity are preserved. We use a partial evaluation algorithm incorporating property-based abstraction, and show how the right choice of properties allows us to prove termination and to infer complexity of challenging programs that cannot be handled by state-of-the-art tools. We report on the integration and evaluation of the technique in a termination analyzer, and its use as a preprocessing step for several cost analyzers.
| Original language | English |
|---|---|
| Journal | Theory and Practice of Logic Programming |
| Volume | 19 |
| Issue number | 5-6 |
| Pages (from-to) | 990–1005 |
| Number of pages | 16 |
| ISSN | 1471-0684 |
| DOIs | |
| Publication status | Published - 1 Sept 2019 |
Keywords
- cost analysis
- partial evaluation
- termination analysis
Citation Styles
- APA
- Author
- BIBTEX
- Harvard
- Standard
- RIS
- Vancouver