This commit is contained in:
lperron@google.com
2012-06-08 16:49:21 +00:00
parent 5f4db3d470
commit 006547b3af
2 changed files with 15 additions and 1 deletions

View File

@@ -399,6 +399,13 @@ Constraint* Solver::MakeIsEqualCstCt(IntVar* const var,
if (value == var->Max()) {
return MakeIsGreaterOrEqualCstCt(var, value, boolvar);
}
if (boolvar->Bound()) {
if (boolvar->Min() == 0) {
return MakeNonEquality(var, value);
} else {
return MakeEquality(var, value);
}
}
// TODO(user) : what happens if the constraint is not posted?
// The cache becomes tainted.
model_cache_->InsertVarConstantExpression(
@@ -515,6 +522,13 @@ Constraint* Solver::MakeIsDifferentCstCt(IntVar* const var,
if (value == var->Max()) {
return MakeIsLessOrEqualCstCt(var, value - 1, boolvar);
}
if (boolvar->Bound()) {
if (boolvar->Min() == 0) {
return MakeEquality(var, value);
} else {
return MakeNonEquality(var, value);
}
}
model_cache_->InsertVarConstantExpression(
boolvar,
var,

View File

@@ -1086,7 +1086,7 @@ class IntBuilder {
global_model_builder.Register("count", &p_count);
global_model_builder.Register("global_cardinality", &p_global_cardinality);
global_model_builder.Register("table_int", &p_table_int);
global_model_builder.Register("table_int", &p_table_bool);
global_model_builder.Register("table_bool", &p_table_bool);
}
};
IntBuilder __int_Builder;