14#ifndef OR_TOOLS_SAT_CP_MODEL_CHECKER_H_
15#define OR_TOOLS_SAT_CP_MODEL_CHECKER_H_
21#include "absl/types/span.h"
23#include "ortools/sat/cp_model.pb.h"
24#include "ortools/sat/sat_parameters.pb.h"
41 bool after_presolve =
false);
50 const CpModelProto&
model);
55 absl::Span<const int> vars,
56 absl::Span<const int64_t> coeffs,
66 absl::Span<const int64_t> variable_values,
67 const CpModelProto* mapping_proto =
nullptr,
68 const std::vector<int>* postsolve_mapping =
nullptr);
74 const ConstraintProto& constraint,
75 absl::Span<const int64_t> variable_values);
std::string ValidateInputCpModel(const SatParameters ¶ms, const CpModelProto &model)
std::string ValidateCpModel(const CpModelProto &model, bool after_presolve)
bool SolutionIsFeasible(const CpModelProto &model, absl::Span< const int64_t > variable_values, const CpModelProto *mapping_proto, const std::vector< int > *postsolve_mapping)
bool ConstraintIsFeasible(const CpModelProto &model, const ConstraintProto &constraint, absl::Span< const int64_t > variable_values)
bool PossibleIntegerOverflow(const CpModelProto &model, absl::Span< const int > vars, absl::Span< const int64_t > coeffs, int64_t offset)
In SWIG mode, we don't want anything besides these top-level includes.