获取Z3中的作业
(get assignment)命令应返回符号列表及其真/假值(如果它们是sort Bool)。根据我的理解,只有当:productassignments设置为true,并且(check sat)返回sat时,才能执行此操作。但是,当我在Z3上运行一个小脚本来测试此操作时,(get assignment)只返回()-blank。 这是我的剧本:获取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
(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))
,因此分配似乎是可用的(请参阅)。看起来好像(获取分配)
不受支持,而且使用它不会引发错误。