}
else if (t[0] == t[1])
{
- // ((_ iand k) x x) ---> x
- return RewriteResponse(REWRITE_DONE, t[0]);
+ // ((_ iand k) x x) ---> (mod x 2^k)
+ Node twok = nm->mkConstInt(Rational(Integer(2).pow(bsize)));
+ Node ret = nm->mkNode(kind::INTS_MODULUS, t[0], twok);
+ return RewriteResponse(REWRITE_AGAIN, ret);
}
// simplifications involving constants
for (unsigned i = 0; i < 2; i++)
regress1/nl/issue5662-nl-tc-min.smt2
regress1/nl/issue7924-sqrt-partial.smt2
regress1/nl/issue8016-iand-rewrite.smt2
+ regress1/nl/issue8052-iand-rewrite.smt2
regress1/nl/metitarski-1025.smt2
regress1/nl/metitarski-3-4.smt2
regress1/nl/metitarski_3_4_2e.smt2