Bitwise logical NOT of a 4vec.
Function:
(defun 4vec-bitnot (x) (declare (xargs :guard (4vec-p x))) (let ((__function__ '4vec-bitnot)) (declare (ignorable __function__)) (3vec-bitnot (3vec-fix x))))
Theorem:
(defthm 3vec-p!-of-4vec-bitnot (b* ((~x (4vec-bitnot x))) (3vec-p! ~x)) :rule-classes :rewrite)
Main correctness theorem: each result bit is just the ACL2::4v-not of the corresponding input bit.
Theorem:
(defthm 4vec-bitnot-bits (equal (4vec-idx->4v n (4vec-bitnot x)) (acl2::4v-not (4vec-idx->4v n x))))
Theorem:
(defthm 4vec-bitnot-of-3vec-fix-x (equal (4vec-bitnot (3vec-fix x)) (4vec-bitnot x)))
Theorem:
(defthm 4vec-bitnot-3vec-equiv-congruence-on-x (implies (3vec-equiv x x-equiv) (equal (4vec-bitnot x) (4vec-bitnot x-equiv))) :rule-classes :congruence)