我想在 ac 程序中使用Yices SMT 求解器来求解表达式x > 100
并获得x
. 这是我的代码:
#include<stdio.h>
#include"yices_c.h"
int main() {
yices_context ctx = yices_mk_context();
char int_ty_name[] = "int";
yices_type int_ty = yices_mk_type(ctx, int_ty_name);
char vname[] = "x";
yices_expr e1 = yices_mk_num(ctx,100);
yices_var_decl v = yices_mk_var_decl(ctx,vname,int_ty);
yices_expr e2 = yices_mk_var_from_decl(ctx,v);
yices_expr eq1 = yices_mk_lt(ctx, e1, e2);
yices_assert(ctx, eq1);
yices_dump_context(ctx);
switch(yices_check(ctx)) {
case l_true:
printf("satisfiable\n");
yices_model m = yices_get_model(ctx);
long i;
yices_get_int_value(m,v,&i);
printf("e2 = %d\n", i);
yices_display_model(m);
break;
case l_false:
printf("unsatisfiable\n");
break;
case l_undef:
printf("unknown\n");
break;
}
yices_del_context(ctx);
return 0;
}
这个程序总是结果x =101
。这101
只是此表达式的可能结果之一。我希望求解器从所有可能的结果中选择一个随机结果(从 101 到 MAX_INT 的随机整数)。
我应该怎么办?