代码之家  ›  专栏  ›  技术社区  ›  ordnungswidrig

重构布尔表达式的工具[关闭]

  •  6
  • ordnungswidrig  · 技术社区  · 17 年前

    我在找一个重构布尔表达式的工具。我有这样的表达方式

    a1 => (b1 <=> c or d) AND 
    a2 => (b2 <=> c or d) AND
    a2 => (b2 <=> c or d) 
    

    该工具应该能够简化表达式,例如提取上面示例中的子表达式“c或d”。有免费的计算机代数系统可以做到这一点吗?

    目前我考虑手动重构表达式,并用一个小haskell quickcheck脚本来证明等价性。

    3 回复  |  直到 17 年前
        1
  •  1
  •   Scott Cowan    17 年前

    我不确定有没有工具,但看看 Boolean Algebra

    您可以绘制所有输入和输出的网格,以尝试找到一个最小的布尔表达式

        2
  •  1
  •   Ira Baxter    16 年前

    这个 DMS Software Reengineering Tookit 可以这么做。

    它是通用的编译器技术,用于解析语言(包括Java)到表空间和符号表。dms还提供了源到源的转换,以及关联和交换律重写。

    您的布尔表达式将显示为Java AST表达式树。 通过提供一组关于布尔代数的规则,您可以操纵 那些表情树。

    我们过去这样做是为了对C、RLL和一个诊断方程组进行布尔表达式简化和转换,无论是在大型表达式上,还是在许多中型表达式上(比例非常像您的示例)。

    2010年5月19日编辑:见 example of conventional algebra transformations 使用DMS。构造一个变量来代替布尔代数是很简单的。

        3
  •  1
  •   Aditya Raj    8 年前

    Boolean Refactor and Simplification

    这个工具对于优化复杂的布尔表达式非常有用。