Previous Up Next

5  Graphical User Interface

Blastcomes with a rudimentary whose chief purpose is to make it easier to view counterexample traces. In this section we discuss the GUI.

The GUI is started by the command blastgui.opt.

Source and predicate files are loaded in using File in the main toolbar, or by entering the filenames in the appropriate text boxes and clicking the load button. There are four sub-panes showing respectively a log of events, the source file, the predicate file and counterexample traces.

To run Blast, the user must first select the source file and then optionally a predicate file and then type in the options in the text pane labelled options, and click the Run button. If the system is free of errors, Blastwill (hopefully) pop up a window saying so, if not, it will (hopefully) switch to the counterexample trace pane showing a counterexample that violates the specification. We say hopefully as it is possible as we saw before that Blastwill be be stuck at some point unable to find the right predicates to continue. In this case also, the GUI moves to the counterexample trace pane which now shows a trace on which Blastis stuck -- the user can then stare at the trace and guess some predicates which can then be fed to Blast.

The Counterexample Trace Pane

The counterexample trace pane is broken into 3 subpanes -- the leftmost is the program source, the middle pane is the sequence of operations that is the counterexample and the rightmost pane contains the state of the system given by values for the various predicates in the top half and the function call stack in the lower pane at the corresponding points in the counterexample. One can see the state of the system at different points of the trace by clicking on the corresponding operation in the middle pane. When one chooses an operation in the middle pane, the corresponding program text is highlighted in the left pane and the predicate values and control stack are shown in the right pane. Alternatively, one can go back and forth along the trace using the arrows along the bottom.
Previous Up Next