You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NAESatisfiability is currently an isolated node in the reduction graph with zero inbound or outbound edges
Satisfiability is the root of the entire reduction graph (connects to KSatisfiability, CircuitSAT, MaximumIndependentSet, MinimumDominatingSet, KColoring, etc.)
Classic textbook reduction with clean gadget construction
Reference
Garey, M. R. & Johnson, D. S. (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman. Problem [LO1].
Schaefer, T. J. (1978). "The complexity of satisfiability problems." Proceedings of the 10th Annual ACM Symposium on Theory of Computing, pp. 216–226.
Reduction Algorithm
Given a SAT instance with $n$ variables $x_1, \ldots, x_n$ and $m$ clauses $C_1, \ldots, C_m$:
Introduce a fresh sentinel variable$s$ (variable index $n+1$).
For each SAT clause $C_j = (l_1 \vee l_2 \vee \cdots \vee l_k)$, construct an NAE clause $C'_j = (l_1, l_2, \ldots, l_k, s)$.
Correctness (forward): If assignment $\alpha$ satisfies the SAT instance, set $s = \text{false}$. In each NAE clause $(l_1, \ldots, l_k, s)$: at least one $l_i$ evaluates to true (by SAT satisfaction) and $s$ is false, so the clause is not-all-equal.
Correctness (backward): Given an NAE-satisfying assignment:
If $s = \text{false}$: each clause has at least one true literal (since not all can be false when $s$ is already false), so the original SAT formula is satisfied.
If $s = \text{true}$: flip all variables (including $s$). By the symmetry property of NAE-SAT (complementing all variables preserves NAE satisfaction), we obtain a valid NAE assignment with $s = \text{false}$, reducing to the previous case.
Solution extraction: Given NAE-SAT solution, check sentinel variable. If $s = 0$ (false), return the first $n$ variables directly. If $s = 1$ (true), return the complement of the first $n$ variables.
Edge case: Single-literal SAT clauses $(l_1)$ become $(l_1, s)$ with 2 literals, meeting the NAE-SAT minimum clause length of 2.
Size Overhead
Target metric
Formula
num_vars
num_vars + 1
num_clauses
num_clauses
num_literals
num_literals + num_clauses
Validation Method
Closed-loop test: construct a Satisfiability instance, reduce to NAESatisfiability, solve NAE-SAT with brute force, extract solution back to SAT, and verify it satisfies all clauses. Also test the complement-extraction path by constructing cases where the sentinel ends up true.
NAE-SAT solution with $s = \text{false}$:$(0, 1, 0, 0)$
Clause 1 $(x_1, x_2, s) = (F, T, F)$: has true and false ✓
Clause 2 $(\neg x_1, x_3, s) = (T, F, F)$: has true and false ✓
Clause 3 $(\neg x_2, \neg x_3, s) = (F, T, F)$: has true and false ✓
Extracted SAT solution:$s = 0$, so return first 3 variables directly: [0, 1, 0] ✓
This example is non-trivial because the NAE condition is strictly stronger than SAT — not every SAT solution is an NAE-SAT solution. For instance, the assignment $(0,1,0)$ satisfies the original SAT formula, but its NAE-SAT extension $(0,1,0,0)$ fails NAE on any clause where all selected literals evaluate to the same truth value.
Source
Satisfiability
Target
NAESatisfiability
Motivation
Reference
Reduction Algorithm
Given a SAT instance with$n$ variables $x_1, \ldots, x_n$ and $m$ clauses $C_1, \ldots, C_m$ :
Correctness (forward): If assignment$\alpha$ satisfies the SAT instance, set $s = \text{false}$ . In each NAE clause $(l_1, \ldots, l_k, s)$ : at least one $l_i$ evaluates to true (by SAT satisfaction) and $s$ is false, so the clause is not-all-equal.
Correctness (backward): Given an NAE-satisfying assignment:
Solution extraction: Given NAE-SAT solution, check sentinel variable. If$s = 0$ (false), return the first $n$ variables directly. If $s = 1$ (true), return the complement of the first $n$ variables.
Edge case: Single-literal SAT clauses$(l_1)$ become $(l_1, s)$ with 2 literals, meeting the NAE-SAT minimum clause length of 2.
Size Overhead
num_varsnum_vars + 1num_clausesnum_clausesnum_literalsnum_literals + num_clausesValidation Method
Closed-loop test: construct a Satisfiability instance, reduce to NAESatisfiability, solve NAE-SAT with brute force, extract solution back to SAT, and verify it satisfies all clauses. Also test the complement-extraction path by constructing cases where the sentinel ends up true.
Example
Source (SAT): 3 variables, formula:$(x_1 \vee x_2) \wedge (\neg x_1 \vee x_3) \wedge (\neg x_2 \vee \neg x_3)$
Target (NAE-SAT): 4 variables ($x_1, x_2, x_3, s$ ), clauses:
SAT solution:$(x_1 = \text{false}, x_2 = \text{true}, x_3 = \text{false})$ — config
[0, 1, 0].NAE-SAT solution with$s = \text{false}$ : $(0, 1, 0, 0)$
Extracted SAT solution:$s = 0$ , so return first 3 variables directly:
[0, 1, 0]✓This example is non-trivial because the NAE condition is strictly stronger than SAT — not every SAT solution is an NAE-SAT solution. For instance, the assignment$(0,1,0)$ satisfies the original SAT formula, but its NAE-SAT extension $(0,1,0,0)$ fails NAE on any clause where all selected literals evaluate to the same truth value.