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 [CIP06], 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, 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 and the variables of the root are among N given
ones, 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).
Main definitions #
Cslib.Logic.PL.ClauseSet.Sparsification.Path: a branch of the procedure.Cslib.Logic.PL.ClauseSet.Sparsification.Refines: every clause is contained in another.
Main results #
Cslib.Logic.PL.ClauseSet.Sparsification.Path.len_le_card_introduced: a branch is no longer than its number of introduced clauses.Cslib.Logic.PL.ClauseSet.Sparsification.Path.card_newContaining_lt: few new clauses contain a fixed clause.Cslib.Logic.PL.ClauseSet.Sparsification.Path.card_introducedOfCard_le: the recursive bound on the introduced clauses.Cslib.Logic.PL.ClauseSet.Sparsification.Path.mul_card_petalSteps_le: petal steps introduce many clauses.
References #
One branch of the sparsification procedure, with len branching steps.
- len : ℕ
The number of branching steps.
The clause set at each node.
The clause size of the flower chosen at each node.
The heart chosen at each node.
The branch taken at each node:
falsefor the heart,truefor the petals.
Instances For
Every clause of α is contained in a clause of β.
Instances For
In a sparse clause set, at most θ (c - 1) clauses of size c ≥ 1 contain a given
literal.
The clauses introduced by step i.
Instances For
All clauses introduced along the branch.
Instances For
The introduced clauses of size c.
Instances For
The petal steps whose petals have size j.
Instances For
A branch is no longer than its number of introduced clauses.
Few new clauses contain a fixed clause Calabro, 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 and the variables of the root are
among the N variables of U, the introduced clauses of size c ≥ 1 number at most
2 N θ (c - 1) + ∑_{1 ≤ h < c} 2 θ (c - h) · #(introduced, size h).
Petal steps introduce many clauses. The petal steps with petals of size j number at
most #(introduced, size j) / θ j.