The purpose of the routine find_roots is to
solve the problem
An important aspect of Problem 1 is that all solutions to the system of equations are to be found, and that the computer implementation, if it completes within available time and memory resources guarantees that all solutions have been found, and finds tight and mathematically rigorous bounds on each such solution.
Problem 1 can be considered a special case of the global optimization problem with constant objective function and equality constraints (see §3). However, because of the structure of the algorithm and because extra variables (Lagrange multipliers) are introduced in the global optimization, it may be more efficient to use find_roots, rather than find_global_min.