Refining Trace Abstraction using Abstract Interpretation
Marius Greitschus, Daniel Dietsch, Andreas Podelski

TL;DR
This paper introduces a novel approach combining abstract interpretation with SMT solving to improve trace abstraction refinement in software model checking, especially for programs with loops, enhancing convergence and efficiency.
Contribution
It presents a new refinement procedure that leverages abstract interpretation to derive loop invariants, reducing reliance on SMT solvers and improving divergence issues in CEGAR loops.
Findings
Effective in deriving loop invariants from traces.
Reduces SMT solver calls by using abstract interpretation.
Shows practical potential through experimental evaluation.
Abstract
The CEGAR loop in software model checking notoriously diverges when the abstraction refinement procedure does not derive a loop invariant. An abstraction refinement procedure based on an SMT solver is applied to a trace, i.e., a restricted form of a program (without loops). In this paper, we present a new abstraction refinement procedure that aims at circumventing this restriction whenever possible. We apply abstract interpretation to a program that we derive from the given trace. If the program contains a loop, we are guaranteed to obtain a loop invariant. We call an SMT solver only in the case where the abstract interpretation returns an indefinite answer. That is, the idea is to use abstract interpretation and an SMT solver in tandem. An experimental evaluation in the setting of trace abstraction indicates the practical potential of this idea.
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
TopicsFormal Methods in Verification · Software Testing and Debugging Techniques · Software Reliability and Analysis Research
