Sparsification -- the analysis of one branch #
A Path records one branch of the sparsification procedure: nodes ψ₀, ψ₁, …, ψ_L where each
ψ_{i+1} is the heart or the petal child of ψ_i for a valid choice. Following Calabro,
Impagliazzo and Paturi, the clauses a step introduces (its heart, or its petals) are new: they
occur in no earlier node, survive into the next node, and are distinct across steps. So the length
of a branch is at most the number of introduced clauses.
A new clause of size c that does not survive to the last node is eliminated by a smaller
clause introduced later. The key estimate (card_newContaining_lt, Calabro's Lemma 5.9) is that
fewer than 2 θ (c - h) new clauses of size c containing a fixed clause of size h < c can be
present at once. When the last node is sparse, it has fewer than 2 N θ (c - 1) clauses of
size c. Together these bound the number of introduced clauses of size c by
2 N θ (c - 1) + ∑_{h < c} 2 θ (c - h) · #(introduced clauses of size h)
(card_introducedOfCard_le). Each petal step with petals of size j introduces at least θ j
clauses of size j (mul_card_petalSteps_le).
Every clause of α is contained in a clause of β.
Equations
- Complexity.ClauseSet.Sparsify.Refines α β = ∀ a ∈ α, ∃ b ∈ β, a ⊆ b
Instances For
All clauses introduced along the branch.
Equations
- P.introduced = (Finset.range P.len).biUnion P.introAt
Instances For
The introduced clauses of size c.
Equations
- P.introducedOfCard c = {x ∈ P.introduced | x.card = c}
Instances For
Calabro's Lemma 5.9. Fewer than 2 θ (c - |b|) new clauses of size c containing a fixed
clause b with 1 ≤ |b| < c are present in any node.
Counting introduced clauses. If the last node is sparse, the introduced clauses of size
c ≥ 1 number at most 2 N θ (c - 1) + ∑_{1 ≤ h < c} 2 θ (c - h) · #(introduced, size h).