(q-compose x l) composes the UBDD
BOZO document what this is doing. Is it like sexpr compose?
Function:
(defun q-compose (x l) (declare (xargs :guard t)) (cond ((atom x) x) ((atom l) (q-compose (cdr x) nil)) ((hons-equal (car x) (cdr x)) (q-compose (car x) (cdr l))) (t (q-ite (car l) (q-compose (car x) (cdr l)) (q-compose (cdr x) (cdr l))))))
Theorem:
(defthm ubddp-of-q-compose (implies (and (force (ubddp x)) (force (ubdd-listp l))) (equal (ubddp (q-compose x l)) t)))