next up previous contents
Next: Bounded Buffer Example Up: Pipeline Example Previous: Entering a specification using

Using a simple data abstraction

We will turn our attention back to the main frame of the BUI. If you look at the code in the main method of class PipeInt, you will see that the for loop sends integers from 1 to 100 through the pipeline, and this relatively wide range of values will cause the model-check of the given property to run for many hours. In fact, because a zero value is used to indicate shutdown, proving the given property only requires distinguishing zero from non-zero queue values.

To dramatically reduce the cost of checking this property, we will abstract the queue values to three abstract tokens neg, zero, and pos using the Abstraction Manager. This abstraction is called the Signs abstraction.

To finish this session check the SLABS option on the upper tool-bar of the main window to enable the use of abstractions.

To pick the model checker you want to use at the back end of Bandera, bring out the Session Manager window by clicking on the Session option of the main window. Click on the Checker tab at the top of the Session Manager window and pick the model checker Spin.

Enable the Checker on the top tool-bar and Run Bandera again. After some period of time, you should get a confirmation that your property is verified as shown in Figure 13.

 

  figure2003


Figure 13: Pipeline Verified


next up previous contents
Next: Bounded Buffer Example Up: Pipeline Example Previous: Entering a specification using

Roby Joehanes
Wed Mar 7 18:30:51 CST 2001