Design of Deryaft : a novel framework for generating representation invariants of structurally complex data
This dissertation presents a novel approach for generating likely structural invariants of complex data structures. Generating likely invariants using dynamic analyses is becoming an increasingly effective technique in software checking methodologies. Given a small set of concrete structures, our approach analyzes their key characteristics to formulate local and global properties that the structures exhibit. For effective formulation of structural invariants, this approach focuses on graph properties, including reachability, and views the program heap as an edge-labeled graph. The Deryaft Tool implements this approach for Java. Deryaft outputs a Java predicate that represents the invariants; the predicate takes an input structure and returns true if and only if it satisfies the invariants. The invariants generated by Deryaft directly enable automation of various existing frameworks, such as the Korat test generation framework and the Juzi data structure repair framework, which otherwise require the user to provide the invariants. Experimental results with the Deryaft prototype show that it feasibly generates invariants for a range of subject structures, including libraries as well as a stand-alone application. The focus of this dissertation is design of Deryaft but we also provide details of aDeryaft which specializes our algorithm for Alloy constraint generation and facilitates frameworks such as TestEra for test generation.