2002
DOI: 10.1145/565816.503291
|View full text |Cite
|
Sign up to set email alerts
|

Predicate abstraction for software verification

Abstract: Software verification is an important and difficult problem. Many static checking techniques for software require annotations from the programmer in the form of method specifications and loop invariants. This annotation overhead, particularly of loop invariants, is a significant hurdle in the acceptance of static checking. We reduce the annotation burden by inferring loop invariants automatically.Our method is based on predicate abstraction, an abstract interpretation technique in which the abstract domain is … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
175
0
1

Year Published

2003
2003
2017
2017

Publication Types

Select...
7
1

Relationship

0
8

Authors

Journals

citations
Cited by 127 publications
(176 citation statements)
references
References 20 publications
0
175
0
1
Order By: Relevance
“…To do this, we can decompose k into two disjoint sub-sequences i and j such that k = i ∪ j according to some criteria: if the conjunction of Σ I (i) literals occurring in θ is maximal, we get a candidate invariant by returning the corresponding ∃ I -formula (9). This is quite feasible in many concrete cases.…”
Section: Heuristicsmentioning
confidence: 99%
See 1 more Smart Citation
“…To do this, we can decompose k into two disjoint sub-sequences i and j such that k = i ∪ j according to some criteria: if the conjunction of Σ I (i) literals occurring in θ is maximal, we get a candidate invariant by returning the corresponding ∃ I -formula (9). This is quite feasible in many concrete cases.…”
Section: Heuristicsmentioning
confidence: 99%
“…Even worse, in some cases the analysis may not detect a fix-point, thereby causing non-termination. In order to avoid visiting irrelevant parts of the symbolic state space during backward reachability, techniques for analyzing pre-images and guessing invariants have been devised (see, e.g., [5,15,9,4,13] to name a few). The success of these techniques depend crucially on the heuristics used to guess the invariants.…”
Section: Introductionmentioning
confidence: 99%
“…For example, Clarke et al [CKSY04], and Lahiri and Bryant [LBC03,LB04] perform predicate abstraction by Boolean quantifier elimination using SAT solvers for propositional and first-order logic respectively. The idea of using SMT solvers for predicate abstraction has also been explored repeatedly [DDP99,SS99,FQ02,BCLZ04], but differently from what we do here, in particular, concerning incrementality. The recent symbolic decision procedure approach of [LBC05] is a specialized method for predicate abstraction based on saturating a set of predicates; however, it imposes restrictions on the underlying theories, it requires an expensive transformation of the queries to a logically equivalent conjunctive normal form, and combination methods for non-convex theories would need to be devised for it.…”
Section: Introductionmentioning
confidence: 99%
“…The practicality of these abstraction techniques has been demonstrated on several large examples. Flanagan and Qadeer [FQ02] have applied predicate abstraction to a large (44KLOC) file system program and automatically derived over 90% of the loop invariants. Predicate abstraction has also been used in the SLAM project [BMMR01] at Microsoft to find bugs in device driver routines.…”
Section: Discussionmentioning
confidence: 99%