SEPLJun 14, 2017

Failure-Directed Program Trimming (Extended Version)

arXiv:1706.04468v16 citations
AI Analysis

This addresses the bottleneck of path explosion in program analysis for developers and verification tools, though it is incremental as it builds on existing safety checking methods.

The paper tackles the problem of improving scalability and precision in safety checking tools by introducing program trimming, a technique that reduces execution paths while preserving bug detection, and shows it significantly enhances the effectiveness of abstract interpretation and dynamic symbolic execution.

This paper describes a new program simplification technique called program trimming that aims to improve the scalability and precision of safety checking tools. Given a program ${\mathcal P}$, program trimming generates a new program ${\mathcal P}'$ such that ${\mathcal P}$ and ${\mathcal P}'$ are equi-safe (i.e., ${\mathcal P}'$ has a bug if and only if ${\mathcal P}$ has a bug), but ${\mathcal P}'$ has fewer execution paths than ${\mathcal P}$. Since many program analyzers are sensitive to the number of execution paths, program trimming has the potential to improve the effectiveness of safety checking tools. In addition to introducing the concept of program trimming, this paper also presents a lightweight static analysis that can be used as a pre-processing step to remove program paths while retaining equi-safety. We have implemented the proposed technique in a tool called Trimmer and evaluate it in the context of two program analysis techniques, namely abstract interpretation and dynamic symbolic execution. Our experiments show that program trimming significantly improves the effectiveness of both techniques.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes