let build_sufficient_index_cstrs prec_cstrs per_cstrs size_cstrs =
  let ( ++ ) = Integer_var_set.union in
  let vars_prec = vars_of_linear_constraints prec_cstrs in
  let vars_per = vars_of_linear_constraints per_cstrs in
  let vars_size = vars_of_linear_constraints size_cstrs in
  let init =
    Integer_var_set.fold
      (fun var acc ->
        match var with
        | Size _ -> acc
        | Iof _ -> build_sufficient_index_cstr var :: acc)
      (vars_prec ++ vars_per ++ vars_size) []
  in
  List.rev init