6

我正在寻找一种工具来重构布尔表达式。我有这样的表达

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

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

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

4

3 回答 3

1

我不确定工具,但看看布尔代数

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

于 2009-04-20T09:02:25.157 回答
1

DMS 软件再造工具包可以做到这一点。

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

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

我们过去这样做是为了对 C、RLL 和诊断方程系统进行布尔表达式简化和转换,无论是在大尺度表达式上,还是在许多中等尺度表达式上(尺度很像你的例子)。

编辑 5/19/2010:查看使用 DMS的传统代数转换示例。构造一个执行布尔代数的变体是微不足道的。

于 2010-01-31T23:31:30.927 回答
1

布尔重构和简化

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

于 2018-05-14T20:24:04.857 回答