next up previous
Next: Fat Sets Again Up: Constraints Previous: Constraints

Proving Constraints

If the constraint we are interested in proving is a ``transitive'' property (if it holds for tex2html_wrap_inline378 and tex2html_wrap_inline600 and for tex2html_wrap_inline600 and tex2html_wrap_inline622 then it holds for tex2html_wrap_inline378 and tex2html_wrap_inline622 ) then we can use the following proof rule to show the constraint holds of any execution of the state machine:

tex2html_wrap_inline628
tex2html_wrap_inline630

where A is the set of actions and tex2html_wrap_inline378 and tex2html_wrap_inline592 are quantified and qualified as described above. Or, in English:

  1. For each action tex2html_wrap_inline638 ,
  2. Conclude that tex2html_wrap_inline602 holds of all pairs of states in all executions.

What's the rationale for this proof rule? First, again I care only about reachable states. Second, consider any execution of my state machine:

tex2html_wrap_inline588

If I can show that tex2html_wrap_inline602 holds over any pair of successive states, tex2html_wrap_inline652 , i.e., every single state transition, then surely it holds over any pair of states, ( tex2html_wrap_inline654 ), 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 tex2html_wrap_inline378 to tex2html_wrap_inline600 . For each action, I need to make sure that the conjunction of its pre- and post-condition predicates imply the constraint.



Norman Papernick
Mon Mar 18 14:28:12 EST 1996