If the constraint we are interested in proving is a ``transitive'' property
(if it holds for and
and for
and
then it holds for
and
) then
we can use the following proof rule to show the constraint holds
of any execution of the state machine:
where A is the set of actions and and
are quantified and qualified as
described
above. Or, in English:
What's the rationale for this proof rule? First, again I care only about reachable states. Second, consider any execution of my state machine:
If I can show that holds over any pair of successive states,
,
i.e., every single state transition, then surely it holds over any
pair of states, (
), where i < j.
To show that it holds in any pair of successive states, I need
only consider every possible action, which is the only way I can
get from
to
. For each action, I need to make
sure that the conjunction of its pre- and post-condition predicates
imply the constraint.