Documentation

DescriptiveComplexity.Problems.CliqueFamily.CountingHardness

#Clique is parsimoniously #P-complete #

DescriptiveComplexity.sharpClique_sharpP_parsimoniousComplete, by a reduction from #1-in-SAT (DescriptiveComplexity.sharpOneInSat_ordered_parsimonious_sharpClique).

The reduction of DescriptiveComplexity.Problems.CliqueFamily.FromSat is not parsimonious: a clique picks one true literal in each clause, and a satisfying assignment usually offers several. Under exactly-one satisfaction the choice is forced, provided a vertex says all that choosing it entails. So an occurrence vertex (c, x, s) here stands for “(x, s) is the true literal of c, and every other literal of c is false”, which fixes the value of every variable of c (DescriptiveComplexity.OneInToClique.ForceAt), and two occurrence vertices of distinct clauses are adjacent when the values they fix agree (DescriptiveComplexity.OneInToClique.Clash). A vertex whose own demands are contradictory – its clause holds another variable with both signs – is adjacent to nothing.

A singleton is a clique whatever the graph, so the threshold is kept away from 1: each clause c also has a clause vertex (cl, (c, c)), adjacent to every other clause vertex and to every consistent occurrence vertex, and the marked set has two elements per clause. A clique of that size holds every clause vertex and one occurrence vertex per clause (DescriptiveComplexity.OneInToClique.clique_slots), pairwise in agreement: an exactly-one model, and each model arises once (DescriptiveComplexity.OneInToClique.solEquiv). A clause with no literal has no occurrence vertex, so the count is 0, as it should be.

The formulas do not mention the order; as in the decision reduction, the packaging is ordered because both counts are of finite structures only.

The semantic side #

Choosing (x, s) as the one true literal of the clause c gives the variable y the value b, as read on the occurrence (y, t) of c: the literal (y, t) is true exactly when it is the chosen one.

Equations
Instances For
    Dependency graph

    The choices (c, x, s) and (c', x', s') disagree: some variable is made true by the first and false by the second.

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

      The formulas and the interpretation #

      DescriptiveComplexity.OneInToClique.ForceAt, as a formula: the signs are parameters.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Dependency graph
        noncomputable def DescriptiveComplexity.OneInToClique.clashF {α : Type} (s s' : Bool) (c x c' x' : α) :

        DescriptiveComplexity.OneInToClique.Clash, as a formula.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          noncomputable def DescriptiveComplexity.OneInToClique.soundF {α : Type} (s : Bool) (c x : α) :

          DescriptiveComplexity.OneInToClique.Sound, as a formula.

          Equations
          Instances For
            Dependency graph
            Dependency graph

            DescriptiveComplexity.OneInToClique.SepS, as a formula. The free variable (i, j) is the j-th component of the i-th vertex.

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

              The adjacency formulas of the interpretation, by tag.

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

                The interpretation producing, from an ordered CNF structure, the clique instance whose threshold-size cliques are its exactly-one models.

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

                  Characterizations of the interpreted relations #

                  Naming the vertices #

                  The vertex of tag t at the pair (c, x).

                  Equations
                  Instances For
                    Dependency graph

                    The two sides of the bijection #

                    The clique of an assignment: every clause vertex, and the occurrence vertices of its true literals.

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

                      The assignment of a clique: the variables some occurrence vertex of the clique makes true.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Dependency graph
                        @[reducible, inline]

                        The slots of a clique of the threshold size: two per clause.

                        Equations
                        Instances For
                          Dependency graph

                          Correctness #

                          The clique of an exactly-one assignment has the threshold size.

                          Dependency graph

                          A clique of the threshold size fills every slot: it holds every clause vertex, and an occurrence vertex of every clause.

                          Dependency graph

                          The assignment of a clique of the threshold size is an exactly-one model.

                          Dependency graph

                          A clique of the threshold size is the clique of its assignment.

                          Dependency graph

                          An exactly-one model is the assignment of its clique.

                          Dependency graph

                          The cliques of the threshold size of the interpreted graph are the exactly-one models of the CNF formula, bijectively.

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

                            #1-in-SAT reduces parsimoniously to #Clique.

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

                              #Clique is parsimoniously #P-complete, counting the cliques of exactly the threshold size. Registered in the Lax archive as Lax280166.CliqueComplete.sharpClique_sharpP_parsimoniousComplete.

                              Dependency graph

                              SharpClique is #P-complete: parsimoniously, hence under subtractive reductions.

                              Dependency graph