Skip to content

Commit d5cf498

Browse files
authored
Merge pull request #8533 from diffblue/prop-solve-xnor
implement `xnor` in prop_conv_solvert
2 parents 857c88e + d877a12 commit d5cf498

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

src/solvers/prop/prop_conv_solver.cpp

+15-14
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ literalt prop_conv_solvert::convert_bool(const exprt &expr)
257257
}
258258
else if(
259259
expr.id() == ID_or || expr.id() == ID_and || expr.id() == ID_xor ||
260-
expr.id() == ID_nor || expr.id() == ID_nand)
260+
expr.id() == ID_nor || expr.id() == ID_nand || expr.id() == ID_xnor)
261261
{
262262
INVARIANT(
263263
!op.empty(),
@@ -268,19 +268,20 @@ literalt prop_conv_solvert::convert_bool(const exprt &expr)
268268
for(const auto &operand : op)
269269
bv.push_back(convert(operand));
270270

271-
if(!bv.empty())
272-
{
273-
if(expr.id() == ID_or)
274-
return prop.lor(bv);
275-
else if(expr.id() == ID_nor)
276-
return !prop.lor(bv);
277-
else if(expr.id() == ID_and)
278-
return prop.land(bv);
279-
else if(expr.id() == ID_nand)
280-
return !prop.land(bv);
281-
else if(expr.id() == ID_xor)
282-
return prop.lxor(bv);
283-
}
271+
CHECK_RETURN(!bv.empty());
272+
273+
if(expr.id() == ID_or)
274+
return prop.lor(bv);
275+
else if(expr.id() == ID_nor)
276+
return !prop.lor(bv);
277+
else if(expr.id() == ID_and)
278+
return prop.land(bv);
279+
else if(expr.id() == ID_nand)
280+
return !prop.land(bv);
281+
else if(expr.id() == ID_xor)
282+
return prop.lxor(bv);
283+
else if(expr.id() == ID_xnor)
284+
return !prop.lxor(bv);
284285
}
285286
else if(expr.id() == ID_not)
286287
{

0 commit comments

Comments
 (0)