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:
bd c y s– a conjunction chain: every negative literaly' ≤ yof the clausecis forced withinorank srounds. Its right input is the gatehd y' ⊤ (pred s)whenyis a negative literal ofc, and the constant1when it is not: the wiring testsnegIn, which is what an interpretation may do and a fixed circuit may not;hd x c s– a disjunction chain: some clausec' ≤ chasxas its positive literal and all its negative literals forced withinorank srounds. Atc = ⊤this is one propagation round, sohd x ⊤ sis “xis forced withinorank s + 1rounds”;bdTop c y– the same conjunction chain read at the last stage, needed becausebd c y sreads the forced set one stage belowsand the goal clause has to be tested against the fixed point itself;gl c– a disjunction chain over the goal clauses: some clausec' ≤ chas no positive literal and all its negative literals forced. Its base carries the Horn condition: atc = ⊥the chain starts from the constant1when the instance is not Horn, so a non-Horn instance is a yes-instance outright, and from the constant0when it is. The output gate isgl ⊤.
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
1gate. - ff : CvpTag
The constant
0gate. - bd : CvpTag
bd c y s: all negative literals ofcup toyare forced withinorank srounds. - bdTop : CvpTag
bdTop c y: the same, read at the last stage. - hd : CvpTag
hd x c s: some clause up tocforcesxwithinorank s + 1rounds. - gl : CvpTag
gl c: some clause up tocis a falsified goal clause.
Instances For
Dependency graph
Dependency graph
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 #
A goal clause is a clause with no positive literal.
Dependency graph
The Horn condition says what it should.