Depth and Leaf-Count Bounds for Counting Sparsification #
We connect the actual counting-path insertion and petal-step bounds of CountingPathBounds
(Appendix A.2, Lemma A.3 on p. 46 and the path budgets of Appendix A.3 on p. 46 of
[OAI26c]) to the prefix words of a CountingBranchingRule, and combine a leaf-only
petal-step injection (a library adaptation of §A.3's depth-and-B-positions node encoding on p. 46)
with the geometric binomial-tail bound Cslib.sum_choose_le_two_pow_div_add_one and the
first-success threshold base countingThresholdBase of CountingParameters (pp. 46–47) to bound
the number of leaf words of any counting-sparsification tree.
For a CountingBranchingRule (fun r => M ^ r) V σ starting from a state s whose clause set
R.toClauseSet s is Reduced, nontautological, of width at most k, and supported on a finite
variable set declared of size N = declared.card:
- every node word
whas length at mostcountingDepthCoeff k M * N, wherecountingDepthCoeff k M = 4 * ∑ r < k - 1, (3 * M) ^ r; - every node word
whasM * #{i < w.length | w[i] = true} ≤ countingBChoiceCoeff k * N, wherecountingBChoiceCoeff k = 4 * ∑ r < k - 1, 3 ^ r; - as a library adaptation of §A.3's
(Cn + 1) * ∑ choosenode bound (p. 46), leafhood rules out trailing-falseambiguity so two leaf words withtruesteps at the same positions are equal (CountingBranchingRule.IsLeafWord.eq_of_getD_eq); any finsetWof leaf words therefore injects into the subsets ofrange (countingDepthCoeff k M * N)of cardinality at mostcountingBChoiceCoeff k * N / Mwithout a separate depth factor, giving the pure binomial-sum leaf boundW.card ≤ ∑ j ≤ countingBChoiceCoeff k * N / M, (countingDepthCoeff k M * N).choose j(CountingBranchingRule.card_le_of_isLeafWord); - under the integer parameter budget
countingBChoiceCoeff k ≤ MandB * countingBChoiceCoeff k * Nat.clog 2 (4 * countingDepthCoeff k M * M) ≤ M(for2 ≤ k, with1 ≤ B), and in particular unconditionally atM = countingThresholdBase k B,W.card ≤ 2 ^ (N / B + 1)(CountingBranchingRule.card_le_two_pow_of_isLeafWord,CountingBranchingRule.card_le_two_pow_thresholdBase).
Main results #
Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.IsLeafWord.eq_of_getD_eq: two leaf words withtruesteps at the same positions are equal.Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.IsNodeWord.length_le,Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.IsLeafWord.length_le: linear depth bound along node and leaf words.Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.IsNodeWord.mul_card_le,Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.IsLeafWord.mul_card_le:M-scaled petal-step budget along node and leaf words.Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.card_le_of_isLeafWord: binomial-sum bound on any finset of leaf words.Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.card_le_two_pow_of_isLeafWord,Cslib.Logic.PL.ClauseSet.Sparsification.CountingBranchingRule.card_le_two_pow_thresholdBase: exponential bound2 ^ (declared.card / B + 1)on any finset of leaf words under the integer parameter budget and atcountingThresholdBase k B.
References #
Prefix paths and leaf-count bounds for a counting branching rule #
Leaf words are determined by their petal steps. Two leaf words with true steps at the
same positions are equal.
Every node word w of a counting branching rule induces a sequence of valid choices
(c i, H i) along its prefixes w.take i.
Node words are short. From a reduced, nontautological clause set of width ≤ k over
declared, every node word has length at most countingDepthCoeff k M * declared.card.
Node words have few petal steps. From a reduced, nontautological clause set of width ≤ k
over declared, every node word satisfies
M * #{i < w.length | w.getD i false = true} ≤ countingBChoiceCoeff k * declared.card.
Leaf words are short. From a reduced, nontautological clause set of width ≤ k over
declared, every leaf word has length at most countingDepthCoeff k M * declared.card.
Leaf words have few petal steps. From a reduced, nontautological clause set of width ≤ k
over declared, every leaf word satisfies
M * #{i < w.length | w.getD i false = true} ≤ countingBChoiceCoeff k * declared.card.
Binomial-sum leaf-word bound. From a reduced, nontautological clause set of width ≤ k over
declared, any finset W of leaf words has cardinality at most
∑_{j ≤ countingBChoiceCoeff k * declared.card / M} (countingDepthCoeff k M * declared.card).choose j.
Exponential leaf-word bound. Under the integer parameter budget countingBChoiceCoeff k ≤ M
and B * countingBChoiceCoeff k * Nat.clog 2 (4 * countingDepthCoeff k M * M) ≤ M (for 2 ≤ k,
with 1 ≤ B), any finset W of leaf words has cardinality at most 2 ^ (declared.card / B + 1).
Unconditional exponential leaf-word bound at countingThresholdBase k B.
For any 1 ≤ B and any counting branching rule R at M = countingThresholdBase k B, any finset
W of leaf words from a reduced, nontautological clause set of width ≤ k over declared has
cardinality at most 2 ^ (declared.card / B + 1).