“…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.…”