1. A computer-implemented method performed by a processor, the method comprising: automatically determining an abstract CSP based on a formally defined problem having interconnected sub-problems, wherein the abstract CSP corresponds to the problem, wherein the abstract CSP has a reduced complexity in comparison to a CSP representing the problem, wherein the abstract CSP captures the interconnection between the sub-problems and reduces the details of each sub-problem, wherein the abstract CSP comprises constraints over variables, wherein each variable having an associated domain; and repeatedly: propagating constraints of the abstract CSP to reduce domains of the abstract CSP; selecting a sub-problem to solve; solving the sub-problem; and updating the abstract CSP with values in accordance with the solution of the sub-problem; whereby, a solution to the formally defined problem is determined based on the solutions to the sub-problems.