1 Introduction
A concurrent program specifies two or more processes (or threads) that cooperate in performing a task. Each process is a sequential program that executes a sequence state-ments. The processes cooperate by communicating using variables or message passing. One way to check that a concurrent program correctly implements its specification is to execute the program with a set of test sequences. A test sequence represents a sequence of actions performed by the concurrent processes in the program. These actions are often interprocess communications such as sending and receiving messages.