我是Z3的新手,但仍然找不到如何基于不同的可能评估表达有条件的新作业。在If-then-else示例中 https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c#L1846 我仍然需要将赋值设置为true或false,并且当我想根据对另一个变量的可能评估使其成为真或假时。我怎样才能做到这一点?
在evaluation example中,我希望计算出的值用于影响稍后将通过断言检查的尚未评估的值。那么,如果这样我可以将新的(基于评估的)条件的UN评估模型再次返回给上下文?即我想做复合条件而不进行最终评估。这可能吗?
答案 0 :(得分:1)
ite_example()
的以下一行:
ite = Z3_mk_ite(ctx, f, one, zero)
创建一个表达式,该表达式将评估({符号)术语one
计算的任何内容,如果f
计算结果为true,或者zero
计算结果为{{1} evalautes为false。在f
中,ite_example
始终评估为f
,但它可能是布尔排序的任何其他(符号)术语。
例如,
false
将创建一个名为x = mk_int_var(ctx, "x");
y = mk_int_var(ctx, "y");
x_eq_y = Z3_mk_eq(ctx, x, y);
的术语,表示“x = y”,这是布尔排序。