(ubdd-fix x) constructs a valid ubddp that is treated
identically to
This fixes up the tips of
Function:
(defun ubdd-fix (x) (declare (xargs :guard t)) (if (atom x) (if x t nil) (if (and (atom (car x)) (atom (cdr x)) (iff (car x) (cdr x))) (if (car x) t nil) (qcons (ubdd-fix (car x)) (ubdd-fix (cdr x))))))
Function:
(defun ubdd-fix-memoize-condition (x) (declare (ignorable x) (xargs :guard 't)) (consp x))
Theorem:
(defthm ubddp-ubdd-fix (ubddp (ubdd-fix x)))
Theorem:
(defthm eval-bdd-ubdd-fix (equal (eval-bdd (ubdd-fix x) env) (eval-bdd x env)))
Theorem:
(defthm ubdd-fix-x-is-x (implies (ubddp x) (equal (ubdd-fix x) x)))