let init_solver_univ ?(global_constraints=true) ?(buffer=false) univ =
  let map = new identity in
  let cudfpool = init_pool_univ global_constraints univ in
  let globalid = (Array.length (strip_cudf_pool cudfpool)) - 1 in
  let solverpool = SolverPool (strip_cudf_pool cudfpool) in
  let solver = { constraints = init_solver_cache ~buffer solverpool ; map = map } in
  solver