Regression Verification for Multi-threaded Programs
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.
KeywordsShared Variable Global Variable Recursive Call Sequential Program Concurrent Program
Unable to display preview. Download preview PDF.
- 1.Full version at ie.technion.ac.il/~ofers/publications/vmcai12_full.pdf
- 3.Godlin, B.: Regression verification: Theoretical and implementation aspects. Master’s thesis, Technion, Israel Institute of Technology (2008)Google Scholar
- 5.Godlin, B., Strichman, O.: Regression verification. In: 46th Design Automation Conference, DAC (2009)Google Scholar
- 9.Kawaguchi, M., Lahiri, S.K., Rebelo, H.: Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research (2010)Google Scholar