Documentation

DescriptiveComplexity.Problems.Cvp.Hardness.Wiring

The drawn circuit, gate by gate #

What the interpretation of DescriptiveComplexity.Problems.Cvp.Hardness.Interp marks and wires, read back as statements about named pointsbdPt, hdPt … – rather than about raw tagged tuples. Two kinds of lemma are needed downstream and both are proved here once:

Everything is stated relative to a minimum m and a maximum M of the universe, which a finite nonempty linear order supplies; the coordinates a tag does not use are pinned to m.

The points #

The constant 1 gate.

Equations
Instances For
    Dependency graph

    The constant 0 gate.

    Equations
    Instances For
      Dependency graph

      The conjunction chain of the clause c up to the literal y, at stage s.

      Equations
      Instances For
        Dependency graph

        The conjunction chain of the clause c up to y, read at the last stage.

        Equations
        Instances For
          Dependency graph

          The propagation chain forcing x from the clauses up to c, at stage s.

          Equations
          Instances For
            Dependency graph

            The goal chain over the clauses up to c.

            Equations
            Instances For
              Dependency graph

              The marks #

              Only the canonical tt point is a constant 1.

              Dependency graph

              The conjunction gates are the two conjunction chains.

              Dependency graph

              The disjunction gates are the propagation chain and the goal chain.

              Dependency graph
              Dependency graph

              The output is the top of the goal chain.

              Dependency graph

              The wires #

              Each gate names its left and its right input. The mpr direction builds a derivation, the mp direction inverts one; the constants have no input at all.

              theorem DescriptiveComplexity.CvpDraw.eq_pad {A : Type} [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) {w : Fin 3A} (h0 : ∀ (a : A), w 0 a) (h1 : ∀ (a : A), w 1 a) (h2 : ∀ (a : A), w 2 a) :
              w = fun (x : Fin 3) => m

              Being pinned to the minimum at every coordinate identifies a padded point.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.isBot_iff_eq {A : Type} [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) (x : A) :
              (∀ (a : A), x a) x = m

              In a linear order with a minimum m, being below everything is being m: the rewrite that turns the padding conditions into equations.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.left_bd {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) (w : Fin 3A) (q : cvpInterp.Map A) :
              FirstOrder.Language.Structure.RelMap FirstOrder.Language.circLeft ![(CvpTag.bd, w), q] (∀ (a : A), w 1 a) q = ttPt m ∃ (y' : A), y' w 1 q = bdPt (w 0) y' (w 2)

              The left input of a conjunction chain: the constant 1 at the bottom of the walk, the previous link otherwise.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.isTop_iff_eq {A : Type} [LinearOrder A] {M : A} (hM : ∀ (a : A), a M) (x : A) :
              (∀ (a : A), a x) x = M

              Dually, being above everything is being the maximum.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.left_bdTop {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) (w : Fin 3A) (q : cvpInterp.Map A) :
              FirstOrder.Language.Structure.RelMap FirstOrder.Language.circLeft ![(CvpTag.bdTop, w), q] (∀ (a : A), w 2 a) (∀ (a : A), w 1 a) q = ttPt m (∀ (a : A), w 2 a) ∃ (y' : A), y' w 1 q = bdTopPt m (w 0) y'

              The left input of the top-stage conjunction chain.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.left_hd {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) (w : Fin 3A) (q : cvpInterp.Map A) :
              FirstOrder.Language.Structure.RelMap FirstOrder.Language.circLeft ![(CvpTag.hd, w), q] (∀ (a : A), w 1 a) q = ffPt m ∃ (c' : A), c' w 1 q = hdPt (w 0) c' (w 2)

              The left input of the propagation chain: the constant 0 at the bottom of the walk over clauses, the previous link otherwise.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.left_gl {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) (w : Fin 3A) (q : cvpInterp.Map A) (h1 : ∀ (a : A), w 1 a) (h2 : ∀ (a : A), w 2 a) :

              The left input of the goal chain. At the bottom of the walk it is the constant 1 exactly when the instance is not Horn, which is what makes a non-Horn instance a yes-instance outright.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.right_bd {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) {M : A} (hM : ∀ (a : A), a M) (w : Fin 3A) (q : cvpInterp.Map A) :
              FirstOrder.Language.Structure.RelMap FirstOrder.Language.circRight ![(CvpTag.bd, w), q] ¬SatOcc.NegIn (w 0) (w 1) q = ttPt m SatOcc.NegIn (w 0) (w 1) (∀ (a : A), w 2 a) q = ffPt m SatOcc.NegIn (w 0) (w 1) ∃ (s' : A), s' w 2 q = hdPt (w 1) M s'

              The right input of a conjunction chain: the constant 1 when the literal is not a negative literal of the clause, the constant 0 at the bottom stage, and the propagation gate of the previous stage otherwise.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.right_bdTop {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) {M : A} (hM : ∀ (a : A), a M) (w : Fin 3A) (q : cvpInterp.Map A) (h2 : ∀ (a : A), w 2 a) :

              The right input of the top-stage conjunction chain reads the propagation gate at the last stage.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.right_hd {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) {M : A} (hM : ∀ (a : A), a M) (w : Fin 3A) (q : cvpInterp.Map A) :

              The right input of the propagation chain: the body of the clause at hand when that clause has the right positive literal, the constant 0 otherwise.

              Dependency graph
              theorem DescriptiveComplexity.CvpDraw.right_gl {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {m : A} (hm : ∀ (a : A), m a) {M : A} (hM : ∀ (a : A), a M) (w : Fin 3A) (q : cvpInterp.Map A) (h1 : ∀ (a : A), w 1 a) (h2 : ∀ (a : A), w 2 a) :

              The right input of the goal chain: the top-stage body of the clause at hand when it is a goal clause, the constant 0 otherwise.

              Dependency graph