diff options
author | Mathias Preiner <mathias.preiner@gmail.com> | 2021-03-05 19:28:19 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-05 21:28:19 -0600 |
commit | 59d9aad4839e64e0f6d6b57ff112c418ffbbe9fb (patch) | |
tree | d0df100653994157bc631e9ca7fe422dd78e29ff /src/theory/quantifiers/bv_inverter_utils.cpp | |
parent | c6fffe4fd328401f7f7e0757303e8dea5f6c14a4 (diff) |
Remove partial UDIV/UREM operators. (#6069)
This commit removes the partial UDIV/UREM operator handling. BITVECTOR_UDIV and BITVECTOR_UREM are now total.
Diffstat (limited to 'src/theory/quantifiers/bv_inverter_utils.cpp')
-rw-r--r-- | src/theory/quantifiers/bv_inverter_utils.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/theory/quantifiers/bv_inverter_utils.cpp b/src/theory/quantifiers/bv_inverter_utils.cpp index 0f1cdfadb..d7e035d83 100644 --- a/src/theory/quantifiers/bv_inverter_utils.cpp +++ b/src/theory/quantifiers/bv_inverter_utils.cpp @@ -278,7 +278,7 @@ Node getICBvMult( Node getICBvUrem( bool pol, Kind litk, Kind k, unsigned idx, Node x, Node s, Node t) { - Assert(k == BITVECTOR_UREM_TOTAL); + Assert(k == BITVECTOR_UREM); Assert(litk == EQUAL || litk == BITVECTOR_ULT || litk == BITVECTOR_SLT || litk == BITVECTOR_UGT || litk == BITVECTOR_SGT); @@ -586,7 +586,7 @@ Node getICBvUrem( Node getICBvUdiv( bool pol, Kind litk, Kind k, unsigned idx, Node x, Node s, Node t) { - Assert(k == BITVECTOR_UDIV_TOTAL); + Assert(k == BITVECTOR_UDIV); Assert(litk == EQUAL || litk == BITVECTOR_ULT || litk == BITVECTOR_SLT || litk == BITVECTOR_UGT || litk == BITVECTOR_SGT); @@ -618,7 +618,7 @@ Node getICBvUdiv( * umulo(s, t) is true if s * t produces and overflow * and z = 0 with getSize(z) = w */ Node mul = nm->mkNode(BITVECTOR_MULT, s, t); - Node div = nm->mkNode(BITVECTOR_UDIV_TOTAL, mul, s); + Node div = nm->mkNode(BITVECTOR_UDIV, mul, s); scl = nm->mkNode(EQUAL, div, t); } else @@ -655,8 +655,8 @@ Node getICBvUdiv( * * where * z = 0 with getSize(z) = w */ - Node div = nm->mkNode(BITVECTOR_UDIV_TOTAL, s, t); - scl = nm->mkNode(EQUAL, nm->mkNode(BITVECTOR_UDIV_TOTAL, s, div), t); + Node div = nm->mkNode(BITVECTOR_UDIV, s, t); + scl = nm->mkNode(EQUAL, nm->mkNode(BITVECTOR_UDIV, s, div), t); } else { @@ -701,7 +701,7 @@ Node getICBvUdiv( * with invertibility condition (synthesized): * (= (bvand (bvudiv (bvmul s t) t) s) s) */ Node mul = nm->mkNode(BITVECTOR_MULT, s, t); - Node div = nm->mkNode(BITVECTOR_UDIV_TOTAL, mul, t); + Node div = nm->mkNode(BITVECTOR_UDIV, mul, t); scl = nm->mkNode(EQUAL, nm->mkNode(BITVECTOR_AND, div, s), s); } } @@ -739,7 +739,7 @@ Node getICBvUdiv( * where * ones = ~0 with getSize(ones) = w */ Node ones = bv::utils::mkOnes(w); - Node div = nm->mkNode(BITVECTOR_UDIV_TOTAL, ones, s); + Node div = nm->mkNode(BITVECTOR_UDIV, ones, s); scl = nm->mkNode(BITVECTOR_UGT, div, t); } else @@ -792,7 +792,7 @@ Node getICBvUdiv( * and min is the minimum signed value with getSize(min) = w */ Node min = bv::utils::mkMinSigned(w); Node sle = nm->mkNode(BITVECTOR_SLE, t, z); - Node div = nm->mkNode(BITVECTOR_UDIV_TOTAL, min, s); + Node div = nm->mkNode(BITVECTOR_UDIV, min, s); Node slt = nm->mkNode(BITVECTOR_SLT, div, t); scl = nm->mkNode(IMPLIES, sle, slt); } @@ -808,8 +808,8 @@ Node getICBvUdiv( * and max is the maximum signed value with getSize(max) = w */ Node max = bv::utils::mkMaxSigned(w); Node ones = bv::utils::mkOnes(w); - Node udiv1 = nm->mkNode(BITVECTOR_UDIV_TOTAL, ones, s); - Node udiv2 = nm->mkNode(BITVECTOR_UDIV_TOTAL, max, s); + Node udiv1 = nm->mkNode(BITVECTOR_UDIV, ones, s); + Node udiv2 = nm->mkNode(BITVECTOR_UDIV, max, s); Node sge1 = nm->mkNode(BITVECTOR_SGE, udiv1, t); Node sge2 = nm->mkNode(BITVECTOR_SGE, udiv2, t); scl = nm->mkNode(OR, sge1, sge2); @@ -877,9 +877,9 @@ Node getICBvUdiv( * and max is the maximum signed value with getSize(max) = w */ Node max = bv::utils::mkMaxSigned(w); Node ones = bv::utils::mkOnes(w); - Node div1 = nm->mkNode(BITVECTOR_UDIV_TOTAL, ones, s); + Node div1 = nm->mkNode(BITVECTOR_UDIV, ones, s); Node sgt1 = nm->mkNode(BITVECTOR_SGT, div1, t); - Node div2 = nm->mkNode(BITVECTOR_UDIV_TOTAL, max, s); + Node div2 = nm->mkNode(BITVECTOR_UDIV, max, s); Node sgt2 = nm->mkNode(BITVECTOR_SGT, div2, t); scl = nm->mkNode(OR, sgt1, sgt2); } @@ -894,11 +894,11 @@ Node getICBvUdiv( * z = 0 with getSize(z) = w * and min is the minimum signed value with getSize(min) = w */ Node mul = nm->mkNode(BITVECTOR_MULT, s, t); - Node div1 = nm->mkNode(BITVECTOR_UDIV_TOTAL, mul, s); + Node div1 = nm->mkNode(BITVECTOR_UDIV, mul, s); Node o1 = nm->mkNode(EQUAL, div1, t); Node min = bv::utils::mkMinSigned(w); Node sle = nm->mkNode(BITVECTOR_SLE, t, z); - Node div2 = nm->mkNode(BITVECTOR_UDIV_TOTAL, min, s); + Node div2 = nm->mkNode(BITVECTOR_UDIV, min, s); Node slt = nm->mkNode(BITVECTOR_SLT, div2, t); Node o2 = nm->mkNode(IMPLIES, sle, slt); scl = nm->mkNode(OR, o1, o2); |