Documentation

DescriptiveComplexity.Problems.Feedback.Reductions

Hardness of the feedback problems #

Two quantifier-free first-order reductions, both of dimension 1:

Splitting, without ever manipulating a cycle #

The correctness of the splitting is where the certificate form of acyclicity (DescriptiveComplexity.acyclicRel_iff_exists_order) pays off: both directions build a strict partial order out of another one, and no cycle is ever decomposed.

Vertex Cover reduces to Feedback Vertex Set #

The symmetrizing interpretation: adjacency becomes off-diagonal adjacency in either direction – so every edge becomes a 2-cycle – and marks are kept.

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

    The symmetrizing interpretation is quantifier-free.

    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph

    Vertex Cover FO-reduces to Feedback Vertex Set, by symmetrizing the adjacency relation: every edge becomes a 2-cycle, so the feedback vertex sets are exactly the vertex covers.

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

      Feedback Vertex Set reduces to Feedback Arc Set #

      The vertex-splitting interpretation: the tag true carries the in-copy of a vertex and the tag false its out-copy.

      The vertex-splitting interpretation: v becomes an in-copy and an out-copy joined by an internal arc, an arc (u, v) becomes the crossing arc from u's out-copy to v's in-copy, and the marked relation marks the internal arcs of the marked vertices.

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

        The vertex-splitting interpretation is quantifier-free.

        Dependency graph

        The two copies of a vertex #

        The in-copy of a vertex in the split digraph.

        Equations
        Instances For
          Dependency graph

          The out-copy of a vertex in the split digraph.

          Equations
          Instances For
            Dependency graph
            Dependency graph
            theorem DescriptiveComplexity.inPt_eta {A : Type} (w : Fin 1A) :
            (true, w) = inPt (w 0)
            Dependency graph
            theorem DescriptiveComplexity.outPt_eta {A : Type} (w : Fin 1A) :
            (false, w) = outPt (w 0)
            Dependency graph

            The arcs and marks of the split digraph #

            Dependency graph
            Dependency graph
            Dependency graph
            Dependency graph
            Dependency graph
            Dependency graph
            Dependency graph
            Dependency graph

            The interface used by the correctness proofs #

            Rather than the raw characterizations, the proofs below use the two arc constructors and the two “only these” lemmas, which never mention the shape of an element of the interpreted universe.

            The internal arc of a vertex.

            Dependency graph

            The crossing arc attached to an arc of the input.

            Dependency graph
            theorem DescriptiveComplexity.split_adj_cases {A : Type} [FirstOrder.Language.markedGraph.Structure A] {p q : splitInterp.Map A} (h : MAGAdj p q) :
            (∃ (v : A), p = inPt v q = outPt v) ∃ (u : A) (v : A), p = outPt u q = inPt v MGAdj u v

            The arcs of the split digraph are the internal and the crossing ones.

            Dependency graph

            The marked arcs of the split digraph are the internal arcs of the marked vertices.

            Dependency graph

            The internal arc of a marked vertex is marked.

            Dependency graph

            Counting on the internal arcs #

            theorem DescriptiveComplexity.ncard_internal_eq {A : Type} (P : AProp) (Q : splitInterp.Map A × splitInterp.Map AProp) (hshape : ∀ (pq : splitInterp.Map A × splitInterp.Map A), Q pq∃ (v : A), pq = (inPt v, outPt v)) (hP : ∀ (v : A), Q (inPt v, outPt v) P v) :

            A relation on the split universe that only holds of internal arcs encodes the same number as the set of vertices whose internal arc it holds of.

            Dependency graph

            Correctness of the splitting #

            def DescriptiveComplexity.cutArcs {A : Type} (C : AProp) (p q : splitInterp.Map A) :

            The arcs cut by the interpretation for a set C of vertices: the internal arcs of the members of C.

            Equations
            Instances For
              Dependency graph
              noncomputable def DescriptiveComplexity.splitLvl {A : Type} (C : AProp) (p : splitInterp.Map A) :

              The level of a copy in the order built from a feedback vertex set: the out-copies of removed vertices go to the bottom, their in-copies to the top, everything else in between.

              Equations
              Instances For
                Dependency graph
                noncomputable def DescriptiveComplexity.splitLt {A : Type} (C : AProp) (Lt : AAProp) (p q : splitInterp.Map A) :

                The order on the split digraph built from a certificate order of the input: levels first, then the input order, with the in-copy of a vertex just below its out-copy.

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

                  Correctness of the vertex splitting: a graph has a feedback vertex set at most as large as its marked set iff the split digraph has a feedback arc set at most as large as its marked relation.

                  Dependency graph

                  Feedback Vertex Set FO-reduces to Feedback Arc Set, by vertex splitting: deleting a vertex becomes cutting its internal arc.

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