Я смотрел документ класса expr из Z3 C++ API по следующей ссылке http://research.microsoft.com/en-us/um/redmond/projects/z3/classz3_1_1expr.html.Перегрузка оператора предиката оператора Z3 C++ не имеет неподписанной операции
Я нашел, что для оператора предиката, такого как «>», «> =» и «< =», для вектора бит он выполнил только подписанную операцию. Например, в оператор «> =», исходный код
{
check_context(a, b);
Z3_ast r;
if (a.is_arith() && b.is_arith()) {
r = Z3_mk_ge(a.ctx(), a, b);
}
else if (a.is_bv() && b.is_bv()) {
r =Z3_mk_bvsge(a.ctx(), a, b);//This statement only did signed version, there actually is a Z3_mk_bvuge in C API
}
else {
assert(false);
}
a.check_error();
return expr(a.ctx(), r);
}
Означает ли это, если я хочу, чтобы различать подписанные и неподписанные операции я могу использовать только C API? .
Просто из любопытства есть какие-либо конкретные опасения писать ярлык таким образом, при проектировании код? –