【问题标题】:z3py expression simplificationz3py 表达式简化
【发布时间】:2013-07-18 02:49:37
【问题描述】:

我正在尝试使用 z3py 简化表达式,但找不到任何有关不同策略的文档。我找到的最好的资源是stack overflow question,它按名称列出了所有策略。

有人可以将我链接到有关可用策略的详细文档吗? 网上的python教程还不够。

或者有人可以推荐一个更好的方法来完成这个。

问题的一个例子是这样的表达式:

x < 5, x < 4, x < 3, x = 1我希望将其简化为x = 1

使用策略unit-subsume-simplify 似乎适用于本示例。

但是当我尝试一个更复杂的例子时,比如x > 1, x < 5, x != 3, x != 4,我得到x > 1, x < 5, x ≠ 3, x ≠ 4作为结果。当我想要x = 2

使用 z3py 实现这种简化的最佳方法是什么?

My current solution.

谢谢马特

【问题讨论】:

    标签: z3 z3py


    【解决方案1】:

    可能的解决方案:

    x = Int('x')
    s = Solver()
    s.add(x < 5, x < 4, x < 3, x == 1)
    print s.check()
    m = s.model()
    print m
    s1 = Solver()
    s1.add(x > 1, x < 5, x != 3, x != 4)
    print s1.check()
    m1 = s1.model()
    print m1
    

    输出:

    sat
    [x = 1]
    sat
    [x = 2]
    

    在线运行此解决方案here

    【讨论】:

    • 谢谢,但我不是在寻找求解器解决方案。我想删除较弱的术语并简化表达式。对于输入:x &lt; 5, x &lt; 4, x &lt; 3 我想要结果:x &lt; 3
    • 我不是专家,但我认为你的问题最好使用Redlog的Redlog包。
    【解决方案2】:

    Redlog 的Redlog 示例。请让我知道你的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2016-07-13
      • 2014-09-16
      相关资源
      最近更新 更多