73 absl::Span<const Literal>
Reason(
const Trail& trail,
int trail_index,
74 int64_t conflict_id)
const final;
92 void AddSymmetry(std::unique_ptr<SparsePermutation> permutation);
113 num_literals_with_knonw_symmetry_ = num_literals;
121 void Permute(
int index, absl::Span<const Literal>
input,
122 std::vector<Literal>* output)
const;
126 bool PropagateNext(
Trail* trail);
130 std::vector<std::unique_ptr<SparsePermutation>> permutations_;
134 ImageInfo(
int p,
Literal i) : permutation_index(p), image(
i) {}
136 int permutation_index;
144 struct AssignedLiteralInfo {
145 AssignedLiteralInfo(Literal l, Literal
i,
int index)
146 : literal(l), image(
i), first_non_symmetric_info_index_so_far(index) {}
157 int first_non_symmetric_info_index_so_far;
159 std::vector<std::vector<AssignedLiteralInfo>> permutation_trails_;
164 bool Enqueue(
const Trail& trail, Literal literal, Literal image,
165 std::vector<AssignedLiteralInfo>* p_trail);
170 mutable util_intops::StrongVector<LiteralIndex, Literal> tmp_literal_mapping_;
174 int source_trail_index;
177 std::vector<ReasonInfo> reasons_;
179 mutable StatsGroup stats_;
180 int num_propagations_;
182 int num_literals_with_knonw_symmetry_;