Illustrate abstraction technique

This patch adds a solver that encodes the Boolean skeleton of a
formula using binary decision diagrams (BDDs). This illustrates
how the current framework could be used to experiment with
abstraction techniques.