Selecting Refining and Evaluating Properties for Program Analysis
Author(s)Dodoo, Nii; Lin, Lee; Ernst, Michael D.
MetadataShow full item record
This research proposes and evaluates techniques for selectingpredicates for conditional program propertiesÂthatis, implications such as p ) q whose consequent must betrue whenever the predicate is true. Conditional propertiesare prevalent in recursive data structures, which behave differentlyin their base and recursive cases, in programs thatcontain branches, in programs that fail only on some inputs,and in many other situations. The experimental context ofthe research is dynamic detection of likely program invariants,but the ideas are applicable to other domains.Trying every possible predicate for conditional propertiesis computationally infeasible and yields too many undesirableproperties. This paper compares four policies forselecting predicates: procedure return analysis, code conditionals,clustering, and random selection. It also showshow to improve predicates via iterated analysis. An experimentalevaluation demonstrates that the techniques improveperformance on two tasks: statically proving the absence ofrun-time errors with a theorem-prover, and separating faultyfrom correct executions of erroneous programs.
Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory