重构布尔表达式的工具

时间:2009-04-20 08:43:37

标签: refactoring boolean-logic boolean-expression

我正在寻找一个重构布尔表达式的工具。我有像

这样的表达式
a1 => (b1 <=> c or d) AND 
a2 => (b2 <=> c or d) AND
a2 => (b2 <=> c or d) 

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

目前我认为手动重构表达式可以证明与haskell quickcheck脚本的等效性。

3 个答案:

答案 0 :(得分:1)

我不确定某个工具,但请查看Boolean Algebra

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

答案 1 :(得分:1)

DMS Software Reengineering Tookit可以做到这一点。

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

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

过去我们已经完成了这项工作,对C,RLL和诊断方程系统进行布尔表达式简化和转换,包括大规模表达式和大量中等规模表达式(与您的示例非常相似)。

EDIT 5/19/2010:使用DMS查看example of conventional algebra transformations。它很容易构造一个代替布尔代数的变体。

答案 2 :(得分:1)

Boolean Refactor and Simplification

此工具非常适合优化复杂的布尔表达式。

相关问题