Danger Invariants
Cristina David, Daniel Kroening, Matt Lewis

TL;DR
This paper introduces danger invariants, a novel concept that combines the scalability of static analysis with the precision of bounded model checking to efficiently find deep bugs in programs.
Contribution
It proposes danger invariants as the dual to safety invariants, enabling bug detection without explicit loop unwinding, using second-order SAT solving.
Findings
Successfully applied danger invariants to complex programs from literature.
Achieved bug detection with high precision and scalability.
Demonstrated advantages over traditional static analyzers and BMC.
Abstract
Static analysers search for overapproximating proofs of safety commonly known as safety invariants. Fundamentally, such analysers summarise traces into sets of states, thus trading the ability to distinguish traces for computational tractability. Conversely, static bug finders (e.g. Bounded Model Checking) give evidence for the failure of an assertion in the form of a counterexample, which can be inspected by the user. However, static bug finders fail to scale when analysing programs with bugs that require many iterations of a loop as the computational effort grows exponentially with the depth of the bug. We propose a novel approach for finding bugs, which delivers the performance of abstract interpretation together with the concrete precision of BMC. To do this, we introduce the concept of danger invariants -- the dual to safety invariants. Danger invariants summarise sets of traces…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Formal Methods in Verification · Logic, programming, and type systems
