Decision Tree Viewer

Guido Tack

Visualization of boolean (prime) decision trees

What is it?

A decision tree is a representation of a boolean formula. To be precise, DTV displays prime trees, a reduced form of decision trees.


DTV depends on the package
Please install it before installing DTV.


The package can be installed via ozmake. If you downloaded the package from mogul, type
ozmake --install -p [FILENAME]
Alternatively, you can install it directly from the internet:
ozmake --install -p mogul:/tack/DecisionTree

Entering a formula

Start DTV by typing dtv at the command line. The main window should open.

At the bottom of the window, you find a text area where you can enter the boolean formula. The simple syntax for formulae is as follows:

sf ::= false
     | true
     | X
     | -sf
     | sf1 ^ sf2
     | sf1 v sf2
     | sf1 => sf2
     | sf1 <=> sf2
     | (sf)

Where X is a variable (a string beginning with an uppercase letter).

There is an extended syntax, allowing for abbreviations (or macros) of formulae:

flist ::= goal := sf
        | y := sf;flist

Where y is a macro name (a string beginning with a lowercase letter). In an extended formula, a macro name can appear instead of a variable (in case it has been defined before).

Variable order

In decision trees, the order of variables matters. With DTV, you can change the order as you like:
After you have entered a formula, the order of the variables will be the order in which they appear in the formula. The variables are displayed on the right, ordered from top to bottom. Now you can select a variable and move it up or down using the "Up" and "Down" buttons. "Reverse" just brings the variables in reverse order, "Sort" sorts them lexicographically. Anytime you change the order, the tree will adjust accordingly.

Normal forms

Prime trees make it easy to compute a disjunctive and conjunctive normal form of a formula. The normal forms corresponding to the current variable order are displayed below the entry field.

Postscript export

By selecting the menu entry "DTV -> Save tree", you can save the picture of the current tree in encapsulated postscript format.


This is an example for a formula in extended syntax, taken from a course on logics at Saarland University:

"What is the secret of your long life?" a hundred-year-old is asked. He replies: "I strictly obey three rules: Anytime I don't drink beer, I eat fish. If I have fish as well as beer, I won't eat ice cream. Should I eat ice cream or not drink beer, I won't have fish."

This problem could be modelled as follows:
r1   := -Beer => Fish;
r2   := Fish ^ Beer => -IceCream;
r3   := IceCream v -Beer => -Fish;
goal := r1 ^ r2 ^ r3

If you order the variables as Beer < IceCream < Fish, you can see that the old man always drinks beer (this doesn't seem to be a surprise ;-), but eats only either fish or ice cream.

This is what the output of dtv for this example may look like:

Guido Tack
Last modified: Wed May 1 20:33:10 CEST 2002