Guarded Progress Measures

Guarded progress measures are used to remove states from the passed set which is known never to be used again. The syntax is defined by the grammar for ProgressDecl:

ProgressDecl  ::= 'progress' '{' (Expression ':' Expression ';')* '}'

The non-terminal Expression can be found in the section on expressions

A stable predicate is a predicate that if it is satisfied in a state, s, it is satisfied in all states reachable from a.

A guarded progress measure is a 2-tuple (g, p) where g is a stable predicate and p is an expression that grows monotonically when g is satisfied.

Examples