2009-04-20 79 views
6

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

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

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

目前我想手动重构表达式来证明与一个小的haskell quickcheck脚本的等价性。

+0

看看[这个问题和答案](http://stackoverflow.com/q/14902141/57477) - 基本上,使用[Wolfram Alpha](http://www.wolframalpha.com/) – CraigTP 2013-12-19 10:47:31

回答

1

我不知道有关的工具,而是看看Boolean Algebra

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

+0

第一个问题是大约50个变量的数量。第二个问题是我没有寻找一个最小表达式。我想重构现有的表达式,使其可维护。 – ordnungswidrig 2009-04-20 09:20:15

1

DMS Software Reengineering Tookit可以这样做。

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

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

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

编辑5/19/2010:使用DMS查看example of conventional algebra transformations。它的微不足道的是构造一个替代布尔代数的变体。