Sparse separating filters #
Hash the positive set into a shorter table, synthesize its image, and pull the result back along the hash. Every positive input survives; few specified negative inputs survive. Repeated filters reduce the remaining false positives geometrically.
theorem
Complexity.CircuitSparseSynthesis.Internal.indicator_synthesis
{n : ℕ}
(s : Finset (BitString n))
:
Cslib.Circuits.Synthesis Cslib.Circuits.Boolean.interpretation (Cslib.Circuits.inputs n)
{fun (x : BitString n) => decide (x ∈ s)} (s.card * (2 * n + 2) + 1)