Proceedings of the 36th International Conference on Software Engineering 2014
DOI: 10.1145/2568225.2568275
|View full text |Cite
|
Sign up to set email alerts
|

Using dynamic analysis to generate disjunctive invariants

Abstract: Program invariants are important for defect detection, program verification, and program repair. However, existing techniques have limited support for important classes of invariants such as disjunctions, which express the semantics of conditional statements. We propose a method for generating disjunctive invariants over numerical domains, which are inexpressible using classical convex polyhedra. Using dynamic analysis and reformulating the problem in nonstandard "max-plus" and "min-plus" algebras, our method … Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
9
0

Year Published

2014
2014
2021
2021

Publication Types

Select...
4
4
1

Relationship

1
8

Authors

Journals

citations
Cited by 28 publications
(9 citation statements)
references
References 43 publications
0
9
0
Order By: Relevance
“…We also do not consider general disjunctive invariants or numerical relations (e.g., only check equivalences among memory addresses and do not consider other relationships such as the address of x is greater than that of y). Existing numerical invariant studies [38,39] have shown that dynamic analysis often produces many spurious invariants involving disjunctions and general inequalities.…”
Section: Resultsmentioning
confidence: 99%
“…We also do not consider general disjunctive invariants or numerical relations (e.g., only check equivalences among memory addresses and do not consider other relationships such as the address of x is greater than that of y). Existing numerical invariant studies [38,39] have shown that dynamic analysis often produces many spurious invariants involving disjunctions and general inequalities.…”
Section: Resultsmentioning
confidence: 99%
“…Notice that our problem of finding minimal refinements is a relaxation of this NPhard problem, as we are not interested in minimizing the number of subsets; rather, our notion of minimality corresponds to that of non-redundancy in [4]. Redundancy and minimization in logical formulae have been studied extensively, in work such as [18,19,26,30]. The notion of redundancy we present here is substantially different.…”
Section: Related Workmentioning
confidence: 99%
“…Compared to earlier sampling-based approaches [49,60,65,66] which learn invariants using existing abstract interpretation transformers, our primary focus is a new specification inference technique inspired by recent advances in data-driven program analysis. These data-driven approaches can be classified into two broad categories: (1) Tools such as Daikon [12] and [18,21,42,53,70] infer invariants by summarizing properties from test data, but the structure of the constructed invariants is limited to a bounded number of disjunctions, making them unlikely to discover patterns between relations like in-order or forward-order, because it is not clear how syntax-derived templates could capture the semantics of ordering relations implicit in the construction of data structures; (2) Other tools learn unrestricted invariants but either require user-annotated post-conditions [15,16,36,51,54,69] (in order to rule out program states not seen in normal executions) or noncommutativity conditions [17] to drive the collection of "bad samples". The quality of synthesized invariants in these systems is limited by the precision and availability of such conditions.…”
Section: Related Work and Conclusionmentioning
confidence: 99%
“…Notably, existing data-driven learning techniques are ineffective in discovering such specifications. Template-based mining techniques [12,42,53] require us to provide the Boolean skeleton of these specifications a priori, which we often do not know. Classification-based learning techniques [15,16,51,54,69] search for specifications that rule out so-called bad program states that represent violations of programmer-supplied assertions, usually annotated as postconditions in source programs.…”
Section: Introductionmentioning
confidence: 99%