As state previously, for consistent programs the semantics for 'evident' terms is analogous to that of 'satisfiable' terms in logic programming. Consequently, Query mode can be used as a sort of enhanced shell for 'pure' Prolog (logic programs without meta-logical features such as negation by failure and the cut). Advantages of Query mode over the plain Prolog shell include: 1) a point-and-click interface; 2) optional display of proof trees; and 3) finding all satisfiable terms in the clause database. Query mode does have at least two drawbacks. First, there is currently no graceful way to interrupt a long computation short of shutting down the program. Second, Query mode only accepts single term goals (e.g., "p(X,Y),q(Y)" is not allowed). However, this problem can be circumvented by adding an explicit clause to the program (e.g., "r(X,Y):-(X,Y),q(Y)").
VL does a fairly good job of taking full advantage of the graphical facilities available in XPCE to display clause trees and allow for their manipulation. By using a few simple graphical conventions, VL is able to convey a good deal of information with the minimum amount of text and graphic. In Explore mode, for example, the user can readily see whether a node is evident, true, blocked, has/has not been expanded, does/does not have additional matching clauses, etc., from the node's color and shape. VL's flexible interface also makes it easy to manipulate and navigate through the trees and nodes using either the keyboard or mouse.
VL's most serious drawback is that it is not practical for visualizing a very large execution space consisting of thousands or even hundreds of nodes. While it does allow the user to collapse entire branches to hide large portions of a tree, it does not have, for example, an 'unzoom' feature that lets the user view the entire tree in miniature. VL can hide or show a node (an all or nothing proposition), but it cannot show nodes at different levels of detail or abstraction. The last part of this section proposes some means for addressing these shortcomings.
Explore mode comes short of being a practical tracing and debugging tool for logic programs, however. Its weaknesses include:
Possible enhancements to VL in general and Explore mode in particular will be discussed later in the last section.
Compared to logic programming systems such as SPARCL and Pictorial Janus, VL uses a more familiar visual representation. SPARCL's representation nicely reflects its underlying set-based data organization. However, for "even mildly" complicated structures, the many nested boxes representing set partitions become difficult to interpret [SPARCL93]. Pictorial Janus also has a completely visual syntax capable of representing of clauses, terms, variables, etc., using only closed contours. In addition, it has a truly intriguing way of animating Horn clause proofs. However, some practice is required to become familiar with the syntax in order to comfortably interpret the animation.
These two systems are completely visual in that they use the same visual terms to represent both programs and their execution. SPARCL also allows the user to modify programs by directly manipulating their graphical representations. In contrast, VL still relies on textual representation of clauses. The user can manipulate the clause tree output in order to control program execution but not to modify the program itself. An early prototype of VL included a graph drawing feature that let the user construct program clauses graphically. The feature was rather crude and later abandoned as it did not provide a clear advantage over simply writing programs in text. However, this is not to say that a more sophisticated editor or constructor could not use graphs or diagrams to allow for a more "visual" representation of input programs.
As mentioned earlier, VL's Explore mode is similar to animated tracers for logic programs, albeit not as nearly sophisticated as the more advanced systems, notably TPM (Transparent Prolog Machine). Compared to TPM, Explore mode lacks the ability to show unification and clause matching in details. (This may not be a severe flaw since VL is not as closely tied to Prolog as TPM is.) Explore also does not have TPM's ability to replay program execution. That is, node expansions and redos happen 'live' and cannot be reversed and forwarded. Nor does Explore show nodes at different levels of granularity. Most serious of all, it does not have the kind of node abstraction and long distance view that facilitates viewing of very large trees. On the positive side, VL allows the user to explore the search space in arbitrary order. (TPM can do this but only retrospectively during replay.) Through the watch window, it also allows the user to select arbitrary matching clause to expand or redo a node with. In addition, it is possible to incorporate into VL many desirable features found in other systems, as the next section will show.