Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Z3中的作业_Z3_Smt - Fatal编程技术网

获取Z3中的作业

获取Z3中的作业,z3,smt,Z3,Smt,(get assignment)命令应返回符号列表及其真/假值(如果它们是sort Bool)。根据我的理解,只有当:productassignments设置为true,并且(check sat)返回sat时,才能执行此操作。但是,当我在Z3上运行一个小脚本来测试此操作时,(get assignment)只返回()-blank。 这是我的剧本: (set-option :produce-assignments true) (set-logic QF_UF) (declare-fun a () B

(get assignment)命令应返回符号列表及其真/假值(如果它们是sort Bool)。根据我的理解,只有当:productassignments设置为true,并且(check sat)返回sat时,才能执行此操作。但是,当我在Z3上运行一个小脚本来测试此操作时,(get assignment)只返回()-blank。 这是我的剧本:

(set-option :produce-assignments true)
(set-logic QF_UF)
(declare-fun a () Bool)
(declare-fun b () Bool)
(assert (= a b )) 
(check-sat)
(get-assignment)

get assignment
的语义不直观。它显示
命名的
子公式的值。摘自(第62页):

获取作业
是get value的一个轻量级和受限版本,它要求为以前输入的一组选定值指定真值 公式。(29)与前面讨论的其他几个命令类似 (例如,获取证据),仅当 “生成工作分配”选项(默认为false)设置为true (见下文第5.1.7节)。不需要解算器来支持这一点 选项与get value一样,它只能在check-sat之后发出 报告sat或(可选)报告sat的命令 未知,没有插入断言集命令。命令 返回所有对(f b)的序列,其中b为true或false f是集合中形式为(t命名为f)的(子)项的标签 在所有的断言中,带有Bool类型的t。与获取值类似,当 最近的check-sat命令的响应是sat,并且只有 然后,保证所有断言集都有一个模型(在 逻辑)与返回的真理赋值一致

下面是使用两个命名子公式(也可在线获得)的相同示例:

(设置选项:生成赋值为真)
(设置逻辑QF_UF)
(宣布乐趣是一个()Bool)
(宣布有趣b()Bool)
(断言(!(=(!a:命名a_val)b):命名eq_val))
(检查sat)
(获取作业)

无论如何,我可以确认Z3[Version4.3.2-64位-build hashcode 96F460A7F2D]的这种行为。有趣的是,将
(set option:product models true)
放在序言中,并将
(get value(ab))
放在
(check sat)
之后,会产生
((a false)(b false))
,因此分配似乎是可用的(请参阅)。看起来好像
(获取分配)
不受支持,而且使用它不会引发错误。