(sv::aig-logapp-russ n x y) → app
Function:
(defun sv::aig-logapp-russ (n x y) (declare (xargs :guard (and (true-listp n) (true-listp x) (true-listp y)))) (let ((__function__ 'sv::aig-logapp-russ)) (declare (ignorable __function__)) (if (atom n) (llist-fix y) (if (b* (((mv x1 & xend) (first/rest/end x)) ((mv y1 & yend) (first/rest/end y))) (and xend yend (equal x1 y1))) (llist-fix x) (sv::aig-ite-bss (car n) (b* ((w (ash 1 (len (cdr n))))) (sv::aig-logapp-nus w (s-take w x) (sv::aig-logapp-russ (cdr n) (sv::aig-logtail-ns w x) y))) (sv::aig-logapp-russ (cdr n) x y))))))
Theorem:
(defthm sv::true-listp-of-aig-logapp-russ (b* ((app (sv::aig-logapp-russ n x y))) (true-listp app)) :rule-classes :type-prescription)
Theorem:
(defthm sv::aig-logapp-russ-correct (b* ((app (sv::aig-logapp-russ n x y))) (and (equal (sv::aig-list->s app env) (logapp (sv::aig-list->u (acl2::rev n) env) (sv::aig-list->s x env) (sv::aig-list->s y env))))))