DotNet API中的软断言

时间:2015-08-13 21:33:06

标签: .net z3

我使用4.4.1的最新不稳定版本进行了一些实验,并得出结论,软断言对我来说效果很好,如下例所示:

    (assert(! ((and ( <= P291 200)( >= P291 100))) :named  R291mm ))
    (assert-soft(! (( = P291 170)) :named  R291d ):weight 7)

P291具有最小值和最大值(100,200) - 定义为硬约束 - 和默认值,如果没有其他约束影响该值,则应选择该默认值。

在命令行控制台上使用Z3我得到了预期的结果,但是一旦我使用我的DotNet应用程序,请通过ParseSMTLIB2File读取相同的文件,并使用Assert或AssertAndTrack将表达式提供给求解器(其他方法没有定义)软断言似乎被忽略了。仔细查看调试器会发现只能在Args中找到硬约束。所以ParseSMTLIB2File似乎没有准备好读取软约束。

我是否必须在上下文中设置特殊选项,还是我太早了?

如果我太早:是否有计划通过DotNet API提供软约束?如果答案是肯定的,那么时间表是什么?

THX

Christian J

0 个答案:

没有答案