Graph-based Algorithms for Boolean Function Manipulation