72 absl::Span<const Literal>
Reason(
const Trail& trail,
int trail_index,
73 int64_t conflict_id)
const final;
91 void AddSymmetry(std::unique_ptr<SparsePermutation> permutation);
100 std::vector<Literal>* output)
const;
104 bool PropagateNext(
Trail* trail);
108 std::vector<std::unique_ptr<SparsePermutation>> permutations_;
112 ImageInfo(
int p,
Literal i) : permutation_index(p), image(
i) {}
114 int permutation_index;
122 struct AssignedLiteralInfo {
123 AssignedLiteralInfo(Literal l, Literal
i,
int index)
124 : literal(l), image(
i), first_non_symmetric_info_index_so_far(
index) {}
135 int first_non_symmetric_info_index_so_far;
137 std::vector<std::vector<AssignedLiteralInfo>> permutation_trails_;
142 bool Enqueue(
const Trail& trail, Literal
literal, Literal image,
143 std::vector<AssignedLiteralInfo>* p_trail);
152 int source_trail_index;
155 std::vector<ReasonInfo> reasons_;
157 mutable StatsGroup stats_;
158 int num_propagations_;