(aig-parity-s x) → *
Function:
(defun aig-parity-s (x) (declare (xargs :guard (true-listp x))) (let ((__function__ 'aig-parity-s)) (declare (ignorable __function__)) (b* (((mv xf xr xe) (gl::first/rest/end x))) (if xe nil (aig-xor xf (aig-parity-s xr))))))
Theorem:
(defthm aig-parity-s-correct (let ((xv (aig-list->s x env))) (implies (<= 0 xv) (equal (aig-eval (aig-parity-s x) env) (bit->bool (parity (+ 1 (integer-length xv)) xv))))))
Theorem:
(defthm aig-parity-s-of-list-fix-x (equal (aig-parity-s (list-fix x)) (aig-parity-s x)))
Theorem:
(defthm aig-parity-s-list-equiv-congruence-on-x (implies (list-equiv x x-equiv) (equal (aig-parity-s x) (aig-parity-s x-equiv))) :rule-classes :congruence)