Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 4.3:获取完整的模型_Z3 - Fatal编程技术网

Z3 4.3:获取完整的模型

Z3 4.3:获取完整的模型,z3,Z3,这个问题和我的差不多,但解决方案对我不起作用。对不起,我想对这个答案发表评论,而不是问一个新问题,但我没有足够的声誉 我在做模特。有两层楼和上下两个按钮。我将转换建模为谓词动作x电梯x电梯(电梯=状态),这样T(a,s,s')保持动作a可能导致从s到s'的转换,其中动作按下向上或向下按钮。问题的可满足性并不取决于按下按钮的人,但我希望Z3为函数subject:Action->person分配一些解释 目标是为状态机找到一个k-跟踪,这可能有助于理解电梯的行为 我尝试了不同的选项组合,包括auto

这个问题和我的差不多,但解决方案对我不起作用。对不起,我想对这个答案发表评论,而不是问一个新问题,但我没有足够的声誉

我在做模特。有两层楼和上下两个按钮。我将转换建模为谓词动作x电梯x电梯(电梯=状态),这样T(a,s,s')保持动作a可能导致从s到s'的转换,其中动作按下向上或向下按钮。问题的可满足性并不取决于按下按钮的人,但我希望Z3为函数subject:Action->person分配一些解释

目标是为状态机找到一个k-跟踪,这可能有助于理解电梯的行为

我尝试了不同的选项组合,包括
auto-config=false
model-completion=true
,但没有成功。我还试图强制模型完成,要求提供(subject Action0)的值,但Z3仍然没有为subject指定解释

我的Z3版本是在Linux amd64上运行的4.3.1。

很好的例子。 抽象排序人没有出现在断言中, 返回一个人的函数也不用于 断言

通过将参数直接传递给函数,可以强制eval完成模型:

换句话说,使用

   (eval <term> :model-completion true)
(评估:模型完成为真)
而不是

   (eval <term>)
(set-option :model_completion true)
(eval <term> :model_completion true)
(eval)

另一种不同但有点老套的方法是确保要计算的术语包含在原始模型中:

参数
:模型完成的问题已修复。修复程序已在上提供

该修复程序将在下一个正式版本中提供。 如果需要,可以下载
不稳定的
(正在进行的工作)分支,并对其进行编译。要下载,只需点击上面链接中的
download
按钮

顺便说一句,新Z3有一个新的参数设置框架,允许我们设置内部模块参数。在下一个版本中(以及
unstable
分支中)。我们必须使用

(set-option :model_evaluator.completion true)
(eval <term> :completion true)
而不是

   (eval <term>)
(set-option :model_completion true)
(eval <term> :model_completion true)
因为我们正在设置模块
model\u evaluator
的参数。 此外,我们必须使用

(set-option :model_evaluator.completion true)
(eval <term> :completion true)
(评估:完成为真)
而不是

   (eval <term>)
(set-option :model_completion true)
(eval <term> :model_completion true)
(评估:模型完成正确)
因为我们正在设置模型计算器的参数
completion