Definition
Splitting Algorithm
The splitting algorithm is a recursive decision procedure for the satisfiability of a propositional formula.
Starting from a formula , one chooses a distinguished subformula or atom and forms simpler branch formulas by replacing selected occurrences according to a chosen replacement policy. The resulting branch formulas are then analysed recursively.
Different replacement policies yield different variants of splitting. The recursive execution of the algorithm forms a splitting tree.
The most common variant is equivalent replacement on an atom . In that case one branches on the assumptions and , obtaining formulas such as and .
Replacement Policies
To describe local replacements, write for a formula with a distinguished occurrence of a subformula . If that occurrence is replaced by , we write the resulting formula as .
Equivalent Replacement
Equivalent replacement
Let be an interpretation. If then and have the same truth value under .
In particular:
This is the replacement policy used in the basic splitting algorithm.
Monotonic Replacement
Monotonic replacement
Define as the formula obtained from by replacing every positive occurrence of by and leaving every negative occurrence unchanged.
Let be an interpretation. If
and the chosen occurrence of in has positive polarity, then
Since
repeated monotonic replacement of positive occurrences gives
Thus monotonic replacement is one-sided: it preserves implication, not equivalence.
Monotonic Replacement
Splitting Step
Splitting over atoms
Let be a propositional formula and let be an atom. Then
This theorem uses equivalent replacement. Monotonic replacement alone is not enough to justify the bidirectional splitting equivalence.
Procedure
Recursive procedure
To decide whether a formula is satisfiable in the basic equivalent-replacement version:
- Simplify as far as possible after substituting truth values.
- If the resulting formula is , return satisfiable.
- If the resulting formula is , return unsatisfiable.
- Otherwise choose an atom occurring in .
- Construct and .
- Recursively test both formulas.
- Return satisfiable if at least one recursive call returns satisfiable.
In pseudocode:
function SPLIT(A) simplify A if A = ⊤ then return satisfiable if A = ⊥ then return unsatisfiable choose an atom p in A return SPLIT(A_p^⊤) or SPLIT(A_p^⊥)
Properties
Correctness
The basic splitting algorithm is sound and complete for propositional satisfiability, because equivalent replacement preserves satisfiability exactly.
Termination
Complexity
In the worst case, the algorithm explores both branches for each of atoms, so it may inspect up to cases. It is therefore a brute-force tree-like search algorithm, although simplification may prune branches early.
Relation to Other Methods
Related procedures
The recursive execution of the algorithm can be represented as a splitting tree.
Compared with truth tables, splitting only explores assignments that arise from the chosen recursive branches.
Polarity becomes relevant for monotonic replacement: there one replaces only positive occurrences and obtains a one-sided consequence of the original formula.
The DPLL algorithm refines the basic splitting idea by adding simplification rules such as unit propagation.
Example
Equivalent vs. monotonic replacement
Let
We compare the two replacement policies for the atom .
First, use equivalent replacement. We replace every occurrence of .
For :
For :
Hence
This is the branching step used in the basic splitting algorithm.
Now consider monotonic replacement. The occurrence of in is positive, while the occurrence of in is negative.
Therefore only the positive occurrence may be replaced by :
So monotonic replacement yields
but not an equivalence.
Indeed, if , , and , then
So replacing the negative occurrence as well would be too strong.
Thus:
- equivalent replacement replaces all occurrences and yields the splitting equivalence;
- monotonic replacement replaces only positive occurrences and yields a one-sided consequence.