Concurrent Program Verification with Invariant-Guided Underapproximation

  • Sumanth Prabhu
  • Peter Schrammel
  • Mandayam Srivas
  • Michael Tautschnig
  • Anand Yeolekar
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10482)


Automatic verification of concurrent programs written in low-level languages like ANSI-C is an important task as multi-core architectures are gaining widespread adoption. Formal verification, although very valuable for this domain, rapidly runs into the state-explosion problem due to multiple thread interleavings. Recently, Bounded Model Checking (BMC) has been used for this purpose, which does not scale in practice. In this work, we develop a method to further constrain the search space for BMC techniques using underapproximations of data flow of shared memory and lazy demand-driven refinement of the approximation. A novel contribution of our method is that our underapproximation is guided by likely data-flow invariants mined from dynamic analysis and our refinement is based on proof-based learning. We have implemented our method in a prototype tool. Initial experiments on benchmark examples show potential performance benefit.


  1. 1.
    Alglave, J., Kroening, D., Tautschnig, M.: Partial orders for efficient bounded model checking of concurrent software. In: CAV (2013)Google Scholar
  2. 2.
    Qadeer, S., Wu, D.: KISS: keep it simple and sequential. ACM SIGPLAN (2004)Google Scholar
  3. 3.
    Tomasco, E., Inverso, O., Fischer, B., Torre, S., Parlato, G.: Verifying concurrent programs by memory unwinding. In: Baier, C., Tinelli, C. (eds.) TACAS 2015. LNCS, vol. 9035, pp. 551–565. Springer, Heidelberg (2015). doi: 10.1007/978-3-662-46681-0_52 Google Scholar
  4. 4.
    Yeolekar, A., Madhukar, K., Bhutada, D., Venkatesh, R.: Sequentialization using timestamps. In: Gopal, T.V., Jäger, G., Steila, S. (eds.) TAMC 2017. LNCS, vol. 10185, pp. 684–696. Springer, Cham (2017). doi: 10.1007/978-3-319-55911-7_49 CrossRefGoogle Scholar
  5. 5.
    Luk, C.K., Cohn, R., Muth, R., Patil, H., Klauser, A., Lowney, G., Wallace, S., Reddi, V.J., Hazelwood, K.: Pin: Building customized program analysis tools with dynamic instrumentation. ACM SIGPLAN (2005)Google Scholar
  6. 6.
    Shi, Y., Park, S., Yin, Z., Lu, S., Zhou, Y., Chen, W., Zheng, W.: Do I use the wrong definition?: DeFuse: definition-use invariants for detecting concurrency and sequential bugs. ACM SIGPLAN (2010)Google Scholar
  7. 7.
  8. 8.
  9. 9.
    Grumberg, O., Lerda, F., Strichman, O., Theobald, M.: Proof-guided underapproximation-widening for multi-process systems. ACM SIGPLAN (2005)Google Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  • Sumanth Prabhu
    • 1
  • Peter Schrammel
    • 2
  • Mandayam Srivas
    • 1
  • Michael Tautschnig
    • 3
  • Anand Yeolekar
    • 4
  1. 1.Chennai Mathematical InstituteChennaiIndia
  2. 2.University of SussexBrightonUK
  3. 3.Queen Mary University of LondonLondonUK
  4. 4.Tata Research Development and Design CentrePuneIndia

Personalised recommendations