14#ifndef OR_TOOLS_SAT_CP_MODEL_COPY_H_
15#define OR_TOOLS_SAT_CP_MODEL_COPY_H_
21#include "absl/container/flat_hash_set.h"
22#include "absl/types/span.h"
57 std::function<
bool(
int)> active_constraints =
nullptr);
71 return interval_mapping_;
87 bool FinishBoolOrCopy();
102 absl::Span<const int> enforcement_literals = {});
103 bool CopyAutomaton(
const ConstraintProto& ct);
104 bool CopyTable(
const ConstraintProto& ct);
105 bool CopyAllDiff(
const ConstraintProto& ct);
106 bool CopyLinMax(
const ConstraintProto& ct);
111 bool CopyInterval(
const ConstraintProto& ct,
int c,
bool ignore_names);
112 bool AddLinearConstraintForInterval(
const ConstraintProto& ct);
117 void CopyAndMapNoOverlap(
const ConstraintProto& ct);
118 void CopyAndMapNoOverlap2D(
const ConstraintProto& ct);
119 bool CopyAndMapCumulative(
const ConstraintProto& ct);
121 PresolveContext* context_;
124 std::vector<int> non_fixed_variables_;
125 std::vector<int64_t> non_fixed_coefficients_;
126 std::vector<int64_t> interval_mapping_;
127 int starting_constraint_index_ = 0;
129 std::vector<int> temp_enforcement_literals_;
130 absl::flat_hash_set<int> temp_enforcement_literals_set_;
132 std::vector<int> temp_literals_;
133 absl::flat_hash_set<int> temp_literals_set_;
135 ConstraintProto tmp_constraint_;
147 PresolveContext* context);
152 const CpModelProto& in_model, absl::Span<const Domain> domains,
153 std::function<
bool(
int)> active_constraints, PresolveContext* context,
154 std::vector<int>* interval_mapping);
158 const CpModelProto& in_model, PresolveContext* context);
void ImportVariablesAndMaybeIgnoreNames(const CpModelProto &in_model)
void CreateVariablesFromDomains(absl::Span< const Domain > domains)
ModelCopy(PresolveContext *context)
absl::Span< const int64_t > InternalIntervalMapping() const
bool ImportAndSimplifyConstraints(const CpModelProto &in_model, bool first_copy=false, std::function< bool(int)> active_constraints=nullptr)
bool ImportModelWithBasicPresolveIntoContext(const CpModelProto &in_model, PresolveContext *context)
void CopyEverythingExceptVariablesAndConstraintsFieldsIntoContext(const CpModelProto &in_model, PresolveContext *context)
Copies the non constraint, non variables part of the model.
bool ImportModelAndDomainsWithBasicPresolveIntoContext(const CpModelProto &in_model, absl::Span< const Domain > domains, std::function< bool(int)> active_constraints, PresolveContext *context, std::vector< int > *interval_mapping)
In SWIG mode, we don't want anything besides these top-level includes.