14#ifndef OR_TOOLS_SAT_CP_MODEL_CHECKER_H_
15#define OR_TOOLS_SAT_CP_MODEL_CHECKER_H_
22#include "absl/types/span.h"
41 bool after_presolve =
false);
57 absl::Span<const int64_t> coeffs, int64_t offset = 0,
58 std::pair<int64_t, int64_t>* implied_domain =
nullptr);
67 absl::Span<const int64_t> variable_values,
69 const std::vector<int>* postsolve_mapping =
nullptr);
73 absl::Span<const int64_t> variable_values);
80 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 SolutionCanBeOptimal(const CpModelProto &model, absl::Span< const int64_t > variable_values)
Verifies some invariants that any optimal solution must satisfy.
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, std::pair< int64_t, int64_t > *implied_domain)
In SWIG mode, we don't want anything besides these top-level includes.