The set family is existential second-order definable #
The membership half of the NP-completeness of Set Cover and Set Packing:
both are Σ₁-definable in the sense of DescriptiveComplexity.SecondOrder
(DescriptiveComplexity.setCover_sigmaSODefinable,
DescriptiveComplexity.setPacking_sigmaSODefinable). Hitting Set needs no definition
of its own: it FO-reduces to Set Cover
(DescriptiveComplexity.Problems.SetFamily.Reductions).
The two definitions share everything but their goal clause. A single
existential block (DescriptiveComplexity.familyGuessBlock) guesses a unary
relation – the subfamily – and a binary one – an injection witnessing the
threshold – and the first-order kernel is a conjunction of clauses built from
a common kit:
DescriptiveComplexity.sfFamClause: the guessed subfamily consists of sets of the family (shared);- the goal clause:
DescriptiveComplexity.sfCoverClause(every ground element belongs to a guessed set) for Set Cover,DescriptiveComplexity.sfDisjClause(no ground element belongs to two distinct guessed sets) for Set Packing; - the threshold clauses
DescriptiveComplexity.sfGuessToMarkedClause(Set Cover, an upper bound: the subfamily injects into the marked set) orDescriptiveComplexity.sfMarkedToGuessClause(Set Packing, a lower bound: the marked set injects into the subfamily), together with the shared injectivity clauseDescriptiveComplexity.sfInjClause.
The direction of the injection is the only semantic difference the threshold
makes, which is exactly what the embedding forms of
DescriptiveComplexity.Problems.SetFamily.Defs
(DescriptiveComplexity.coversOn_iff_embedding,
DescriptiveComplexity.packsOn_iff_embedding) say. This mirrors
DescriptiveComplexity.clique_sigmaSODefinable, whose threshold is a lower bound like
Set Packing's.
The single existential block shared by the Σ₁ definitions of the set
family: a unary relation variable (true: the guessed subfamily) and a binary
one (false: the injection witnessing the threshold).
Equations
- DescriptiveComplexity.familyGuessBlock = { ι := Bool, ιFinite := Bool.instFinite, arity := fun (i : Bool) => bif i then 1 else 2 }
Instances For
The symbol of the subfamily relation variable.
Instances For
The symbol of the injection relation variable.
Instances For
The vocabulary of the kernels: set systems together with the two guessed relation variables.
Equations
Instances For
The ground-element symbol in the kernels' vocabulary.
Instances For
The family symbol in the kernels' vocabulary.
Instances For
The incidence symbol in the kernels' vocabulary.
Instances For
The mark symbol in the kernels' vocabulary.
Instances For
The subfamily symbol in the kernels' vocabulary.
Instances For
The injection symbol in the kernels' vocabulary.
Instances For
The clauses #
Kernel clause: the guessed subfamily consists of sets of the family.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause (Set Cover): every ground element belongs to a guessed set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause (Set Packing): no ground element belongs to two distinct guessed sets.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause (Set Cover's threshold, an upper bound): the guessed injection maps every member of the subfamily to a marked element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause (Set Packing's threshold, a lower bound): the guessed injection maps every marked element to a member of the subfamily.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause: the guessed injection is injective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The kernel of the Σ₁ definition of Set Cover.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first-order kernel of the Σ₁ definition of Exact Cover: the same
kit again, this time asking for a subfamily that both covers and is pairwise
disjoint – and, exactness replacing the threshold, no injection clause.
Equations
Instances For
Kernel clause (Set Splitting): every set of the family contains a colored ground element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel clause (Set Splitting): every set of the family contains an uncolored ground element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first-order kernel of the Σ₁ definition of Set Splitting: the
guessed relation is read as one color class, and every set of the family
meets it and its complement.
Equations
Instances For
The kernel of the Σ₁ definition of Set Packing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Realization of the clauses #
The two definitions #
Set Cover is Σ₁-definable: existentially guess the covering
subfamily and an injection of it into the marked set, then check both
first-order. Since NP is defined as Σ₁-definability, this is the membership
half of the NP-completeness of Set Cover.
Set Packing is Σ₁-definable: existentially guess the packing and an
injection of the marked set into it, then check both first-order. Since NP is
defined as Σ₁-definability, this is the membership half of the
NP-completeness of Set Packing.
Exact Cover is Σ₁-definable: existentially guess the subfamily and
check first-order that it covers every ground element and that no element is
covered twice. Since NP is defined as Σ₁-definability, this is the
membership half of the NP-completeness of Exact Cover.
Set Splitting is Σ₁-definable: existentially guess one color class
and check first-order that every set of the family meets it and its
complement.