The satisfiability coding lemma #
The coding lemma of Paturi, Pudlák and Zane [PPZ99], with exact sums over all
orders of the variables in place of probabilities. Fix a formula φ in conjunctive normal form
over N variables and an order σ of the variables. A variable v is forced on a solution x
(CNF.forced) when some clause contains the literal of v true under x and all its other
literals are on earlier variables and false under x. The words agreeing with a solution x
off its forced variables are disjoint for distinct solutions: at the first variable where two
solutions differ, a clause forcing it in one of them is false under the other
(CNF.disjoint_agreeOffForced). Hence ∑ₓ 2 ^ |forced σ x| ≤ 2 ^ N for every order
(CNF.sum_two_pow_card_forced_le), and by the inequality of arithmetic and geometric means the
same holds with the average number of forced variables over all orders in the exponent
(CNF.sum_two_rpow_average_card_forced_le).
If every clause has at most k literals and x is isolated in direction i (flipping bit i
of x gives no solution), some clause is critical for i (CNF.exists_critical), and i is
forced whenever it comes last among the variables of that clause, for at least a 1 / k fraction
of the orders (CNF.factorial_le_mul_card_filter_mem_forced, from
Equiv.Perm.card_mul_card_filter_forall_le_eq_factorial). Hence
∑ₓ 2 ^ (ι(x) / k) ≤ 2 ^ N, where ι(x) is the number of directions in which x is isolated
(CNF.sum_two_rpow_card_isolated_div_le), and a k-CNF has at most 2 ^ ((1 - 1 / k) N)
solutions isolated in every direction (CNF.card_isolatedInputs_mul_two_rpow_le).
Main definitions #
Cslib.Logic.PL.CNF.forced: the variables forced on a solution for an order of the variables.
Main results #
Cslib.Logic.PL.CNF.sum_two_pow_card_forced_le: the coding bound for one order.Cslib.Logic.PL.CNF.sum_two_rpow_average_card_forced_le: the coding lemma.Cslib.Logic.PL.CNF.sum_two_rpow_card_isolated_div_le: the coding lemma fork-CNFs.Cslib.Logic.PL.CNF.card_isolatedInputs_mul_two_rpow_le: few isolated solutions.
References #
The clause c forces v on x for the order σ: it contains the literal of v true under
x, and all its other literals are on variables before v (in the order σ) and false under
x. This is the deletion rule of Paturi, Pudlák and Zane: such a clause is critical for v at x
and v comes last among its variables, so the decoder meets it as a unit clause on v. A clause
also containing the literal of v false under x forces nothing, as the decoder would not see a
unit clause there; the definition rules it out, since that literal would need σ v < σ v.
Instances For
The variables forced on x for the order σ: those forced by some clause.
Instances For
The words agreeing with x outside the variables forced on x.
Instances For
The words agreeing with distinct solutions off their forced variables are disjoint: at the
first variable, in the order σ, where two solutions differ, one of them is forced, and the clause
forcing it is false under the other solution.
Isolated directions are forced often #
The clause c is critical for the direction i at x: it contains the literal of i true
under x, and all its other literals are on other variables and false under x. Flipping bit i
of x falsifies a critical clause.
Instances For
A clause with v variables is critical for at most v 2 ^ (N - v) pairs of an input and a
direction.
Isolated directions are forced often. If every clause of φ has at most k literals,
every direction i in which a solution x is isolated is forced for at least a 1 / k fraction
of the orders.
Averaging over the orders #
The coding lemma Paturi, Pudlák and Zane, Lemma 1 and Fact 3: with
E(x) the average, over all N! orders, of the number of variables forced on a solution x, the
solutions satisfy ∑ₓ 2 ^ E(x) ≤ 2 ^ N.
The coding lemma for formulas of width k
Paturi, Pudlák and Zane, Lemma 2: if every clause has at most k ≥ 1
literals, the solutions x satisfy ∑ₓ 2 ^ (ι(x) / k) ≤ 2 ^ N, where ι(x) is the number of
directions in which x is isolated.
Few isolated solutions Paturi, Pudlák and Zane, Lemma 4: a formula
whose clauses have at most k ≥ 1 literals has at most 2 ^ ((1 - 1 / k) N) solutions isolated in
every direction.
Weights of solutions #
The weighted coding lemma, after Paturi, Pudlák and Zane, Lemma 5:
the solutions x of any formula satisfy ∑ₓ 2 ^ w(x) ≤ 2 ^ N, where the weight
w(x) = ∑ᵢ 1 / critWidth φ x i sums, over the directions in which x is isolated, the inverse
number of variables of a shortest critical clause.
Few solutions of large weight Paturi, Pudlák and Zane, Lemma 5: at
most 2 ^ (N - μ) solutions have weight at least μ.