This is the Boolean Function Laboratory for practicing the manipulation of Boolean functions. It takes a list of commands to be executed over Boolean functions and executes them, using Binary Decision Diagrams as internal representation.
The following commands are available:
var VariableName - Declares a new Boolean function variable with the given name.
FunctionName=Expression - Computes a new Boolean function with the given name based on the provided expression. Allowed expression parts (for subformulas psi and psi') are:
psi|psi' and psi->psi'
psi&psi'
(psi)
!psi
0 and 1 (for true and false)
variableName (for variables that have been defined previously)
Usual operator precedence rules are applied. When in doubt, use braces.
printDNFFunctionName - Prints the disjunctive normal form of the given Boolean function
printBDDFunctionName - Prints a ROBDD representation of the given Boolean function. Uses the variable order imposed by the order in which variables were declared. Then Edges are blue, thick, and have an arrow head. Else Edges are red, thin, and without arrow head. Edges to the 0 sink are not shown as this makes the BDDs easier to read in many cases.
The Boolean Function Lab was written by Ruediger Ehlers for teaching purposes and uses the following libraries:
The CuDD Binary Decision Diagram Library by Fabio Somenzi
The implementation was compiled to JavaScript/WebAssembly using enscripten.
Note that all operations that can be performed with this program can easily be performed using some binary decision diagram library in other programming language. For instance, for C and C++, CUDD can be used directly, and for Python, you can start with the pyDD package.