Visual Logic was implemented using SWI-Prolog and the graphical package XPCE. Both SWI-Prolog and XPCE were developed at the University of Amsterdam and have been ported to various Unix/X-Windows environments as well as Microsoft Windows (Win32s, 95 and NT). VL itself has been written with portability in mind and should run without modification on any platform for which SWI-Prolog and XPCE are available.
The tool is composed of several components:
Below is a screen shot of the tool. Due to limited screen space, not all windows are fully visible.
Each of the graphical windows corresponds roughly to a module. The main window (at top) is the command center for the tool. Here, the user can load the source file, quickly switch between the various windows, launch the built-in editor to modify the source file, see a listing of the program clauses, invoke the help system, or quit the tool. The heart of the tool lies in the Query and Explore windows, which will be described in detail next. For now, note that the Query window shows the annotated clause tree for a, from the example program in chapter 3.
The tool responses to a query in one of two ways. If the goal fails, it simply returns a 'failed' message. Otherwise, it lists the results on the left pane. A proposition may be listed more than once if there are more than one way to derive it. Clicking on a listed proposition will display its associated clause tree on the right pane. In effect, this provides an 'explanation' for the answer. Each node is displayed with its contingency set (shown in list notation). The nodes are color coded as followed:
Each tree is display on its own white, raised area, called a cell. Various ways are provided for changing the display of the trees. A node can be collapsed, an entire cell can be collapsed, or all cells can be collapsed to give a broad view of the entire display.
In contrast to Explore, Query computes the entire tree and displays it at once. The user does not see how the trees are built, only the finished result. On the other hand, Query computes all values for any given node, whereas Explore only shows whether a node is evident. It is important to realize that a node's attribute shows its calculated global value which is not necessarily borne out by the tree it is in. That is, the fact that a node is colored blue indicates that it can be shown to be evident; however, it may not be the case that this particular tree shows that the node is evident. Also, the value of a node as shown is the most general value that can be computed for it. Therefore, if a node is blue, then its term can be shown to be evident and no more, i.e., it is neither conflicted nor supported. In the sample screen above, guilty is evident but not supported since one of its interior nodes, forensic_evidence, is conflicted. forensic_evidence is in fact moot since it is both supported and conflicted.
In some instances, it may be preferable to show each node's value pertaining only to the tree it is in, that is, its local value. In Explore mode, the user can toggle between showing global and local values by clicking on a cell, as shown below. In the cell on the right, the parentheses around the label a indicate this cell shows only local values.