#3-Colorability is one-call #P-complete #
The gadget graph of DescriptiveComplexity.Problems.ThreeColorability.CountGadget,
drawn over the ordered expansion of a CNF formula
(DescriptiveComplexity.SatToColCount.drawInterp): its universe is the set of
vertices of the gadget graph (DescriptiveComplexity.SatToColCount.drawEquiv),
its edges those of the gadget graph read in both directions. The number of
proper 3-colorings is 6 · 8 ^ g times the number of models, g the number of
non-first occurrences, a definable cardinality: one division recovers #SAT
(DescriptiveComplexity.sharpSat_oneCall_sharpThreeCol).
Tags #
The tags of the drawing.
- pal
(p : Pal)
: CTag
A palette vertex, at the pair of least elements.
- lit
(s : Bool)
: CTag
The literal of sign
sof a variablex, at(x, x). - gate
(s b : Bool)
: CTag
The Boolean vertex of polarity
bof the gate of the occurrence of signsofxinc, at(c, x). - spoil : CTag
The spoiler of an empty clause
c, at(c, c). - tri
(s : Bool)
(j r : Fin 3)
: CTag
The vertex
rof the trianglejof the gate of the occurrence of signsofxinc, at(c, x).
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.pal p) (DescriptiveComplexity.SatToColCount.CTag.lit s) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.pal p) (DescriptiveComplexity.SatToColCount.CTag.gate s b) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.pal p) DescriptiveComplexity.SatToColCount.CTag.spoil = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.pal p) (DescriptiveComplexity.SatToColCount.CTag.tri s j r) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.lit s) (DescriptiveComplexity.SatToColCount.CTag.pal p) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.lit s) (DescriptiveComplexity.SatToColCount.CTag.gate s_1 b) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.lit s) DescriptiveComplexity.SatToColCount.CTag.spoil = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.lit s) (DescriptiveComplexity.SatToColCount.CTag.tri s_1 j r) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.gate s b) (DescriptiveComplexity.SatToColCount.CTag.pal p) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.gate s b) (DescriptiveComplexity.SatToColCount.CTag.lit s_1) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.gate s b) DescriptiveComplexity.SatToColCount.CTag.spoil = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.gate s b) (DescriptiveComplexity.SatToColCount.CTag.tri s_1 j r) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq DescriptiveComplexity.SatToColCount.CTag.spoil (DescriptiveComplexity.SatToColCount.CTag.pal p) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq DescriptiveComplexity.SatToColCount.CTag.spoil (DescriptiveComplexity.SatToColCount.CTag.lit s) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq DescriptiveComplexity.SatToColCount.CTag.spoil (DescriptiveComplexity.SatToColCount.CTag.gate s b) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq DescriptiveComplexity.SatToColCount.CTag.spoil DescriptiveComplexity.SatToColCount.CTag.spoil = isTrue ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq DescriptiveComplexity.SatToColCount.CTag.spoil (DescriptiveComplexity.SatToColCount.CTag.tri s j r) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.tri s j r) (DescriptiveComplexity.SatToColCount.CTag.pal p) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.tri s j r) (DescriptiveComplexity.SatToColCount.CTag.lit s_1) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.tri s j r) (DescriptiveComplexity.SatToColCount.CTag.gate s_1 b) = isFalse ⋯
- DescriptiveComplexity.SatToColCount.instDecidableEqCTag.decEq (DescriptiveComplexity.SatToColCount.CTag.tri s j r) DescriptiveComplexity.SatToColCount.CTag.spoil = isFalse ⋯
Instances For
Dependency graph
The tags, as a sum type.
Equations
- (DescriptiveComplexity.SatToColCount.CTag.pal p).code = Sum.inl p
- (DescriptiveComplexity.SatToColCount.CTag.lit s).code = Sum.inr (Sum.inl s)
- (DescriptiveComplexity.SatToColCount.CTag.gate s b).code = Sum.inr (Sum.inr (Sum.inl (s, b)))
- DescriptiveComplexity.SatToColCount.CTag.spoil.code = Sum.inr (Sum.inr (Sum.inr (Sum.inl ())))
- (DescriptiveComplexity.SatToColCount.CTag.tri s j r).code = Sum.inr (Sum.inr (Sum.inr (Sum.inr (s, j, r))))
Instances For
Dependency graph
Dependency graph
Dependency graph
Points #
The pair (c, x) is a point of tag t.
Equations
- DescriptiveComplexity.SatToColCount.CDom (DescriptiveComplexity.SatToColCount.CTag.pal p) x✝¹ x✝ = ((∀ (y : A), x✝¹ ≤ y) ∧ x✝ = x✝¹)
- DescriptiveComplexity.SatToColCount.CDom (DescriptiveComplexity.SatToColCount.CTag.lit s) x✝¹ x✝ = (x✝ = x✝¹ ∧ DescriptiveComplexity.SatOccurs A x✝¹)
- DescriptiveComplexity.SatToColCount.CDom (DescriptiveComplexity.SatToColCount.CTag.gate s b) x✝¹ x✝ = DescriptiveComplexity.SatOcc.Chained x✝¹ x✝ s
- DescriptiveComplexity.SatToColCount.CDom DescriptiveComplexity.SatToColCount.CTag.spoil x✝¹ x✝ = (x✝ = x✝¹ ∧ DescriptiveComplexity.SatOcc.EmptyCl x✝¹)
- DescriptiveComplexity.SatToColCount.CDom (DescriptiveComplexity.SatToColCount.CTag.tri s j r) x✝¹ x✝ = DescriptiveComplexity.SatOcc.Chained x✝¹ x✝ s
Instances For
Dependency graph
The least element.
Instances For
Dependency graph
Dependency graph
The formulas #
x is a variable of the formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
c is the least element.
Equations
Instances For
Dependency graph
The domain of each tag.
Equations
- DescriptiveComplexity.SatToColCount.domF (DescriptiveComplexity.SatToColCount.CTag.pal p) = DescriptiveComplexity.SatToColCount.isMinF 0 ⊓ DescriptiveComplexity.SatOcc.eqF 1 0
- DescriptiveComplexity.SatToColCount.domF (DescriptiveComplexity.SatToColCount.CTag.lit s) = DescriptiveComplexity.SatOcc.eqF 1 0 ⊓ DescriptiveComplexity.SatToColCount.occursF 0
- DescriptiveComplexity.SatToColCount.domF (DescriptiveComplexity.SatToColCount.CTag.gate s b) = DescriptiveComplexity.SatOcc.chainedF s 0 1
- DescriptiveComplexity.SatToColCount.domF DescriptiveComplexity.SatToColCount.CTag.spoil = DescriptiveComplexity.SatOcc.eqF 1 0 ⊓ DescriptiveComplexity.SatOcc.emptyClF 0
- DescriptiveComplexity.SatToColCount.domF (DescriptiveComplexity.SatToColCount.CTag.tri s j r) = DescriptiveComplexity.SatOcc.chainedF s 0 1
Instances For
Dependency graph
What a triangle vertex is attached to.
- z : OKind
The gate output.
- negP : OKind
The negated predecessor.
- negL : OKind
The negated literal.
- palF : OKind
The palette
F.
Instances For
Dependency graph
What the vertex r of the triangle j of a gate is attached to.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The point of tag t' at (1, ·) is what a triangle vertex of the gate
of sign s at (0, ·) is attached to, of kind k.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SatToColCount.outerF s DescriptiveComplexity.SatToColCount.OKind.palF (DescriptiveComplexity.SatToColCount.CTag.pal DescriptiveComplexity.SatToColCount.Pal.F) = ⊤
- DescriptiveComplexity.SatToColCount.outerF s x✝¹ x✝ = ⊥
Instances For
Dependency graph
The edges, in one direction, between the point of tag t at (0, ·)
and the point of tag t' at (1, ·).
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SatToColCount.dirF (DescriptiveComplexity.SatToColCount.CTag.pal p) (DescriptiveComplexity.SatToColCount.CTag.pal q) = if p = q then ⊥ else ⊤
- DescriptiveComplexity.SatToColCount.dirF (DescriptiveComplexity.SatToColCount.CTag.lit s) (DescriptiveComplexity.SatToColCount.CTag.pal DescriptiveComplexity.SatToColCount.Pal.B) = ⊤
- DescriptiveComplexity.SatToColCount.dirF (DescriptiveComplexity.SatToColCount.CTag.gate s b) (DescriptiveComplexity.SatToColCount.CTag.pal DescriptiveComplexity.SatToColCount.Pal.B) = ⊤
- DescriptiveComplexity.SatToColCount.dirF DescriptiveComplexity.SatToColCount.CTag.spoil (DescriptiveComplexity.SatToColCount.CTag.pal p) = ⊤
- DescriptiveComplexity.SatToColCount.dirF x✝¹ x✝ = ⊥
Instances For
Dependency graph
Realization #
Dependency graph
Dependency graph
Dependency graph
The drawing #
Exchanging the two points of an edge formula.
Instances For
Dependency graph
The drawing of the gadget graph: the edges in both directions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The number of proper 3-colorings of the drawing is that of the gadget graph.
Dependency graph
The reduction #
The number of gates, as a polynomial term: the non-first occurrences of either sign.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The gates of one sign.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The gates, by sign.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
#SAT reduces to #3-Colorability with one call: the count of the
drawing is divided by 6 · 8 ^ g, g the number of non-first
occurrences.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
#3-Colorability is one-call #P-complete.
Registered in the Lax archive as
Lax859101.ColoringComplete.sharpThreeCol_sharpP_oneCallComplete.