let vars_of_linear_constraints cstrs =
  List.fold_left
    (fun acc (Eq (terms, _) | Le (terms, _) | Ge (terms, _)) ->
      List.fold_left
        (fun acc (_, x) -> Integer_var_set.add x acc)
        acc terms)
    Integer_var_set.empty cstrs