expr mk_and(expr_vector args) { vector<Z3_ast> array; for (int i = 0; i < args.size(); i++) array.push_back(args[i]); return to_expr(args.ctx(), Z3_mk_and(args.ctx(), array.size(), &(array[0]))); }
inline expr MkAtMost(expr_vector vars, unsigned k) { array<Z3_ast> _vars(vars.size()); for (unsigned i = 0; i < vars.size(); ++i) { _vars[i] = vars[i]; } expr r{ vars.ctx(), Z3_mk_atmost(vars.ctx(), vars.size(), _vars.ptr(), k) }; vars.check_error(); return r; }