2009-04-20 13 views
6

Estoy buscando una herramienta para refactorizar la expresión booleana. Tengo expresiones comoHerramienta para refactorizar expresiones booleanas

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

La herramienta debe ser capaz de simplificar las expresiones, p. extrae la expresión secundaria "c o d" en el ejemplo anterior. ¿Hay un sistema de álgebra computarizado gratuito que pueda hacer esto?

Actualmente pienso en refactorizar las expresiones manualmente y probar la equivalencia con una pequeña secuencia de comandos haskell quickcheck.

+0

Mire [esta pregunta y respuestas] (http://stackoverflow.com/q/14902141/57477) - Básicamente, use [Wolfram Alpha] (http://www.wolframalpha.com/) – CraigTP

Respuesta

1

No estoy seguro acerca de una herramienta, pero echar un vistazo a Boolean Algebra

se puede dibujar una cuadrícula de todas las entradas y la salida para tratar de encontrar una expresión booleana mínima

+0

El primer problema es que el número de variables es de aproximadamente 50. El segundo problema es que no estoy buscando una expresión mínima. Quiero refactorizar la expresión existente para hacerlos mantenibles. – ordnungswidrig

+0

para encontrar una herramienta, escribir algunas pruebas a su alrededor y crear un método a1> = foo (b1) –

+0

puede recorrer las matrices de a y b para recortarlo también –

1

El DMS Software Reengineering Tookit podría hacer esto .

Es una tecnología de compilación generalizada para analizar lenguajes (incluido Java) para AST y tablas de símbolos. DMS también proporciona transformaciones de fuente a fuente y reescritura de leyes asociativas y conmutativas.

Sus expresiones booleanas se mostrarían como árboles de expresión Java AST. Al proporcionar un conjunto de reglas sobre el álgebra booleana, puede manipular esos árboles de expresiones.

Hemos hecho esto en el pasado para llevar a cabo la simplificación y transformación de expresiones booleanas para C, RLL y un sistema de ecuaciones de diagnóstico, tanto en expresiones de gran escala como en muchas expresiones de escala mediana (escala muy similar a su ejemplo) .

EDITAR 19/5/2010: Vea un example of conventional algebra transformations usando DMS. Es trivial construir una variante que haga álgebra booleana en su lugar.

Cuestiones relacionadas