Verification of parameterized concurrent programs by modular reasoning about data and control

Azadeh Farzan, Zachary Kincaid

Research output: Contribution to journalArticlepeer-review

11 Scopus citations


In this paper, we consider the problem of verifying thread-state properties of multithreaded programs in which the number of active threads cannot be statically bounded. Our approach is based on decomposing the task into two modules, where one reasons about data and the other reasons about control. The data module computes thread-state invariants (e.g., linear constraints over global variables and local variables of one thread) using the thread interference information computed by the control module. The control module computes a representation of thread interference, as an incrementally constructed data flow graph, using the data invariants provided by the data module. These invariants are used to rule out patterns of thread interference that can not occur in a real program execution. The two modules are incorporated into a feedback loop, so that the abstractions of data and interference are iteratively coarsened as the algorithm progresses (that is, they become weaker) until a fixed point is reached. Our approach is sound and terminating, and applicable to programs with infinite state (e.g., unbounded integers) and unboundedly many threads. The verification method presented in this paper has been implemented into a tool, called DUET. We demonstrate the effectiveness of our technique by verifying properties of a selection of Linux device drivers using DUET, and also compare DUET with previous work on verification of parameterized Boolean program using the Boolean abstractions of these drivers.

Original languageEnglish (US)
Pages (from-to)297-308
Number of pages12
JournalACM SIGPLAN Notices
Issue number1
StatePublished - Jan 2012
Externally publishedYes

All Science Journal Classification (ASJC) codes

  • General Computer Science


  • Abstract interpretation
  • Compositional reasoning
  • Concurrency
  • Data flow graphs
  • Parameterized programs
  • Thread invariants


Dive into the research topics of 'Verification of parameterized concurrent programs by modular reasoning about data and control'. Together they form a unique fingerprint.

Cite this