Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/1770351.1770406guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Structural abstraction of software verification conditions

Published: 03 July 2007 Publication History

Abstract

Precise software analysis and verification require tracking the exact path along which a statement is executed (path-sensitivity), the different contexts from which a function is called (context-sensitivity), and the bit-accurate operations performed. Previously, verification with such precision has been considered too inefficient to scale to large software. In this paper, we present a novel approach to solving such verification conditions, based on an automatic abstraction-checking-refinement framework that exploits natural abstraction boundaries present in software. Experimental results show that our approach easily scales to over 200,000 lines of real C/C++ code.

References

[1]
Babic, D., Hu, A.: Fast Symbolic Execution for Static Checking (submitted for publication).
[2]
Babic, D., Musuvathi, M.: Modular Arithmetic Decision Procedure. Technical Report TR- 2005-114, Microsoft Research Redmond (2005).
[3]
Ball, T., Majumdar, R., Millstein, T., Rajamani, S.: Automatic Predicate Abstraction of C Programs. Programming Language Design and Implementation, pp. 203-213 (2001).
[4]
Blanchet, B., Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., Rival, X.: A static analyzer for large safety-critical software. Programming Language Design and Implementation, pp. 196-207 (2003).
[5]
Bryant, R.: Graph-based algorithms for boolean function manipulation. IEEE Trans. Comput. 35(8), 677-691 (1986).
[6]
Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168-176. Springer, Heidelberg (2004).
[7]
Clarke, E., Kroening, D., Yorav, K.: Behavioral consistency of C and Verilog programs using bounded model checking. In: Design Automation Conference, pp. 368-371 (2003).
[8]
Clarke, E.M., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, pp. 154-169. Springer, Heidelberg (2000).
[9]
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Trans Programming Languages and Systems 13(4), 451-490 (1991).
[10]
Dijkstra, E.W., Scholten, C.S. (eds.): Predicate Calculus and Program Semantics. Springer, Heidelberg (1990).
[11]
Flanagan, C., Joshi, R., Ou, X., Saxe, J.B.: Theorem proving using lazy proof explication. In: Hunt Jr., W.A., Somenzi, F. (eds.) CAV 2003. LNCS, vol. 2725, pp. 355-367. Springer, Heidelberg (2003).
[12]
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. Programming Language Design and Implementation, pp. 234-245 (2002).
[13]
Flanagan, C., Saxe, J.B.: Avoiding exponential explosion: generating compact verification conditions. Principles of Programming Languages, pp. 193-205 (2001).
[14]
Graf, S., Saidi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72-83. Springer, Heidelberg (1997).
[15]
Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Lazy Abstraction. Principles of Programming Languages, pp. 58-70 (2002).
[16]
Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. Principles of Programming Languages, pp. 232-244 (2004).
[17]
Lattner, C., Adve, V.: LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In: CGO '04: Proceedings of the International Symposium on Code Generation and Optimization, p. 75. IEEE Computer Society, Washington, DC, USA (2004).
[18]
Leino, K.R.M., Müller, P.: A verification methodology for model fields. In: Sestoft, P. (ed.) ESOP 2006 and ETAPS 2006. LNCS, vol. 3924, pp. 115-130. Springer, Heidelberg (2006).
[19]
Leino, K.R.M.: Efficient weakest preconditions. Inf. Process. Lett. 93(6), 281-288 (2005).
[20]
Livshits, V.B., Lam, M.S.: Tracking Pointers with Path and Context Sensitivity for Bug Detection in C Programs. In: European Software Engineering Conference/International Symposium on Foundations of Software Engineering, pp. 317-326 (2003).
[21]
Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. Principles of Programming Languages, pp. 49-61 (1995).
[22]
Tseitin, G.S.: On the complexity of derivation in propositional calculus. In: Siekmann, J., Wrightson, G. (eds.) Automation of Reasoning 2: Classical Papers on Computational Logic 1967-1970, pp. 466-483. Springer, Heidelberg (1983).
[23]
Whaley, J., Lam, M.S.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. Programming Language Design and Implementation, pp. 131-144 (2004).
[24]
Wilson, C., Dill, D.L.: Reliable verification using symbolic simulation with scalar values. In: 37th Design Automation Conference, pp. 124-129. ACM/IEEE (2000).
[25]
Xie, Y., Aiken, A.: Scalable error detection using boolean satisfiability. Principles of Programming Languages, pp. 351-363 (2005).

Cited By

View all
  • (2017)Efficient parameter importance analysis via ablation with surrogatesProceedings of the Thirty-First AAAI Conference on Artificial Intelligence10.5555/3298239.3298353(773-779)Online publication date: 4-Feb-2017
  • (2017)The Configurable SAT Solver Challenge (CSSC)Artificial Intelligence10.1016/j.artint.2016.09.006243:C(1-25)Online publication date: 1-Feb-2017
  • (2014)A Program Transformation for Faster Goal-Directed SearchProceedings of the 14th Conference on Formal Methods in Computer-Aided Design10.5555/2682923.2682951(147-154)Online publication date: 21-Oct-2014
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
CAV'07: Proceedings of the 19th international conference on Computer aided verification
July 2007
562 pages
ISBN:9783540733676
  • Editors:
  • Werner Damm,
  • Holger Hermanns

Sponsors

  • German Science Foundation
  • Artist2 Network of Excellence
  • Cadence Design Systems
  • Informatik Saarland
  • IBM: IBM

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 03 July 2007

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 26 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2017)Efficient parameter importance analysis via ablation with surrogatesProceedings of the Thirty-First AAAI Conference on Artificial Intelligence10.5555/3298239.3298353(773-779)Online publication date: 4-Feb-2017
  • (2017)The Configurable SAT Solver Challenge (CSSC)Artificial Intelligence10.1016/j.artint.2016.09.006243:C(1-25)Online publication date: 1-Feb-2017
  • (2014)A Program Transformation for Faster Goal-Directed SearchProceedings of the 14th Conference on Formal Methods in Computer-Aided Design10.5555/2682923.2682951(147-154)Online publication date: 21-Oct-2014
  • (2014)Scaling Up Symbolic Analysis by Removing Z-Equivalent StatesACM Transactions on Software Engineering and Methodology10.1145/265248423:4(1-32)Online publication date: 5-Sep-2014
  • (2014)Understanding the empirical hardness of NP-complete problemsCommunications of the ACM10.1145/2594413.259442457:5(98-107)Online publication date: 1-May-2014
  • (2013)Automatic Abstraction in SMT-Based Unbounded Software Model CheckingProceedings of the 25th International Conference on Computer Aided Verification - Volume 804410.5555/2958031.2958060(846-862)Online publication date: 13-Jul-2013
  • (2013)Compositional and Lightweight Dependent Type Inference for MLProceedings of the 14th International Conference on Verification, Model Checking, and Abstract Interpretation - Volume 773710.1007/978-3-642-35873-9_19(295-314)Online publication date: 20-Jan-2013
  • (2012)Programming by optimizationCommunications of the ACM10.1145/2076450.207646955:2(70-80)Online publication date: 1-Feb-2012
  • (2012)Alternate and learnProceedings of the 24th international conference on Computer Aided Verification10.1007/978-3-642-31424-7_42(599-615)Online publication date: 7-Jul-2012
  • (2011)DC2Proceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2011.6100046(133-142)Online publication date: 6-Nov-2011
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media