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.
On a connected multigraph, the parities at any two vertices u and w, and nowhere else, can
be flipped: some assignment has parity 1 exactly at u and w (and nowhere if u = w).
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.
An assignment satisfying the constraints of all vertices has even total charge.
On a connected multigraph, for every vertex u some assignment satisfies the constraints of
all vertices except possibly u: its parity at v is χ v, flipped at u when the total charge
is odd.
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
A clause belongs to tseitinFormula ends χ iff it belongs to the parity constraint
parityOnEq (Multigraph.incidence ends v) (χ v) of some vertex v.
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.