Regression Verification for Multi-threaded Programs

  • Sagar Chaki
  • Arie Gurfinkel
  • Ofer Strichman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7148)


Regression verification is the problem of deciding whether two similar programs are equivalent under an arbitrary yet equal context, given some definition of equivalence. So far this problem has only been studied for the case of single-threaded deterministic programs. We present a method for regression verification to establish partial equivalence (i.e., input/output equivalence of terminating executions) of multi-threaded programs. Specifically, we develop two proof-rules that decompose the regression verification between concurrent programs to that of regression verification between sequential functions, a more tractable problem. This ability to avoid composing threads altogether when discharging premises, in a fully automatic way and for general programs, uniquely distinguishes our proof rules from others used for classical verification of concurrent programs.


Shared Variable Global Variable Recursive Call Sequential Program Concurrent Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
  2. 2.
    Cobleigh, J.M., Giannakopoulou, D., Păsăreanu, C.S.: Learning Assumptions for Compositional Verification. In: Garavel, H., Hatcliff, J. (eds.) TACAS 2003. LNCS, vol. 2619, pp. 331–346. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  3. 3.
    Godlin, B.: Regression verification: Theoretical and implementation aspects. Master’s thesis, Technion, Israel Institute of Technology (2008)Google Scholar
  4. 4.
    Godlin, B., Strichman, O.: Inference rules for proving the equivalence of recursive procedures. Acta Informatica 45(6), 403–439 (2008)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Godlin, B., Strichman, O.: Regression verification. In: 46th Design Automation Conference, DAC (2009)Google Scholar
  6. 6.
    Gupta, A., Popeea, C., Rybalchenko, A.: Threader: A Constraint-Based Verifier for Multi-threaded Programs. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 412–417. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  7. 7.
    Jones, C.B.: Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst. 5(4), 596–619 (1983)CrossRefzbMATHGoogle Scholar
  8. 8.
    Kaser, O., Ramakrishnan, C.R., Pawagi, S.: On the conversion of indirect to direct recursion. LOPLAS 2(1-4), 151–164 (1993)CrossRefGoogle Scholar
  9. 9.
    Kawaguchi, M., Lahiri, S.K., Rebelo, H.: Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research (2010)Google Scholar
  10. 10.
    Lee, E.A.: The problem with threads. IEEE Computer 39(5), 33–42 (2006)CrossRefGoogle Scholar
  11. 11.
    Owicki, S.S., Gries, D.: An Axiomatic Proof Technique for Parallel Programs I. Acta Inf. 6, 319–340 (1976)MathSciNetCrossRefzbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Sagar Chaki
    • 1
  • Arie Gurfinkel
    • 1
  • Ofer Strichman
    • 1
    • 2
  1. 1.SEI/CMUPittsburghUSA
  2. 2.TechnionHaifaIsrael

Personalised recommendations