Is there any built-in function for doing decomposition of a semialgebraic set into connected components? The only way I now can think of is to use
CylindricalAlgebraicDecomposition
and to build connected componnets from its output: all terms connected with disjunction on first level are treated as vertexes of graph, two vartexes are connected if Length[FindInstance[v1 && v2, {vars}]] != 0
. On produced graph usual depth-first search based algorithm is used. But intuition says that such things are usually already implemented, hence the question.