  The polynomial partitioning method of Guth and Katz [arXiv:1011.4105] has
numerous applications in discrete and computational geometry. It partitions a
given $n$-point set $P\subset\mathbb{R}^d$ using the zero set $Z(f)$ of a
suitable $d$-variate polynomial $f$. Applications of this result are often
complicated by the problem, what should be done with the points of $P$ lying
within $Z(f)$? A natural approach is to partition these points with another
polynomial and continue further in a similar manner. So far it has been pursued
with limited success---several authors managed to construct and apply a second
partitioning polynomial, but further progress has been prevented by technical
obstacles. We provide a polynomial partitioning method with up to $d$
polynomials in dimension $d$, which allows for a complete decomposition of the
given point set. We apply it to obtain a new algorithm for the semialgebraic
range searching problem. Our algorithm has running time bounds similar to a
recent algorithm by Agarwal, Sharir, and the first author [SIAM~J.~Comput.
42(2013) 2039--2062], but it is simpler both conceptually and technically.
While this paper has been in preparation, Basu and Sombra, as well as Fox,
Pach, Sheffer, Suk, and Zahl, obtained results concerning polynomial partitions
which overlap with ours to some extent.
