Described techniques and tools help model checking scale to large programs
while reducing missed errors. In particular, described techniques and
tools help reduce the state space of concurrent programs without
depending on cycle detection and without scheduling execution of
postponed threads at all cycles. For example, described techniques and
tools use a type of partial-order reduction called transaction-based
reduction to reduce program state space. Analysis is performed at commit
points to determine whether to schedule delayed threads.