On abstraction refinement for program analyses in Datalog

@article{Zhang2014OnAR,
  title={On abstraction refinement for program analyses in Datalog},
  author={Xin Zhang and Ravi Mangal and Radu Grigore and M. Naik and Hongseok Yang},
  journal={Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  year={2014}
}
  • Xin Zhang, Ravi Mangal, Hongseok Yang
  • Published 9 June 2014
  • Computer Science
  • Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
A central task for a program analysis concerns how to efficiently find a program abstraction that keeps only information relevant for proving properties of interest. We present a new approach for finding such abstractions for program analyses written in Datalog. Our approach is based on counterexample-guided abstraction refinement: when a Datalog analysis run fails using an abstraction, it seeks to generalize the cause of the failure to other abstractions, and pick a new abstraction that avoids… 

Figures and Tables from this paper

Abstraction refinement guided by a learnt probabilistic model
TLDR
This paper presents a new approach for automatically finding a good program abstraction, based on counterexample-guided abstraction refinement, which is a variant of the Erdos--Renyi random graph model, and is tunable by what they call hyperparameters.
FormuLog: Datalog for static analysis involving logical formulae
TLDR
This paper focuses on the design of FormuLog and one of the analyses it has implemented in it, but also touches on a prototype implementation of the language and identifies performance optimizations that will be necessary to scale Formu log to real-world static analysis problems.
General Declarative Must-Alias Analysis
TLDR
A declarative model of a rich family of must-alias analyses of Java bytecode, with emphasis on modeling and exposing the key points where the algorithm can adjust its inference power vs. scalability tradeoff.
Flexible Goal-Directed Abstraction
TLDR
This paper focuses on the problem of identifying local variables that track only the relevant locals using counterexample-guided abstraction refinement (CEGAR)based analyses, which are probably the most popular form of goal-directed analysis.
Selective control-flow abstraction via jumping
TLDR
This work presents jumping, a form of selective control-flow abstraction useful for improving the scalability of goal-directed static analyses, and creates an instantiation of the framework for per- forming precise inter-event analysis of Android applications.
On Scheduling Constraint Abstraction for Multi-Threaded Program Verification
TLDR
Experimental results on SV-COMP 2017 benchmarks and two real-world server systems indicate that the proposed scheduling constraint based abstraction refinement method is promising and significantly outperforms the state-of-the-art tools.
Scheduling Constraint Based Abstraction Refinement for Multi-Threaded Program Verification
TLDR
A novel and efficient abstraction refinement method for multi-threaded program verification, which avoids the huge and complex encoding of BMC and significantly outperforms the existing state-of-the-art tools.
Datalog-Based Scalable Semantic Diffing of Concurrent Programs
TLDR
A fast and approximate static analysis for computing synchronization differences of two programs and is sufficiently accurate due to careful design of the Datalog inference rules and iterative increase of the required data-flow edges for representing a difference.
Finding Fix Locations for CFL-Reachability Analyses via Minimum Cuts
TLDR
This work focuses on analyses expressible as context-free-language reachability, where a set of fix locations is naturally expressed as a min-cut of the CFL graph, and shows, surprisingly, that computing such a CFL min- cut is NP-hard.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 30 REFERENCES
Finding optimum abstractions in parametric dataflow analysis
TLDR
This work proposes a technique to efficiently search a large family of abstractions in order to prove a query using a parametric dataflow analysis and applies a novel meta-analysis on abstract counterexample traces to efficiently find abstractions that are incapable of proving the query.
Scaling abstraction refinement via pruning
TLDR
A new technique called pruning is introduced that uses client feedback in a different way and is able to scale up to much more expensive abstractions than before.
Abstractions from proofs
TLDR
The model checker Blast is extended with predicate discovery by Craig interpolation, and applied successfully to C programs with more than 130,000 lines of code, which was not possible with approaches that build less parsimonious abstractions.
Counterexample-guided abstraction refinement for symbolic model checking
TLDR
An automatic iterative abstraction-refinement methodology that extends symbolic model checking to large hardware designs and devise new symbolic techniques that analyze such counterexamples and refine the abstract model correspondingly.
Strictly declarative specification of sophisticated points-to analyses
TLDR
The DOOP framework for points-to analysis of Java programs is presented, carrying the declarative approach further than past work by describing the full end-to-end analysis in Datalog and optimizing aggressively using a novel technique specifically targeting highly recursive Datalogy programs.
Using Datalog with Binary Decision Diagrams for Program Analysis
TLDR
Bddbddb is described, a BDD-Based Deductive DataBase, which implements the declarative language Datalog with stratified negation, totally-ordered finite domains and comparison operators, and it is shown that a context-insensitive points-to analysis implemented with bddb ddb is about twice as fast as a carefully hand-tuned version.
SAT Based Abstraction-Refinement Using ILP and Machine Learning Techniques
TLDR
New techniques for model checking in the counterexample guided abstraction/refinement framework are described, which use a combination of Integer Linear Programming (ILP) and machine learning techniques for refining the abstraction based on the counteretxample.
Modular verification of software components in C
TLDR
This work presents a new methodology for automatic verification of C programs against finite state machine specifications that uses weak simulation as the notion of conformance between the program and its specification.
On Solving Universally Quantified Horn Clauses
TLDR
This work shows how to simulate existing abstract domains in this way, without having to directly implement program analyses or make certain heuristic choices, such as the terms and predicates that form the parameters of the abstract domain.
Using Datalog for Fast and Easy Program Analysis
TLDR
Doop is the first implementation to express full end-to-end context-sensitive analyses in Datalog, and can be easily configured to analyses with a wide range of characteristics, largely due to its declarativeness.
...
1
2
3
...