Split-and-list: a CNF formula is satisfiable iff its OV instance has an orthogonal pair
ProvedWordRAM.Conjectures.Reduction.sat_iff_ovCorrectness of the split-and-list reduction. Let be any CNF formula, with any number of variables and any list of clauses, including empty clauses and the empty list. Let be the split-and-list OV instance of Def_WordRAM_SETHOV_Reduction. Its vectors are indexed by assignments to the first variables (left) and to the remaining variables (right), and it has one coordinate per clause, which is iff that half-assignment satisfies no literal of the clause. Then
where means that no coordinate is in both vectors.
This is the combinatorial content of Williams's reduction from CNF-SAT to Orthogonal Vectors. The time-bounded transfers below are built on it.
import Definitions.Def_WordRAM_SETHOV_Reduction open WordRAM.Conjectures
theorem WordRAM.Conjectures.Reduction.sat_iff_ov (f : SATInstance) :
f.Satisfiable ↔ (Reduction.toOV f).HasOrthogonalPair := by sorryRead-back
What the Lean code literally says, in plain math · claude-opus-5-5
Statement. For every CNF formula (no hypotheses at all: no bound on clause width, number of clauses, or number of variables), is satisfiable if and only if the explicitly constructed Orthogonal Vectors instance has an orthogonal pair.
The formula . consists of a number of variables (possibly ) and a finite ordered list of clauses (; the list may be empty). Each clause is a finite list of literals (it may be empty, and may repeat literals). A literal is a pair consisting of a variable index and a polarity (positive or negative). Under an assignment , a positive literal evaluates to and a negative literal to ; write for this value.
Left side of the iff (" is satisfiable").
Consequently: if this holds (vacuously; when the unique empty assignment witnesses it); if some clause is empty it fails.
The constructed OV instance . Let
Variables with index are called left variables, and those with are right variables (there are of them). The instance has left vectors and right vectors , each a Boolean vector of dimension (one coordinate per clause, in list order). For a natural number write (least-significant bit is ). For define assignments
where is truncated natural subtraction ( when ). (Formally reads bit of viewed as an -bit word, returning if ; this agrees with since . The junk values for and for are never consulted below.) The coordinates are
That is, coordinate is exactly when no literal of on that side is made true by that side's half-assignment. In particular, an empty clause gives coordinate in every left and every right vector. For right variables the bit read is ; when is even all bits of are used, and when is odd bit of is never read, so whenever differ only in that bit (duplicate right vectors).
Right side of the iff (" has an orthogonal pair").
Unfolded, this says: there exist such that every clause contains either a literal with index made true by , or a literal with index made true by . The pair consists of one left and one right vector (the same index is allowed).
Edge cases. If : , , there are no literals (no valid indices), so every clause is empty and every coordinate of the single left and single right vector is ; the right side then holds iff . If (any ): the dimension is and the right side holds trivially (orthogonality over zero coordinates). If : , , the sole variable is a left variable, and right vectors do not depend on .
Confirmed by the mission captain (proposal self-audit).