Set Splitting is NP-complete #
SET SPLITTING, also known as hypergraph 2-colorability: can the ground
elements of a set system be colored with two colors so that no set of the
family is monochromatic? Like Exact Cover it lives on
FirstOrder.Language.setSystem unchanged (DescriptiveComplexity.SetSplitting,
DescriptiveComplexity.Problems.SetFamily.Defs) and carries no threshold – the
coloring, not a cardinality, is the whole question.
Hardness comes from NAE-SAT (DescriptiveComplexity.Problems.NaeSat) by a reduction
with no gadget and no counting, order-free and of dimension 1:
- the ground elements are the literals
(x, s); - the family has one set
{x, ¬x}per variable, and one set per clause, holding its literals.
A two-coloring splits the pair {x, ¬x} exactly when it gives the two
literals of x opposite colors – that is a truth assignment – and it
splits a clause set exactly when the clause has both a true and a false
literal, which is not-all-equal satisfaction. The correspondence is so direct
that the reduction is essentially the identity on clauses; only the pair sets
are new, and they are what turns an arbitrary coloring into an assignment.
Tags of the reduction: the ground element of a literal, the set of a variable, and the set of a clause.
- lit
(s : Bool)
: SplTag
The ground element of the literal
(x, s). - pairSet : SplTag
The set
{x, ¬x}of the variablex. - clSet : SplTag
The set of the literals of a clause.
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq (DescriptiveComplexity.SetSplitRed.SplTag.lit s) DescriptiveComplexity.SetSplitRed.SplTag.pairSet = isFalse ⋯
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq (DescriptiveComplexity.SetSplitRed.SplTag.lit s) DescriptiveComplexity.SetSplitRed.SplTag.clSet = isFalse ⋯
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq DescriptiveComplexity.SetSplitRed.SplTag.pairSet (DescriptiveComplexity.SetSplitRed.SplTag.lit s) = isFalse ⋯
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq DescriptiveComplexity.SetSplitRed.SplTag.pairSet DescriptiveComplexity.SetSplitRed.SplTag.pairSet = isTrue ⋯
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq DescriptiveComplexity.SetSplitRed.SplTag.clSet (DescriptiveComplexity.SetSplitRed.SplTag.lit s) = isFalse ⋯
- DescriptiveComplexity.SetSplitRed.instDecidableEqSplTag.decEq DescriptiveComplexity.SetSplitRed.SplTag.clSet DescriptiveComplexity.SetSplitRed.SplTag.clSet = isTrue ⋯
Instances For
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Dependency graph
Dependency graph
The interpretation #
Defining formula for the ground elements: the literals.
Equations
Instances For
Dependency graph
Defining formula for the family: one set per variable and one per clause.
Equations
- DescriptiveComplexity.SetSplitRed.famF DescriptiveComplexity.SetSplitRed.SplTag.pairSet = ⊤
- DescriptiveComplexity.SetSplitRed.famF DescriptiveComplexity.SetSplitRed.SplTag.clSet = DescriptiveComplexity.ThreeSatToSat.clF (0, 0)
- DescriptiveComplexity.SetSplitRed.famF (DescriptiveComplexity.SetSplitRed.SplTag.lit s) = ⊥
Instances For
Dependency graph
Defining formula for incidence: the pair set of x holds both literals of
x, and the set of a clause holds the literals occurring in it.
Equations
- DescriptiveComplexity.SetSplitRed.memF (DescriptiveComplexity.SetSplitRed.SplTag.lit s) DescriptiveComplexity.SetSplitRed.SplTag.pairSet = DescriptiveComplexity.ThreeSatToSat.eqF (0, 0) (1, 0)
- DescriptiveComplexity.SetSplitRed.memF (DescriptiveComplexity.SetSplitRed.SplTag.lit s) DescriptiveComplexity.SetSplitRed.SplTag.clSet = DescriptiveComplexity.ThreeSatToSat.occF s (1, 0) (0, 0)
- DescriptiveComplexity.SetSplitRed.memF x✝¹ x✝ = ⊥
Instances For
Dependency graph
The interpretation of Set Splitting instances in CNF instances.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The points #
The point of tag t over the element x.
Instances For
Dependency graph
Characterization of the four relations #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Correctness #
Correctness of the reduction: a CNF structure is not-all-equal satisfiable iff its literal set system can be split.
Dependency graph
NAE-SAT FO-reduces to Set Splitting: the ground elements are the literals, the family holds one pair set per variable and one set per clause. No order, no gadget and no counting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
NP-completeness #
Set Splitting is in NP: it is Σ₁-definable.
Dependency graph
Set Splitting is NP-hard: NAE-SAT, which is NP-hard, FO-reduces to it.
Dependency graph
Set Splitting is NP-complete, derived from the first-order reductions
of this library and the Cook–Levin theorem.
Registered in the Lax archive as
Lax799700.SetFamily.setSplitting_NP_complete.