Simplificación de expresiones booleanas

El siguiente tipo de dato algebraico representa las expresiones booleanas construidas con una variable (X), las constantes verdadera (V) y falsa (F), la negación (Neg) y la disyunción (Dis):

Por ejemplo, la expresión (¬X v V) se representa por (Dis (Neg X) V).

Definir las funciones

tales que (valor p i) es el valor de la expresión p cuando se le asigna a X el valor i. Por ejemplo,

y (simplifica p) es la expresión obtenida aplicándole a p las siguientes reglas de simplificación:

Por ejemplo,

Comprobar con QuickCheck que para cualquier expresión p y cualquier booleano i se verifica que (valor (simplifica p) i) es igual a (valor p i).

Nota: Escribir las soluciones usando la siguiente plantilla que contiene un generador de expresiones booleanas

Soluciones

Normalización de expresiones aritméticas

Enunciado

Soluciones

Problema de las puertas

Enunciado

Soluciones

Expresiones vectoriales

Enunciado

Expresiones aritmética normalizadas

Enunciado

Soluciones