Partitioned ROBDDs - a compact, canonical and efficiently manipulable representation for Boolean functions