3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-06 15:25:46 +00:00

remove eq constraint, fix gc for external constraints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-09-11 20:09:28 +02:00
parent f8a3857adb
commit b36bc11b85
15 changed files with 133 additions and 275 deletions

View file

@ -33,6 +33,8 @@ namespace polysat {
bool inf_saturate::perform(pvar v, conflict_core& core) {
for (auto c1 : core) {
if (!c1->is_ule())
continue;
auto c = c1.as_inequality();
if (try_ugt_x(v, core, c))
return true;
@ -292,6 +294,8 @@ namespace polysat {
pdd x = s().var(v);
pdd z = x;
for (auto dd : core) {
if (!dd->is_ule())
continue;
auto d = dd.as_inequality();
if (is_Xy_l_XZ(v, d, x, z) && try_ugt_y(v, core, c, d, x, z))
return true;
@ -308,6 +312,8 @@ namespace polysat {
pdd y = s().var(x);
pdd a = y;
for (auto dd : core) {
if (!dd->is_ule())
continue;
auto d = dd.as_inequality();
if (is_Y_l_Ax(x, d, a, y) && try_y_l_ax_and_x_l_z(x, core, c, d, a, y))
return true;
@ -338,6 +344,8 @@ namespace polysat {
pdd y = s().var(z);
pdd x = y;
for (auto dd : core) {
if (!dd->is_ule())
continue;
auto d = dd.as_inequality();
if (is_YX_l_zX(z, d, x, y) && try_ugt_z(z, core, c, d, x, y))
return true;