Learning a strategy for adapting a program analysis via bayesian optimisation

@article{Oh2015LearningAS,
  title={Learning a strategy for adapting a program analysis via bayesian optimisation},
  author={Hakjoo Oh and Hongseok Yang and Kwangkeun Yi},
  journal={Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications},
  year={2015}
}
  • Hakjoo Oh, Hongseok Yang, K. Yi
  • Published 23 October 2015
  • Computer Science
  • Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications
Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a… 
Adaptive Static Analysis via Learning with Bayesian Optimization
TLDR
This article presents a new learning-based approach for adaptive static analysis that includes a sophisticated parameterized strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not and develops partially flow- and context-sensitive variants of a realistic C static analyzer.
A scalable learning algorithm for data-driven program analysis
TLDR
This work advances the state-of-the-art of data-driven program analysis by addressing the scalability issue of the existing learning algorithm and presenting a new algorithm that is able to efficiently learn a strategy from large codebases.
Learning a Strategy for Choosing Widening Thresholds from a Large Codebase
TLDR
A method is presented that automatically learns a good strategy for choosing widening thresholds from a given codebase and is able to achieve this performance 26 times faster than the previous Bayesian optimization approach.
Machine-Learning-Guided Adaptive Program Analysis
In this talk, we present our experiences to use machine learning techniques for automatically adapting a program analysis to a given verification task. Building a cost-effective static analyzer for
A practical algorithm for learning disjunctive abstraction heuristics in static program analysis
TLDR
An algorithm is presented that is able to learn heuristics when static analysis with the most precise abstraction is not scalable over the training programs, and it can search through the abstraction space from the coarse- to fine-grained abstractions.
A Machine-Learning Algorithm with Disjunctive Model for Data-Driven Program Analysis
TLDR
A new machine-learning algorithm with disjunctive model for data-driven program analysis as well as a learning algorithm to find the model parameters that is able to express nonlinear combinations of program properties.
Data-driven context-sensitivity for points-to analysis
TLDR
This work proposes an automated and data-driven approach that learns to effectively apply context-sensitivity from codebases and presents a greedy algorithm that efficiently learns the parameter of the heuristic rules.
Automatically generating features for learning program analysis heuristics for C-like languages
TLDR
The technique goes through selected program-query pairs in codebases, and it reduces and abstracts the program in each pair to a few lines of code, while ensuring that the analysis behaves similarly for the original and the new programs with respect to the query.
Learning analysis strategies for octagon and context sensitivity from labeled data generated by static analyses
TLDR
A method for automatically learning an effective strategy for clustering variables for the Octagon analysis from a given codebase that uses the impact pre-analysis for Octagon and automatically labels variable pairs in the codebase as positive or negative.
Beyond Deductive Methods in Program Analysis
Building effective program analysis tools is a challenging endeavor: analysis designers must balance multiple competing objectives, including scalability, fraction of false alarms, and the
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 44 REFERENCES
Probabilistic, modular and scalable inference of typestate specifications
TLDR
The results for the large benchmark show that ANEK can quickly infer specifications that are both accurate and qualitatively similar to those written by hand, and at 5% of the time taken to manually discover and hand-code the specifications.
Learning minimal abstractions
TLDR
This paper introduces two machine learning algorithms for efficiently finding a minimal abstraction and shows empirically that minimal abstractions are actually quite coarse: It suffices to provide context/object sensitivity to a very small fraction of the sites to yield equally precise results as providing context/ object sensitivity uniformly to all sites.
Sequential Model-Based Optimization for General Algorithm Configuration
TLDR
This paper extends the explicit regression models paradigm for the first time to general algorithm configuration problems, allowing many categorical parameters and optimization for sets of instances, and yields state-of-the-art performance.
On abstraction refinement for program analyses in Datalog
TLDR
This work presents a new approach for finding such abstractions for program analyses written in Datalog based on counterexample-guided abstraction refinement, which uses a boolean satisfiability formulation that is general, complete, and optimal.
Selective context-sensitivity guided by impact pre-analysis
TLDR
This method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries, and demonstrates generality by following the same principle and developing a selective relational analysis.
Dynamic inference of likely data preconditions over predicates by tree learning
TLDR
This work presents a technique to infer likely data preconditions for procedures written in an imperative programming language that successfully learns a precondition that captures a safe and permissive calling environment.
Introspective analysis: context-sensitivity, across the board
TLDR
This work proposes introspective analysis: a technique for uniformly scaling context-sensitive analysis by eliminating its performance-detrimental behavior, at a small precision expense, and shows that a simple but principled approach can be remarkably effective, achieving scalability for benchmarks previously completely out-of-reach for deep context- sensitive analyses.
Abstractions from tests
TLDR
The main insight is to directly and efficiently compute from a concrete trace, a necessary condition on the parameter configurations to prove a given query, and thereby prune the space of parameter configurations that the static analysis must consider.
Typestate-based semantic code search over partial programs
TLDR
A novel code search approach for answering queries focused on API-usage with code showing how the API should be used, and the results indicate that the combination of a relatively precise analysis and consolidation allowed PRIME to answer challenging queries effectively.
Termination proofs from tests
TLDR
An algorithm TpT for proving termination of a program based on information derived from testing it, which is able to prove termination on 15% more benchmarks than any previously known technique, and its evaluation on Windows device drivers demonstrates its ability to analyze and scale to real world applications.
...
1
2
3
4
5
...