TY - GEN
T1 - Automatic inference of necessary preconditions
AU - Cousot, Patrick
AU - Cousot, Radhia
AU - Fähndrich, Manuel
AU - Logozzo, Francesco
PY - 2013
Y1 - 2013
N2 - We consider the problem of automatic precondition inference. We argue that the common notion of sufficient precondition inference (i.e., under which precondition is the program correct?) imposes too large a burden on callers, and hence it is unfit for automatic program analysis. Therefore, we define the problem of necessary precondition inference (i.e., under which precondition, if violated, will the program always be incorrect?). We designed and implemented several new abstract interpretation-based analyses to infer atomic, disjunctive, universally and existentially quantified necessary preconditions. We experimentally validated the analyses on large scale industrial code. For unannotated code, the inference algorithms find necessary preconditions for almost 64% of methods which contained warnings. In 27% of these cases the inferred preconditions were also sufficient, meaning all warnings within the method body disappeared. For annotated code, the inference algorithms find necessary preconditions for over 68% of methods with warnings. In almost 50% of these cases the preconditions were also sufficient. Overall, the precision improvement obtained by precondition inference (counted as the additional number of methods with no warnings) ranged between 9% and 21%.
AB - We consider the problem of automatic precondition inference. We argue that the common notion of sufficient precondition inference (i.e., under which precondition is the program correct?) imposes too large a burden on callers, and hence it is unfit for automatic program analysis. Therefore, we define the problem of necessary precondition inference (i.e., under which precondition, if violated, will the program always be incorrect?). We designed and implemented several new abstract interpretation-based analyses to infer atomic, disjunctive, universally and existentially quantified necessary preconditions. We experimentally validated the analyses on large scale industrial code. For unannotated code, the inference algorithms find necessary preconditions for almost 64% of methods which contained warnings. In 27% of these cases the inferred preconditions were also sufficient, meaning all warnings within the method body disappeared. For annotated code, the inference algorithms find necessary preconditions for over 68% of methods with warnings. In almost 50% of these cases the preconditions were also sufficient. Overall, the precision improvement obtained by precondition inference (counted as the additional number of methods with no warnings) ranged between 9% and 21%.
UR - http://www.scopus.com/inward/record.url?scp=84880104171&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84880104171&partnerID=8YFLogxK
U2 - 10.1007/978-3-642-35873-9_10
DO - 10.1007/978-3-642-35873-9_10
M3 - Conference contribution
AN - SCOPUS:84880104171
SN - 9783642358722
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 128
EP - 148
BT - Verification, Model Checking, and Abstract Interpretation - 14th International Conference, VMCAI 2013, Proceedings
PB - Springer Verlag
T2 - 14th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI 2013
Y2 - 20 January 2013 through 22 January 2013
ER -