(aig-and-list x) ands together all of the AIGs in the list
(aig-and-list x) → aig
As a dumb attempt at optimization, we try to avoid consing if we
see that there's a
Function:
(defun aig-and-list (x) (declare (xargs :guard t)) (let ((__function__ 'aig-and-list)) (declare (ignorable __function__)) (mbe :logic (if (atom x) t (aig-and (car x) (aig-and-list (cdr x)))) :exec (cond ((atom x) t) ((member-eql-without-truelistp nil x) nil) (t (aig-and-list-aux x))))))
Theorem:
(defthm aig-and-list-aux-removal (equal (aig-and-list-aux x) (aig-and-list x)))