Reductions between Clique, Independent Set and Vertex Cover #
The classical reductions inside the clique family, as quantifier-free
first-order reductions on marked graphs (all of tag Unit and dimension 1):
DescriptiveComplexity.indSet_fo_reduction_cliqueandDescriptiveComplexity.clique_fo_reduction_indSet: complementing the edges (off the diagonal) exchanges cliques and independent sets, keeping the marked set;DescriptiveComplexity.vertexCover_fo_reduction_indSetandDescriptiveComplexity.indSet_fo_reduction_vertexCover: complementing the marked set exchanges vertex covers and independent sets, keeping the edges – a set is a vertex cover iff its complement is independent, and (on a finite universe) it is at most as large as the marked set iff its complement is at least as large as the complement of the marked set;- composites
DescriptiveComplexity.vertexCover_fo_reduction_cliqueandDescriptiveComplexity.clique_fo_reduction_vertexCover.
The counting step of the vertex-cover reductions
(DescriptiveComplexity.coverOn_iff_indepOn_not) is the only place where finiteness is
used; it enters through the finiteness conjunct of the problems themselves. That
step is pure unary-representation arithmetic – complementing a marked set
subtracts its decoded number from the size of the universe, hence reverses
comparisons – and is discharged by
DescriptiveComplexity.ncard_compl_le_ncard_compl_iff and
DescriptiveComplexity.ncard_compl_le_iff of DescriptiveComplexity.Numbers.Unary.
Complementation lemmas for the generic properties #
A clique is an independent set of the complement graph (loops removed).
Dependency graph
An independent set is a clique of the complement graph (loops removed).
Dependency graph
On a finite universe, a vertex cover at most as large as the marked set exists iff an independent set at least as large as the complement of the marked set does: complementation exchanges the two.
Dependency graph
On a finite universe, an independent set at least as large as the marked set exists iff a vertex cover at most as large as the complement of the marked set does.
Dependency graph
The two interpretations #
The edge-complementing interpretation: adjacency becomes off-diagonal non-adjacency, marks are kept.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The mark-complementing interpretation: adjacency is kept, marks are complemented.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Both interpretations are quantifier-free.
Dependency graph
Both interpretations are quantifier-free.
Dependency graph
Characterizations of the interpreted relations #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Correctness #
Correctness of the edge complementation, independent-set-to-clique direction.
Dependency graph
Correctness of the edge complementation, clique-to-independent-set direction.
Dependency graph
Correctness of the mark complementation, vertex-cover-to-independent-set direction.
Dependency graph
Correctness of the mark complementation, independent-set-to-vertex-cover direction.
Dependency graph
The reductions #
Independent Set FO-reduces to Clique, by complementing the edges.
Equations
- DescriptiveComplexity.indSet_fo_reduction_clique = { Tag := Unit, tagFinite := ⋯, tagNonempty := ⋯, dim := 1, toInterpretation := DescriptiveComplexity.complEdgeInterp, correct := ⋯ }
Instances For
Dependency graph
Clique FO-reduces to Independent Set, by complementing the edges.
Equations
- DescriptiveComplexity.clique_fo_reduction_indSet = { Tag := Unit, tagFinite := ⋯, tagNonempty := ⋯, dim := 1, toInterpretation := DescriptiveComplexity.complEdgeInterp, correct := ⋯ }
Instances For
Dependency graph
Vertex Cover FO-reduces to Independent Set, by complementing the marked set.
Equations
- DescriptiveComplexity.vertexCover_fo_reduction_indSet = { Tag := Unit, tagFinite := ⋯, tagNonempty := ⋯, dim := 1, toInterpretation := DescriptiveComplexity.complMarkInterp, correct := ⋯ }
Instances For
Dependency graph
Independent Set FO-reduces to Vertex Cover, by complementing the marked set.
Equations
- DescriptiveComplexity.indSet_fo_reduction_vertexCover = { Tag := Unit, tagFinite := ⋯, tagNonempty := ⋯, dim := 1, toInterpretation := DescriptiveComplexity.complMarkInterp, correct := ⋯ }