21 July 2011 - 14h00
Pattern-based Verification for Multithreaded Programs
by Pierre Ganty from IMDEA
Abstract: Pattern-based verification checks the correctness of the program executions that follow a given pattern, a regular expression over the alphabet of program transitions of the form w1* ... wn*. For multithreaded programs, the alphabet of the pattern is given by the synchronization operations between threads. After introducing the model, we study the complexity of pattern-based verification for abstracted multithreaded. While unrestricted verification is undecidable for abstracted multithreaded programs with recursive procedures and PSPACE-complete for abstracted multithreaded while-programs, we show that pattern-based verification is NP-complete for both classes. Using recent results about Parikh images of context-free languages and semilinear sets, we show that pattern-based verification becomes polynomial when the number of threads, the longest acyclic path in the call graph, and the size of the pattern are fixed, but the procedures can still be arbitrarily large.