3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

propagate value when splitting a slice

This commit is contained in:
Jakob Rath 2023-07-17 18:18:12 +02:00
parent 490b77d8a1
commit a2fdb03625
2 changed files with 29 additions and 52 deletions

View file

@ -174,10 +174,15 @@ namespace polysat {
pvar z = sl.mk_extract_var(x, 3, 0);
std::cout << "v" << z << " := v" << x << "[3:0]\n" << sl << "\n";
// VERIFY(sl.merge_value(sl.var2slice(y), rational(9)));
// std::cout << "v" << y << " = 9\n" << sl << "\n";
// VERIFY(sl.merge_value(sl.var2slice(z), rational(7)));
// std::cout << "v" << z << " = 7\n" << sl << "\n";
slicing::enode* nine = sl.mk_value_slice(rational(9), 4);
VERIFY(sl.merge(sl.var2slice(y), nine, sat::literal(109)));
std::cout << "v" << y << " = 9\n" << sl << "\n";
slicing::enode* seven = sl.mk_value_slice(rational(7), 4);
VERIFY(sl.merge(sl.var2slice(z), seven, sat::literal(107)));
std::cout << "v" << z << " = 7\n" << sl << "\n";
sl.display_tree(std::cout);
}
};
@ -191,6 +196,6 @@ void tst_slicing() {
test_slicing::test2();
test_slicing::test3();
test_slicing::test4();
// test_slicing::test5();
test_slicing::test5();
std::cout << "ok\n";
}