z3c++;API表达式谓词运算符重载没有无符号操作 我从下面的链接中查看Z3C++接口的ExExp文档
我发现,对于谓词运算符,例如我们“>”、“>=”和“=”,源代码是z3c++;API表达式谓词运算符重载没有无符号操作 我从下面的链接中查看Z3C++接口的ExExp文档 ,z3,Z3,我发现,对于谓词运算符,例如我们“>”、“>=”和“=”,源代码是 { 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
{
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?z++.h文件包含使用无符号位向量操作的定义(简称),例如:
/**
\brief unsigned less than or equal to operator for bitvectors.
*/
inline expr ule(expr const & a, expr const & b) { return to_expr(a.ctx(), Z3_mk_bvule(a.ctx(), a, b)); }
只是出于好奇,在设计代码时,有没有特别关注以这种方式编写快捷方式?