Setul 6

Folosiți tipul de formulă propozițională definit în exercițiul de la curs:

type bform = B of bool | V of string | Neg of bform | And of bform * bform | Or of bform * bform

Exercițiul 1 Scrieți o funcție care ia ca parametru o formulă propozițională și o atribuire pentru (unele) propoziții, dată ca dicționar sau listă de asociere (perechi string * bool), și returnează valoarea formulei pentru atribuirea dată (true/false) sau generează excepția Failure "not constant" dacă formula nu are o valoare determinată.

Exercițiul 2 Scrieți o funcție care ia ca parametru o formulă propozițională, un nume de variabilă (șir) și o valoare booleană (true/false) si returnează o formulă în care variabila a fost substituită peste tot cu valoarea dată.

Opțional, scrieți o funcție care simplifică o formulă. Indicați pe fiecare ramură regula de simplificare folosită.