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