62 std::function<
bool(
int)> active_constraints =
nullptr);
76 return interval_mapping_;
91 bool CopyBoolOrWithDupSupport(
const ConstraintProto& ct, ClauseId clause_id);
92 bool FinishBoolOrCopy(ClauseId clause_id =
kNoClauseId);
107 absl::Span<const int> enforcement_literals = {});
108 bool CopyAutomaton(
const ConstraintProto& ct);
109 bool CopyTable(
const ConstraintProto& ct);
110 bool CopyAllDiff(
const ConstraintProto& ct);
111 bool CopyLinMax(
const ConstraintProto& ct);
118 bool CopyInterval(
const ConstraintProto& ct,
int c,
bool ignore_names);
119 bool AddLinearConstraintForInterval(
const ConstraintProto& ct);
120 int GetOrCreateVariableForConjunction(std::vector<int>* literals);
125 void CopyAndMapNoOverlap(
const ConstraintProto& ct);
126 void CopyAndMapNoOverlap2D(
const ConstraintProto& ct);
127 bool CopyAndMapCumulative(
const ConstraintProto& ct);
134 void ExpandNonAffineExpressions();
137 void MaybeExpandNonAffineExpression(LinearExpressionProto* expr);
138 void MaybeExpandNonAffineExpressions(LinearArgumentProto* linear_argument);
140 ClauseId NextInferredClauseId();
142 PresolveContext* context_;
143 LratProofHandler* lrat_proof_handler_;
146 std::vector<int> non_fixed_variables_;
147 std::vector<int64_t> non_fixed_coefficients_;
148 std::vector<int64_t> interval_mapping_;
149 int starting_constraint_index_ = 0;
151 std::vector<int> temp_enforcement_literals_;
152 absl::flat_hash_set<int> temp_enforcement_literals_set_;
154 std::vector<int> temp_literals_;
155 absl::flat_hash_set<int> temp_literals_set_;
157 ConstraintProto tmp_constraint_;
161 absl::flat_hash_map<Literal, ClauseId> unit_clause_ids_;
163 std::vector<Literal> temp_clause_;
164 std::vector<Literal> temp_simplified_clause_;
165 std::vector<ClauseId> temp_clause_ids_;
166 ClauseId next_inferred_clause_id_;
170 absl::flat_hash_map<std::vector<int>,
int> boolean_product_encoding_;
173 absl::flat_hash_map<std::vector<std::pair<int, int64_t>>,
int>
174 non_affine_expression_to_new_var_;