3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-20 19:32:04 +00:00

disable assertions for now

This commit is contained in:
Jakob Rath 2024-05-03 10:03:03 +02:00
parent f8c593edf9
commit 7a3349eeae

View file

@ -837,6 +837,7 @@ namespace polysat {
* - y[abw] \not\in [ ceil(lo'/2^k'), ceil(hi'/2^k') [ * - y[abw] \not\in [ ceil(lo'/2^k'), ceil(hi'/2^k') [
* - ceil(lo/2^k) != ceil(hi/2^k) ... ensured by side conditions from interval reduction * - ceil(lo/2^k) != ceil(hi/2^k) ... ensured by side conditions from interval reduction
* - ceil(lo'/2^k') != ceil(hi'/2^k') ... ensured by side conditions from interval reduction * - ceil(lo'/2^k') != ceil(hi'/2^k') ... ensured by side conditions from interval reduction
* - ceil(lo/2^k) = lo[w-1:k] or ceil(lo/2^k) = lo[w-1:k] + 1 ... which case is ensured by side conditions
* *
* Case ebw = abw: * Case ebw = abw:
* - Regular intervals that link up * - Regular intervals that link up
@ -1040,6 +1041,8 @@ namespace polysat {
* where '?' is a placeholder for terms we don't care about. * where '?' is a placeholder for terms we don't care about.
* *
* *
* TODO: maybe here: after.lo[eew] \in [e.lo+1, e.hi+1] ???? (+1 on value level, so needs proper 2^k adjustment)
*
* before x[bew] \not\in [?,ceil(hi/2^k)[ * before x[bew] \not\in [?,ceil(hi/2^k)[
* after y[aew] \not\in [ceil(lo/2^k'),?[ * after y[aew] \not\in [ceil(lo/2^k'),?[
* e z[eew] \not\in [?,ceil(t/2^k'')[ * e z[eew] \not\in [?,ceil(t/2^k'')[
@ -1060,7 +1063,7 @@ namespace polysat {
// //
// e is the last entry of the hole. // e is the last entry of the hole.
// we need the constraint: // we need the constraint:
// e.hi in [ after.lo[ebw] ; before.hi[ebw] [ // e.hi in [ after.lo[eew] ; before.hi[eew] [
pdd t = e.e->interval.hi(); pdd t = e.e->interval.hi();
pdd lo = after.e->interval.lo(); pdd lo = after.e->interval.lo();
pdd hi = before.e->interval.hi(); pdd hi = before.e->interval.hi();
@ -1106,9 +1109,8 @@ From ZstJOJYeMR15.smt2
explain_kind conflict explain_kind conflict
v0: v4:5@0 value=16 v0:20@0 v0: v4:5@0 value=16 v0:20@0
v0[5] := 16 v0[5] [-491520 ; 2^19[ := [17;16[ deps 16 == v0 [5]@0 src
v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*v0; v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*v0;
v0[5] := 16 v0[5] [-491520 ; 2^19[ := [17;16[ deps 16 == v0 [5]@0 src v0[5] := 16 v0[5] [-491520 = (2^15*17) ; 2^15*16[ := [17;16[ deps 16 == v0 [5]@0 src
v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*v0; v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*v0;
*/ */
@ -1120,6 +1122,7 @@ v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*
t *= rational::power_of_two(aew - eew); t *= rational::power_of_two(aew - eew);
lo *= rational::power_of_two(aew - eew); lo *= rational::power_of_two(aew - eew);
hi *= rational::power_of_two(aew - eew); hi *= rational::power_of_two(aew - eew);
NOT_IMPLEMENTED_YET();
// TODO // TODO
} }
@ -1153,6 +1156,14 @@ v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*
* - Encode: ceil(hi/2^k')[ew] - ceil(lo/2^k)[ew] < 2^hole_bits * - Encode: ceil(hi/2^k')[ew] - ceil(lo/2^k)[ew] < 2^hole_bits
* *
* *
* (If aw == bw)
* If bew < aew:
* ceil(hi/2^k')[bew] - ceil(lo/2^k)[bew] < 2^hole_bits
* 2^k*ceil(hi/2^k') - 2^k*ceil(lo/2^k) < 2^(k+hole_bits)
* (note hole_bits < bew, thus k + hole_bits < k + bew = bw)
*
*
*
* *
*/ */
void viable::explain_hole_size(explanation const& before, explanation const& after, unsigned hole_bits, dependency_vector& deps) { void viable::explain_hole_size(explanation const& before, explanation const& after, unsigned hole_bits, dependency_vector& deps) {
@ -1216,14 +1227,24 @@ v0[20] := 1048561 v0 [20*v1 + 21 ; 20*v1 + 1[ := [5;-15[ src -20 <= 20*v1 + -1*
if (aw != bw) { if (aw != bw) {
// TODO: eval bounds? // TODO: eval bounds?
NOT_IMPLEMENTED_YET(); // TODO: eval t1 because it is a "high" value, and project/embed into pdd of t2
return; return;
NOT_IMPLEMENTED_YET();
} }
if (bew != bw || aew != aw) { if (aew != bew) {
// TODO: multiply with 2^k appropriately // TODO: multiply with 2^k appropriately
NOT_IMPLEMENTED_YET(); SASSERT(aw == bw);
if (bew < aew)
t1 *= rational::power_of_two(aew - bew);
if (aew < bew)
t2 *= rational::power_of_two(bew - aew);
return; return;
NOT_IMPLEMENTED_YET();
}
if (bew != bw || aew != aw) {
return;
NOT_IMPLEMENTED_YET();
} }
auto sc = cs.ult(t2 - t1, rational::power_of_two(hole_bits)); auto sc = cs.ult(t2 - t1, rational::power_of_two(hole_bits));