18#include "absl/status/status.h"
30absl::Status CheckMapKeys(
31 const google::protobuf::Map<int64_t, ModelSubsetProto::Bounds>& bounds_map,
33 for (
const auto& [
id, unused] : bounds_map) {
34 if (!universe.HasId(
id)) {
38 return absl::OkStatus();
41absl::Status CheckRepeatedIds(
42 const google::protobuf::RepeatedField<int64_t>& ids,
46 return absl::OkStatus();
55 <<
"bad ModelSubsetProto.variable_bounds";
58 <<
"bad ModelSubsetProto.variable_integrality";
61 <<
"bad ModelSubsetProto.linear_constraints";
64 <<
"bad ModelSubsetProto.quadratic_constraints";
67 <<
"bad ModelSubsetProto.second_order_cone_constraints";
70 <<
"bad ModelSubsetProto.sos1_constraints";
73 <<
"bad ModelSubsetProto.sos2_constraints";
76 <<
"bad ModelSubsetProto.indicator_constraints";
77 return absl::OkStatus();
88 return absl::OkStatus();
94 <<
"bad ComputeInfeasibleSubsystemResultProto.feasibility";
101 <<
"nonempty infeasible_subsystem with feasibility status: "
106 <<
"is_minimal is true with feasibility status: "
110 return absl::OkStatus();
#define RETURN_IF_ERROR(expr)
const ::operations_research::math_opt::ModelSubsetProto & infeasible_subsystem() const
::operations_research::math_opt::FeasibilityStatusProto feasibility() const
::int64_t variable_integrality(int index) const
const ::google::protobuf::Map<::int64_t, ::operations_research::math_opt::ModelSubsetProto_Bounds > & linear_constraints() const
::int64_t second_order_cone_constraints(int index) const
::int64_t sos1_constraints(int index) const
::int64_t sos2_constraints(int index) const
const ::google::protobuf::Map<::int64_t, ::operations_research::math_opt::ModelSubsetProto_Bounds > & quadratic_constraints() const
::int64_t indicator_constraints(int index) const
const ::google::protobuf::Map<::int64_t, ::operations_research::math_opt::ModelSubsetProto_Bounds > & variable_bounds() const
An object oriented wrapper for quadratic constraints in ModelStorage.
absl::Status ValidateFeasibilityStatus(const FeasibilityStatusProto &status)
absl::Status ValidateModelSubset(const ModelSubsetProto &model_subset, const ModelSummary &model_summary)
@ FEASIBILITY_STATUS_INFEASIBLE
const ::std::string & FeasibilityStatusProto_Name(T value)
absl::Status ValidateComputeInfeasibleSubsystemResult(const ComputeInfeasibleSubsystemResultProto &result, const ModelSummary &model_summary)
absl::Status CheckIdsSubset(absl::Span< const int64_t > ids, const IdNameBiMap &universe, std::optional< int64_t > upper_bound)
absl::Status ValidateComputeInfeasibleSubsystemResultNoModel(const ComputeInfeasibleSubsystemResultProto &result)
Validates the internal consistency of the fields.
absl::Status CheckIdsRangeAndStrictlyIncreasing(absl::Span< const int64_t > ids)
StatusBuilder InvalidArgumentErrorBuilder()
IdNameBiMap sos2_constraints
IdNameBiMap second_order_cone_constraints
IdNameBiMap linear_constraints
IdNameBiMap sos1_constraints
IdNameBiMap quadratic_constraints
IdNameBiMap indicator_constraints