Skip to main content

Assertion Checking Using Dynamic Inference

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8244))

Abstract

We present a technique for checking assertions in code that combines model checking and dynamic analysis. Our technique first constructs an abstraction by summarizing code fragments in the form of pre and post conditions. Spurious counterexamples are then analyzed by Daikon, a dynamic analysis engine, to infer invariants over the fragments. These invariants, representing a set of traces, are used to partition the summary with one partition consisting of the observed spurious behaviour. Partitioning summaries in this manner increases precision of the abstraction and accelerates the refinement loop. Our technique is sound and compositional, allowing us to scale model checking engines to larger code size, as seen from the experiments.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Beyer, D.: Competition on software verification. In: Flanagan, C., König, B. (eds.) TACAS 2012. LNCS, vol. 7214, pp. 504–524. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  2. D’Silva, V., Kroening, D., Weissenbacher, G.: A survey of automated techniques for formal software verification. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 27, 1165–1178 (2008)

    Article  Google Scholar 

  3. Yeolekar, A., Unadkat, D., Agarwal, V., Kumar, S., Venkatesh, R.: Scaling model checking for test generation using dynamic inference. In: International Conference on Software Testing, Verification and Validation (ICST 2013). IEEE (2013)

    Google Scholar 

  4. Ernst, M.D., Perkins, J.H., Guo, P.J., McCamant, S., Pacheco, C., Tschantz, M.S., Xiao, C.: The daikon system for dynamic detection of likely invariants. Sci. Comput. Program. 69, 35–45 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  5. Graf, S., Saïdi, H.: Construction of abstract state graphs with pvs. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  6. 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)

    Chapter  Google Scholar 

  7. Taghdiri, M.: Inferring specifications to detect errors in code. In: ASE, pp. 144–153 (2004)

    Google Scholar 

  8. Nimmer, J.W., Ernst, M.D.: Invariant inference for static checking. In: SIGSOFT FSE, pp. 11–20 (2002)

    Google Scholar 

  9. Polikarpova, N., Ciupa, I., Meyer, B.: A comparative study of programmer-written and automatically inferred contracts. In: ISSTA, pp. 93–104 (2009)

    Google Scholar 

  10. Ernst, M., et al.: The daikon invariant detector, http://pag.lcs.mit.edu/daikon

  11. Clarke, E., Kroning, 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)

    Chapter  Google Scholar 

  12. Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2012, pp. 181–192. ACM (2012)

    Google Scholar 

  13. Cimatti, A., Griggio, A., Micheli, A., Narasamdya, I., Roveri, M.: Kratos benchmarks, https://es.fbk.eu/tools/kratos/index.php?n=Main.Benchmarks

  14. Clarke, E., Kroening, D., Sharygina, N., Yorav, K.: Predicate abstraction of ANSI–C programs using SAT. Formal Methods in System Design (FMSD) 25, 105–127 (2004)

    Article  MATH  Google Scholar 

  15. Yuan, J., Shen, J., Abraham, J.A., Aziz, A.: On combining formal and informal verification. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 376–387. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  16. Shacham, O., Sagiv, M., Schuster, A.: Scaling model checking of dataraces using dynamic information. J. Parallel Distrib. Comput. 67, 536–550 (2007)

    Article  MATH  Google Scholar 

  17. Kroening, D., Groce, A., Clarke, E.: Counterexample guided abstraction refinement via program execution. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 224–238. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  18. Gunter, E.L., Peled, D.: Model checking, testing and verification working together. Formal Aspects of Computing 17, 201–221 (2005)

    Article  MATH  Google Scholar 

  19. Yorsh, G., Ball, T., Sagiv, M.: Testing, abstraction, theorem proving: better together! In: Proceedings of the 2006 International Symposium on Software Testing and Analysis, pp. 145–156. ACM (2006)

    Google Scholar 

  20. Păsăreanu, C.S., Pelánek, R., Visser, W.: Concrete model checking with abstract matching and refinement. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 52–66. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  21. Win, T., Ernst, M.: Verifying distributed algorithms via dynamic analysis and theorem proving (2002)

    Google Scholar 

  22. Gulavani, B.S., Henzinger, T.A., Kannan, Y., Nori, A.V., Rajamani, S.K.: Synergy: a new algorithm for property checking. In: Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, SIGSOFT 2006/FSE-14, pp. 117–127. ACM, New York (2006)

    Chapter  Google Scholar 

  23. Kroening, D., Sharygina, N., Tonetta, S., Tsitovich, A., Wintersteiger, C.M.: Loop summarization using abstract transformers. In: Cha, S(S.), Choi, J.-Y., Kim, M., Lee, I., Viswanathan, M. (eds.) ATVA 2008. LNCS, vol. 5311, pp. 111–125. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer International Publishing Switzerland

About this paper

Cite this paper

Yeolekar, A., Unadkat, D. (2013). Assertion Checking Using Dynamic Inference. In: Bertacco, V., Legay, A. (eds) Hardware and Software: Verification and Testing. HVC 2013. Lecture Notes in Computer Science, vol 8244. Springer, Cham. https://doi.org/10.1007/978-3-319-03077-7_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-03077-7_14

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-03076-0

  • Online ISBN: 978-3-319-03077-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics