let init_solver_closure ?(buffer=false) cudfpool closure =
let map = new intprojection (List.length closure) in
List.iter map#add closure;
let globalid = (Array.length (strip_cudf_pool cudfpool)) - 1 in
let solverpool = init_solver_pool map cudfpool closure in
let solver = { constraints = init_solver_cache ~buffer solverpool ; map = map } in
solver