为 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"
我是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"