在Z3中:如何制定基于其他条件的条件(基于变量的评估)?

时间:2016-05-25 15:45:42

标签: z3 c-api

我是Z3的新手,但仍然找不到如何基于不同的可能评估表达有条件的新作业。在If-then-else示例中 https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c#L1846 我仍然需要将赋值设置为true或false,并且当我想根据对另一个变量的可能评估使其成为真或假时。我怎样才能做到这一点?

evaluation example中,我希望计算出的值用于影响稍后将通过断言检查的尚未评估的值。那么,如果这样我可以将新的(基于评估的)条件的UN评估模型再次返回给上下文?即我想做复合条件而不进行最终评估。这可能吗?

1 个答案:

答案 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”,这是布尔排序。