Documentation

DescriptiveComplexity.Problems.CliqueFamily.Defs

Clique, Independent Set and Vertex Cover: definitions #

The three classical threshold problems on graphs, as decision problems on marked graphs: FirstOrder.Language.markedGraph-structures, carrying a binary adjacency relation and a unary mark. The marked set carries the numeric threshold k of the textbook problems in the unary representation of DescriptiveComplexity.Numbers.Unary: the threshold is the cardinality Set.ncard of the marked set, order-free and isomorphism-invariant for free.

The threshold comparisons are comparisons of decoded numbers, and the cardinality arithmetic they need is the shared kit of DescriptiveComplexity.Numbers.Unary: invariance of a decoded number under an equivalence of universes (DescriptiveComplexity.ncard_image_equiv) for the isomorphism-invariance proofs, the reversal of a comparison under complementation (DescriptiveComplexity.ncard_compl_le_ncard_compl_iff) for the Vertex Cover ↔ Independent Set reductions, and the equivalence with the existence of an injection (DescriptiveComplexity.nonempty_embedding_iff_ncard_le, here DescriptiveComplexity.cliqueOn_iff_embedding) for the second-order definition, which guesses that injection as a relation variable. Since cardinality thresholds are only meaningful on finite structures, finiteness of the universe is part of the yes-instances; by ComplexityClass.mem_congr_finite this does not affect any complexity-theoretic statement.

Self-loops are ignored (all three properties are about the underlying loopless graph), and adjacency is required in both directions on ordered pairs, so the problems agree with their standard versions on (structures encoding) simple graphs.

The three predicates are instances of generic properties DescriptiveComplexity.CliqueOn / IndepOn / CoverOn of a binary and a unary predicate on a type; the generic form is shared by the isomorphism-invariance proofs and by the reductions of DescriptiveComplexity.Problems.CliqueFamily.Reductions.

Relation symbols of the language of marked graphs.

Instances For
    Dependency graph
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Dependency graph
      Dependency graph

      The relational language of marked graphs: a graph together with a marked subset of its vertices, whose cardinality serves as threshold.

      Equations
      Instances For
        Dependency graph
        Dependency graph
        @[reducible, inline]

        The adjacency symbol of marked graphs.

        Equations
        Instances For
          Dependency graph
          @[reducible, inline]

          The mark symbol of marked graphs.

          Equations
          Instances For
            Dependency graph

            Generic threshold properties #

            The properties underlying the three problems, for an arbitrary binary predicate Adjp (adjacency) and unary predicate Kp (marks) on a type.

            def DescriptiveComplexity.CliqueOn {A : Type} (Adjp : AAProp) (Kp : AProp) :

            Some set that is pairwise Adjp-related (off the diagonal) is at least as large as the number encoded by the Kp-marked elements: “some clique is at least as large as the marked set”.

            Equations
            Instances For
              Dependency graph
              def DescriptiveComplexity.IndepOn {A : Type} (Adjp : AAProp) (Kp : AProp) :

              Some set that is pairwise non-Adjp-related (off the diagonal) is at least as large as the number encoded by the Kp-marked elements: “some independent set is at least as large as the marked set”.

              Equations
              Instances For
                Dependency graph
                def DescriptiveComplexity.CoverOn {A : Type} (Adjp : AAProp) (Kp : AProp) :

                Some set meeting every (off-diagonal) Adjp-edge is at most as large as the number encoded by the Kp-marked elements: “some vertex cover is at most as large as the marked set”.

                Equations
                Instances For
                  Dependency graph

                  The threshold as an injection #

                  On a finite universe, comparing the decoded numbers is comparing sizes, so the threshold conditions can equivalently be read as the existence of an injection. This is the form the second-order definitions guess.

                  theorem DescriptiveComplexity.cliqueOn_iff_embedding {A : Type} [Finite A] (Adjp : AAProp) (Kp : AProp) :
                  CliqueOn Adjp Kp ∃ (S : AProp), (∀ (x y : A), S xS yx yAdjp x y) Nonempty ({ x : A // Kp x } { x : A // S x })

                  The clique threshold as an injection of the marked set into the clique.

                  Dependency graph
                  theorem DescriptiveComplexity.indepOn_iff_embedding {A : Type} [Finite A] (Adjp : AAProp) (Kp : AProp) :
                  IndepOn Adjp Kp ∃ (S : AProp), (∀ (x y : A), S xS yx y¬Adjp x y) Nonempty ({ x : A // Kp x } { x : A // S x })

                  The independent-set threshold as an injection of the marked set into the independent set.

                  Dependency graph
                  theorem DescriptiveComplexity.coverOn_iff_embedding {A : Type} [Finite A] (Adjp : AAProp) (Kp : AProp) :
                  CoverOn Adjp Kp ∃ (C : AProp), (∀ (x y : A), x yAdjp x yC x C y) Nonempty ({ x : A // C x } { x : A // Kp x })

                  The vertex-cover threshold as an injection of the cover into the marked set.

                  Dependency graph
                  theorem DescriptiveComplexity.CliqueOn.of_equiv {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) (h : CliqueOn AdjB KB) :
                  CliqueOn AdjA KA

                  CliqueOn transports along an equivalence commuting with the two predicates.

                  Dependency graph
                  theorem DescriptiveComplexity.IndepOn.of_equiv {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) (h : IndepOn AdjB KB) :
                  IndepOn AdjA KA

                  IndepOn transports along an equivalence commuting with the two predicates.

                  Dependency graph
                  theorem DescriptiveComplexity.CoverOn.of_equiv {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) (h : CoverOn AdjB KB) :
                  CoverOn AdjA KA

                  CoverOn transports along an equivalence commuting with the two predicates.

                  Dependency graph
                  theorem DescriptiveComplexity.CliqueOn.equiv_iff {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) :
                  CliqueOn AdjB KB CliqueOn AdjA KA

                  CliqueOn transports along an equivalence, iff version.

                  Dependency graph
                  theorem DescriptiveComplexity.IndepOn.equiv_iff {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) :
                  IndepOn AdjB KB IndepOn AdjA KA

                  IndepOn transports along an equivalence, iff version.

                  Dependency graph
                  theorem DescriptiveComplexity.CoverOn.equiv_iff {A B : Type} (u : B A) {AdjB : BBProp} {KB : BProp} {AdjA : AAProp} {KA : AProp} (hadj : ∀ (b b' : B), AdjB b b' AdjA (u b) (u b')) (hK : ∀ (b : B), KB b KA (u b)) :
                  CoverOn AdjB KB CoverOn AdjA KA

                  CoverOn transports along an equivalence, iff version.

                  Dependency graph
                  theorem DescriptiveComplexity.cliqueOn_congr {A : Type} {P Q : AAProp} {K K' : AProp} (hPQ : ∀ (x y : A), x y → (P x y Q x y)) (hK : ∀ (x : A), K x K' x) :

                  CliqueOn only depends on the off-diagonal part of the adjacency predicate and on the extension of the mark predicate.

                  Dependency graph
                  theorem DescriptiveComplexity.indepOn_congr {A : Type} {P Q : AAProp} {K K' : AProp} (hPQ : ∀ (x y : A), x y → (P x y Q x y)) (hK : ∀ (x : A), K x K' x) :

                  IndepOn only depends on the off-diagonal part of the adjacency predicate and on the extension of the mark predicate.

                  Dependency graph

                  The three problems #

                  Dependency graph
                  Dependency graph

                  A marked graph contains a clique at least as large as its marked set. (Finiteness of the universe is part of the property: cardinality thresholds are only meaningful on finite structures.)

                  Equations
                  Instances For
                    Dependency graph
                    Dependency graph
                    Dependency graph

                    Isomorphism-invariance and the bundled problems #

                    Dependency graph
                    Dependency graph
                    Dependency graph

                    CLIQUE, as a problem on marked graphs: is there a clique at least as large as the marked set?

                    Equations
                    Instances For
                      Dependency graph

                      INDEPENDENT SET, as a problem on marked graphs: is there an independent set at least as large as the marked set?

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Dependency graph

                        VERTEX COVER, as a problem on marked graphs: is there a vertex cover at most as large as the marked set?

                        Equations
                        Instances For
                          Dependency graph