Sparsification -- the branching step #
The sparsification procedure of Impagliazzo, Paturi and Zane, in the presentation of Calabro, Impagliazzo and Paturi ("A duality between clause width and clause density for SAT", CCC 2006; Calabro's thesis, UCSD 2009, Chapter 5).
Clause sets are kept reduced: no clause strictly contains another (reduce). For thresholds
θ, a set H of h ≥ 1 literals is a heavy heart for clause size c > h when at least
θ (c - h) clauses of size c contain it (Heavy); those clauses form its flower. A clause
set without heavy hearts is sparse. Otherwise the procedure picks a heavy heart with c as
small as possible and then h as large as possible (Choice), and branches: either H is
satisfied (add the clause H, the heart branch), or it is not, and then every petal C \ H
of the flower is satisfied (add the petals, the petal branch). Both branches are reduced again.
This file proves the local facts: the two branches cover the solutions and only lose solutions
of the original clause set, they preserve the width and reducedness, and the potential
∑_{C ∈ ψ} 2 ^ |C| strictly decreases, so the procedure terminates.
Remove every clause that strictly contains another clause.
Equations
- Complexity.ClauseSet.Sparsify.reduce ψ = {C ∈ ψ | ∀ D ∈ ψ, ¬D ⊂ C}
Instances For
No clause strictly contains another.
Equations
- Complexity.ClauseSet.Sparsify.Reduced ψ = ∀ C ∈ ψ, ∀ D ∈ ψ, ¬D ⊂ C
Instances For
H is a heavy heart for clause size c: 1 ≤ |H| < c and at least θ (c - |H|)
clauses of size c contain H.
Equations
- Complexity.ClauseSet.Sparsify.Heavy θ ψ c H = (1 ≤ H.card ∧ H.card < c ∧ θ (c - H.card) ≤ Finset.card (Complexity.ClauseSet.Sparsify.flower ψ c H))
Instances For
A clause set is sparse for the thresholds θ when it has no heavy heart.
Equations
- Complexity.ClauseSet.Sparsify.Sparse θ ψ = ∀ (c : ℕ) (H : Finset (Complexity.Literal N)), ¬Complexity.ClauseSet.Sparsify.Heavy θ ψ c H
Instances For
A valid branching choice: a heavy heart with the smallest clause size, and among those the largest heart.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The petals C \ H of the flower of H.
Equations
- Complexity.ClauseSet.Sparsify.petals ψ c H = Finset.image (fun (x : Finset (Complexity.Literal N)) => x \ H) (Complexity.ClauseSet.Sparsify.flower ψ c H)
Instances For
The potential ∑_{C ∈ ψ} 2 ^ |C|, which every branching step decreases.
Equations
- Complexity.ClauseSet.Sparsify.potential ψ = ∑ C ∈ ψ, 2 ^ C.card
Instances For
Reduction #
A clause of a reduced set that is not in the reduction of a larger set strictly contains one of the added clauses.
Flowers, petals and choices #
Every introduced clause is strictly contained in a clause of the flower.
The children of a branching node #
The branches cover. A solution of the parent satisfying the heart is a solution of the heart child; a solution falsifying it is a solution of the petal child.