Link Search Menu Expand Document (external link)

Representation of functions

A Boolean function is stored in it’s prime disjunctive normal form(which can also be interpreted as a family of sets, or a hypergraph) as a list of clauses, where the clauses are also represented as unordered lists of integer indices. For example, The Gurvich-Khachiyan exampples f_2 and g_2 are represented as:

(f-n 2) -> '((2 3) (2 4) (1 3) (1 4) (6 7) (6 8) (5 7) (5 8))
(g-n 2) -> '((3 4 5 6) (3 4 7 8) (1 2 5 6) (1 2 7 8))

As an example of how the algorithm checks the duality of these two functions, and how this is associated with a tree, we now run through the first level of the recursion, fixing lexicographic ordering and no filtering for the pivot variables.

We split on 1 to get two subproblems:

F_1 = '((2 3)(2 4)(6 7)(6 8)(5 7)(5 8))
G_0 or G_1 = '((3 4 5 6)(3 4 7 8)(2 5 6)(2 7 8))

And

F_0 or F_1 = '((2 3)(2 4)(3)(4)(6 7)(6 8)(5 7)(5 8) = '((3)(4)(6 7)(6 8)(5 7)(5 8))
G_1 = '((3 4 5 6)(3 4 7 8))

The full recusrion tree is depicted in the following figure. The two subproblems above correspond to the left and right branches of the tree.