Uniform indexed products of counting functions #
A jointly uniform family on an encoded instance and a unary index admits products over a polynomial-time unary number of factors. Index-dependent certificates are padded to a common polynomially bounded row width, preserving their counts exactly. For GapP, expansion over Boolean choices reduces the product of differences to uniform #P products and a signed word sum.
Main definitions #
SharpP.indexedProductVerifier: check a separate indexed verifier on each certificate row.
Main results #
SharpP.acceptCount_indexedProductVerifier: exact cardinality factorization.SharpP.prod_range_mem: uniform indexed products preserve #P.GapP.prod_range_mem: uniform indexed products preserve GapP.
References #
Uniform row counts, widths and indexed tests give a polynomial-time product verifier.
Indexed row tuples have the product of their individual acceptance counts.
A jointly uniform #P family on an instance and unary index may be multiplied over a
polynomial-time unary range. If the original certificate polynomial is p, a common row width
is p(2|a|+1+r(a)), and the unpadded total length is r(a) times that width.
Expanding a product of (f i - c * g i) over Boolean choices pulls out (-c) to the number of
true bits.
A jointly uniform GapP family on an instance and unary index may be multiplied over a polynomial-time unary range. Boolean expansion uses certified #P products and a polynomial-time parity sign, so no general GapP product closure is assumed.