Binomial coefficients of #P counts #
If f is in #P and g is computed in polynomial time with unary output, then
a ↦ C(f a, g a) is in #P Beigel and Gill, Property 8(ii)
(Cslib.Complexity.SharpP.choose_mem). A certificate lists g a accepted certificates of the
original verifier in strictly increasing lexicographic order, so each g a-element set of
accepted certificates is counted exactly once.
The word test Cslib.Complexity.SharpP.subsetTest reads K rows of Z bits. The first k rows
must be accepted by acc and strictly increasing, and the remaining rows must be zero, so it
accepts C(N, k) words when acc accepts N words of length Z and k ≤ K
(Cslib.Complexity.SharpP.card_filter_subsetTest). The extra zero rows let Toda's counting test
use one row budget for every subset size (Cslib.Complexity.Toda.countingTest).
Main definitions #
Cslib.Complexity.SharpP.subsetTest: strictly increasing accepted rows, padded by zero rows.
Main results #
Cslib.Complexity.SharpP.card_filter_subsetTest: the test acceptsC(N, k)words.Cslib.Complexity.SharpP.computableInPolyTime_subsetTest: the test runs in polynomial time.Cslib.Complexity.SharpP.choose_mem: binomial coefficients of #P counts are in #P.
References #
Binomial coefficients of #P counts are in #P Beigel and Gill,
Property 8(ii). If f is in #P with certificate length q(|a|) and g is
computed in polynomial time in unary, the new certificate consists of g a rows of q(|a|) bits:
accepted certificates of the original verifier in strictly increasing lexicographic order.