14#ifndef ORTOOLS_SAT_VARIABLE_EXPAND_H_
15#define ORTOOLS_SAT_VARIABLE_EXPAND_H_
21#include "absl/container/btree_map.h"
22#include "absl/container/flat_hash_set.h"
52 bool push_down_when_unconstrained,
bool has_le_ge_linear1);
66 int literal(int64_t value)
const;
67 const absl::btree_map<int64_t, int>&
encoding()
const;
73 std::vector<int64_t> encoded_values_;
74 std::vector<int64_t> referenced_encoded_values_;
75 absl::btree_map<int64_t, int> encoding_;
76 std::optional<int64_t> unique_escape_value_;
77 bool is_closed_ =
false;
78 bool is_fully_encoded_ =
false;
93 void CollectAllOrderEncodingValues();
99 absl::btree_map<int64_t, absl::flat_hash_set<int>> tmp_ge_to_literals_;
100 absl::btree_map<int64_t, absl::flat_hash_set<int>> tmp_le_to_literals_;
101 absl::btree_map<int64_t, int> encoded_le_literal_;
int ge_literal(int64_t value) const
OrderEncoding(int var, PresolveContext *context, SolutionCrush &solution_crush)
void CreateAllOrderEncodingLiterals(const ValueEncoding &values)
int le_literal(int64_t value) const
void InsertLeLiteral(int64_t value, int literal)
void InsertGeLiteral(int64_t value, int literal)
int num_encoded_values() const
void AddOptionalValueToEncode(int64_t value)
void CreateAllValueEncodingLiterals()
const absl::btree_map< int64_t, int > & encoding() const
bool is_fully_encoded() const
const std::vector< int64_t > & encoded_values() const
int literal(int64_t value) const
std::optional< int64_t > unique_escape_value() const
ValueEncoding(int var, PresolveContext *context)
void AddReferencedValueToEncode(int64_t value)
void CanonicalizeEncodedValuesAndAddEscapeValue(bool push_down_when_unconstrained, bool has_le_ge_linear1)
void TryToReplaceVariableByItsEncoding(int var, PresolveContext *context, SolutionCrush &solution_crush)