Documentation

DescriptiveComplexity.Problems.CycleCover.Defs

#Cycle Cover: the permanent of a 0-1 matrix #

A cycle cover of a digraph is a set of arcs leaving every vertex exactly once and entering every vertex exactly once: a permutation of the vertices along the arcs. The number of cycle covers is the permanent of the adjacency matrix (DescriptiveComplexity.sharpCycleCover_eq_bperm), and the number of perfect matchings of the bipartite graph whose two sides are two copies of the vertices, joined along the arcs. This is the problem Valiant 1979 proved #P-complete; its completeness is in DescriptiveComplexity.Problems.CycleCover.Completeness.

DescriptiveComplexity.SharpCycleCover is in #P (DescriptiveComplexity.sharpCycleCover_mem_sharpP): the cover is a guessed binary relation, checked first-order to be a bijection along the arcs.

def DescriptiveComplexity.IsCycleCover {A : Type} (R F : A → A → Prop) :

F is a cycle cover of the relation R: a bijection of the universe along R.

Equations
Instances For
    Dependency graph
    noncomputable def DescriptiveComplexity.IsCycleCover.toFun {A : Type} {R F : A → A → Prop} (h : IsCycleCover R F) (x : A) :
    A

    A cycle cover, as a permutation: x goes to the unique y with F x y.

    Equations
    Instances For
      Dependency graph
      theorem DescriptiveComplexity.IsCycleCover.rel_toFun {A : Type} {R F : A → A → Prop} (h : IsCycleCover R F) (x : A) :
      F x (h.toFun x)
      Dependency graph

      The kernel #

      The relation variables of the block.

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

        The arc symbol over the sum.

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

          The vocabulary of the kernel: the instance expanded by the block.

          Equations
          Instances For
            Dependency graph
            Dependency graph
            Dependency graph

            The existential block of the Σ₁ definition: the cover, guessed as a binary relation.

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

              The first-order kernel: the guessed relation leaves and enters every element exactly once, along the arcs.

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

                A binary relation, as an assignment of the block guessing the cover.

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

                  The number of cycle covers is the number of witnesses of the kernel.

                  Dependency graph

                  The problem #

                  #Cycle Cover: the number of cycle covers of a digraph, i.e., the permanent of its adjacency matrix.

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

                    #Cycle Cover is the permanent of the adjacency matrix.

                    Dependency graph
                    Dependency graph