Regression verification for multi-threaded programs (with extensions to locks and dynamic thread creation)

Sagar Chaki, Arie Gurfinkel, Ofer Strichman

Research output: Contribution to journalArticlepeer-review

Abstract

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 of multi-threaded programs. Specifically, we develop a proof-rule whose premise requires only to verify equivalence between sequential functions, whereas their consequents are equivalence of concurrent programs. This ability to avoid composing threads altogether when discharging premises, in a fully automatic way and for general programs, uniquely distinguishes our proof rule from others used for classical verification of concurrent programs. We also consider the effect of dynamic thread creation and synchronization primitives.

Original languageEnglish
Pages (from-to)287-301
Number of pages15
JournalFormal Methods in System Design
Volume47
Issue number3
DOIs
StatePublished - 1 Dec 2015

Keywords

  • Multi-threaded programs
  • Proving equivalence of programs
  • Regression verification

All Science Journal Classification (ASJC) codes

  • Software
  • Theoretical Computer Science
  • Hardware and Architecture

Cite this