Techniques are provided for determining the efficient conjunction of
Boolean variables drawn from an and-or forest of choices. The techniques
determine two contexts to conjoin, where the contexts consist of choices
drawn from an and-or forest of choices. The choices in the first context
are marked with a first mark, along with all of their antecedent choices.
The choices in the second context are marked with a second mark, along
with all of their antecedent choices. The techniques determine and-nodes
in the and-or forest having the first mark from a first dependent or-node
and the second mark from a second dependent node. The dependent or-nodes
are refined and then partitioned into classes based on the presence of
the first mark and the second mark, the first mark only, the second mark
only, and neither mark. A cross-product of the partitions for each node
is determined and the resultant combinations are grouped based on the
presence of both the first and second marks, the presence of the first
mark only, the presence of the second mark only and presence of neither
mark. A new or-node having choices reflecting the combinations having
both marks, the first mark only, the second mark only and neither mark is
determined. The new or-node represents a transformed and-or forest of
choices that is in free-choice form. The first and second nodes in the
forest of choices are replaced with an or-node having choices based on
the first and second mark. The conjunction of contexts is then determined
based on the choice having both the first and second marks.