Documentation

DescriptiveComplexity.Problems.Cvp.Hardness.Interp

HORN-SAT to CVP: the circuit that runs unit propagation #

The interpretation built here draws, inside a Language.sat-instance, the monotone circuit that evaluates unit propagation and reports failure of Horn satisfiability. Reducing from the complement is what keeps the circuit monotone – a circuit that reports satisfiability would have to negate the propagation – and costs nothing, since polynomial time is closed under complement (DescriptiveComplexity.piP_zero_eq), so hardness for HORNSATᶜ is hardness for HORNSAT; that step is taken in DescriptiveComplexity.Problems.Cvp.Hardness.

The layout #

Unit propagation is a fixed point, and a circuit is acyclic, so the stages are unrolled: the third coordinate of a gate is an element of the universe read as a stage number through its rank in the order (DescriptiveComplexity.orank), and Nat.card A stages suffice (DescriptiveComplexity.forced_forcedIn_card). Two more chains turn the two unbounded quantifiers of one propagation round into fan-in two, each walking the order one cover at a time:

Junk is disposed of in the usual way: the coordinates a tag does not use are pinned to the minimum, and the copies with other coordinates carry no mark and no wire, so they derive nothing and are wired to nothing.

The tags #

The tags of the interpretation: the two constants, the two conjunction chains, the propagation chain and the goal chain.

  • tt : CvpTag

    The constant 1 gate.

  • ff : CvpTag

    The constant 0 gate.

  • bd : CvpTag

    bd c y s: all negative literals of c up to y are forced within orank s rounds.

  • bdTop : CvpTag

    bdTop c y: the same, read at the last stage.

  • hd : CvpTag

    hd x c s: some clause up to c forces x within orank s + 1 rounds.

  • gl : CvpTag

    gl c: some clause up to c is a falsified goal clause.

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

    The formula builders #

    The occurrence builders of DescriptiveComplexity.SatOcc supply clF, posF, negF and eqF over the ordered expansion; only three builders are new. All are parameterized by the variables they speak about, so that the same builder serves the unary marks (variables (0, j)) and the binary wires (variables (0, j) for the gate and (1, j) for its input).

    c is a clause with no positive literal”, i.e., a goal clause: the shape that makes an instance unsatisfiable once its negative literals are forced.

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

      The Horn condition, as a formula in any variable context: no clause has two distinct positive literals.

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

        All three coordinates of the i-th argument are the minimum: the canonical padding of a tag that does not use them.

        Equations
        Instances For
          Dependency graph

          The interpretation #

          The unit-propagation circuit, drawn inside a Language.sat-instance over the ordered expansion.

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

            Realization of the two new builders #

            theorem DescriptiveComplexity.CvpInterp.realize_noPosClF {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {α : Type} {v : αA} (c : α) :
            (noPosClF c).Realize v SatOcc.IsCl (v c) ∀ (x : A), ¬SatOcc.PosIn (v c) x

            A goal clause is a clause with no positive literal.

            Dependency graph

            The Horn condition says what it should.

            Dependency graph