Abstract
Monitoring and checking the execution of a distributed program incur significant overhead due to the large number of states that need to be considered. This paper addresses two important aspects in tackling this problem: (a) atomization of the events that occur in a run, and (b) exploiting partial order semantics rather than interleaving semantics. Atomization is used to simplify analysis by compressing the events of an execution into a much smaller number of atoms. Partial order semantics promotes separation of concerns in modeling and checking program requirements involving (i) the necessary ordering among the atoms and (ii) the correctness of each atom. Ordering requirement is modeled by a set of recurrent sequences while computation requirement is modeled by a predicate that should be satisfied in the minimal state of each atom. A partially-ordered multi-set (pomset) model is presented to demonstrate the effectiveness of the approach. It is shown that property checking can be done without involving all the states of a run, regardless of the generality of the predicate involved.