6

ブール式をリファクタリングするツールを探しています。のような表現があります。

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

ツールは、式を単純化できる必要があります。たとえば、上記の例のサブ式「c または d」を抽出します。これを行うことができる無料のコンピューター代数システムはありますか?

現在、式を手動でリファクタリングして、小さな haskell クイックチェック スクリプトで同等性を証明することを考えています。

4

3 に答える 3

1

ツールについてはわかりませんが、ブール代数を見てください

すべての入力と出力のグリッドを描画して、最小限のブール式を見つけようとすることができます

于 2009-04-20T09:02:25.157 に答える
1

DMS Software Reengineering Toolkitはこれを行うことができます。

これは、言語 (Java を含む) を AST およびシンボル テーブルに解析するための一般化されたコンパイラ テクノロジです。DMS は、ソースからソースへの変換、および結合法則と交換法則の書き換えも提供します。

ブール式は、Java AST 式ツリーとして表示されます。ブール代数に関する一連のルールを提供することで、これらの式ツリーを操作できます。

過去にこれを行って、C、RLL、および診断方程式のシステムのブール式の単純化と変換を、大規模な式と多くの中規模の式の両方で実行しました(例のようにスケールします)。

EDIT 5/19/2010: DMS を使用した従来の代数変換の例を参照してください。代わりにブール代数を行うバリアントを構築するのは簡単です。

于 2010-01-31T23:31:30.927 に答える