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