CompSat Overview - Topology/CompSAT GitHub Wiki
to parallelize SAT solving through decomposition into smaller problems and composing solutions to those smaller problems.
Let S1 and S2 be a decomposed SAT problem with solutions φ1 and φ2 respectively. What we seek are representations for φ1 and φ2 and a function Φ such that Φ(φ1,φ2) is the solution of S1 ∪ S2 and the following properties hold for φ1,φ2, and Φ(φ1,φ2):
- The size of the representation is as "compact" as possible (preferably polynomial space in the number of variables).
- Enumeration of solutions is polynomial time on the size of the representation.
- The number of redundant solutions in the representation is low (no solution is repeated more than C times for some reasonable C)
- Two representations can be composed (their solution spaces intersected) efficiently (preferably in polynomial time).
The disjunctive normal form of a boolean formula is an enumeration of all the valid variable assignments which make the formula true. This representation may be exponential in space, requiring upto 2N disjuncts where N is the number of variables needing assignment. Such an enumeration does not account for the structural regularity of similar solutions. Our goal is to find a representation which is compact and can efficiently be expanded to recover the DNF of the formula. To do this we are looking at a representation which employs data compression techniques, i.e. using shorter strings to describe a set of larger strings. We call this representation Solution Normal Form (SNF)
There is a strong homomorphism between regular expressions and SAT. Let the alphabet for our regular expression be the variables used in a given SAT problem. A variable assignment V, where the variable order is fixed, satisfies a boolean formula F if and only if the projection λ(V) is recognized by the regular expression λ(F)
λ(F) is defined as follows:
- λ(True) → The set of all strings where each character occurs at most once and in the same order as the variable ordering
- λ(False) → The empty set of strings
- λ(Variable V) → All strings in λ(True) which contain the character representing variable V
- λ(¬A) → λ(True) - λ(A)
- λ(A∧B) → λ(A) ∩ λ(B)
- λ(A∨B) → λ(A) ∪ λ(B)