Tseitin formulas #
A finite multigraph on the vertices V with edges E, parallel edges and self-loops allowed, is
given by the map ends : E → Sym2 V sending each edge to its ends (Cslib.Multigraph). Given a
charge χ v for every vertex v, the Tseitin formula CNF.tseitinFormula ends χ
Tseitin Urquhart has a variable for each edge and says, for every
vertex v, that the parity of the edges at v is the charge of v. A self-loop at v would
count twice towards the parity of v, so it does not count at all; the parity of v is that of
the edges at v that are not self-loops (Multigraph.incidence), and the constraint is
expressed by the formula CNF.parityOnEq with a clause per assignment to those edges of the wrong
parity. A vertex with d edges other than self-loops thus contributes at most 2 ^ d clauses of
d literals each.
Every edge other than a self-loop is at exactly two vertices, so summing the constraints of all
vertices gives 0 = ∑ χ: if the total charge is odd, the Tseitin formula is unsatisfiable
(CNF.not_satisfiable_tseitinFormula). On a connected multigraph the converse holds, and more:
the constraints of all vertices but one are satisfiable, whatever the charges
(Tseitin.exists_forall_mem_parityOn_incidence_eq). Flipping the value of an edge flips the
parities of its two ends, so flipping the edges of a path flips the parities of its two ends only;
combining such flips moves the parities to any target, up to the vertex left out.
These facts underlie the resolution lower bounds for Tseitin formulas
(Cslib.Logic.PL.Tseitin.minBalancedCut_le_of_refutableInWidth,
Cslib.Logic.PL.Tseitin.exp_le_of_refutableInSize).
Main definitions #
Cslib.Logic.PL.CNF.tseitinFormula: the Tseitin formula of a multigraph with charges.
Main results #
Cslib.Logic.PL.CNF.eval_tseitinFormula_eq_true_iff: the semantics of Tseitin formulas.Cslib.Logic.PL.CNF.not_satisfiable_tseitinFormula: Tseitin formulas with odd total charge are unsatisfiable.Cslib.Logic.PL.CNF.satisfiable_tseitinFormula_iff: on a connected multigraph, the Tseitin formula is satisfiable exactly when the total charge is even.Cslib.Logic.PL.Tseitin.exists_forall_mem_parityOn_incidence_eq: on a connected multigraph, the constraints of the vertices of any set other than the set of all vertices are satisfiable.Cslib.Logic.PL.CNF.length_le_of_mem_tseitinFormula,Cslib.Logic.PL.CNF.length_tseitinFormula_le: the clauses of a Tseitin formula have at most as many literals as a vertex has edges, and there are at most|V| 2 ^ kof them when every vertex has at mostkedges.
References #
Parities at the vertices #
Flipping the value of an edge flips the parities at its ends, and only there.
The handshake argument: the parities at all vertices of an assignment to the edges add up
to 0, since every edge other than a self-loop is at exactly two vertices.
Satisfiable subsystems: on a connected multigraph, the constraints of the vertices of any set other than the set of all vertices are satisfiable, whatever the charges.
Tseitin formulas #
The Tseitin formula of the multigraph ends with charges χ
Tseitin Urquhart: a variable for each edge, and for each vertex v
the clauses of CNF.parityOnEq saying that the parity of the edges at v other than self-loops is
χ v.
Instances For
An assignment satisfies the Tseitin formula when its parity at every vertex is the charge.
Tseitin formulas with odd total charge are unsatisfiable Urquhart.
On a connected multigraph, the Tseitin formula is satisfiable exactly when the total charge is even Urquhart.
If every vertex has at most k edges other than self-loops, the clauses of the Tseitin
formula have at most k literals.
If every vertex has at most k edges other than self-loops, the Tseitin formula has at most
|V| 2 ^ k clauses.
The variables of a Tseitin formula are edges.