Writing a Boolean Algebra Engine (28 Days of Hacking: Day 22)

I usually don't code in Java anymore, as I am working primarily in C or Python, but today I decided to get back into Java and write a Boolean algebra engine. The engine has some rules coded into it, then applies these rules to a given expression. For performance, I apply some simple rules first to remove redundancy, and try to initially simplify the expression through things like absorption. However, the rules set is not complete here and therefore provides no simplification guarantees. Therefore, I then iteratively apply consensus laws to arrive at the simplified answer. This program would have been really helpful for my freshman year Intro to Computer Engineering class!