在 Z3 中:如何制定基于 if then else 的条件(基于对变量的评估)?

In Z3: how if then else based conditions be formulated (based on evaluations of variables)?

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

evaluation example 中,我希望计算的值用于影响尚未评估的值,这些值将在稍后通过断言进行检查。因此,如果这是我如何 return 将使用新的(基于评估的)条件重新评估的模型返回到上下文的方式?即我想在没有最终评估的情况下进行复合条件。这可能吗?

来自 ite_example() 的以下行:

ite  = Z3_mk_ite(ctx, f, one, zero)

创建一个表达式,如果 f 的计算结果为真,则该表达式将计算为(符号)项 one 的计算结果,或者如果 zero 的计算结果为 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_eq_y 的术语,代表 "x = y",它是布尔排序的。