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)); }

只是出于好奇,在设计代码时,有没有特别关注以这种方式编写快捷方式?