在Z3 C api中为bool变量赋值

时间:2016-07-23 20:10:39

标签: z3

我是Z3的新手。

我定义了一个bool类型变量a:
Z3_sort bool_type = Z3_mk_bool_sort(ctx);
Z3_ast a = Z3_mk_const(ctx,Z3_mk_string_symbol(ctx," a"),bool_type);

我的问题是如何为a分配不同的值,似乎我无法直接为其分配Z3_L_TRUE。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我的第一个建议是使用C ++ API而不是C API。 使用C API非常容易出错。该发行版附带了使用C和C ++ API的示例:

https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c

https://github.com/Z3Prover/z3/blob/master/examples/c++/example.cpp

你会看到创建逻辑变量的例子,就像你正在做的那样, 并添加约束逻辑变量的断言。 使用基于文本的API更容易理解逻辑建模。 也就是说,我建议您使用SMT-LIB格式来模拟您的意图, 这为您提供了一种推断如何处理程序化API的方法。

关于你的问题:没有"赋值"在逻辑建模中。 你可以肯定地断言平等。此外,Z3_L_TRUE是使用的返回码 当你检查满意度。你可以创建一个逻辑常量" true"使用方法Z3_mk_true。