为 Z3 C 中的 bool 变量赋值 api

Assign value to bool variable in Z3 C api

我是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。

有什么建议吗?谢谢!

我的第一个建议是使用 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 格式来模拟你想要的东西, 这为您提供了一种方法来推断如何处理程序化 APIs.

关于您的问题:逻辑建模中没有 "assignment" 的概念。 您可以肯定地断言平等。此外 Z3_L_TRUE 是使用的 return 代码 当你检查可满足性时。您可以使用方法 Z3_mk_true.

创建逻辑常量 "true"