Identity function for 2vecs, or all Xes when there are any X or Z bits.
This (arguably) matches the Verilog specification for unary +.
BOZO this is identical to 2vecx-fix.
Function:
(defun 4vec-xdet (x) (declare (xargs :guard (4vec-p x))) (let ((__function__ '4vec-xdet)) (declare (ignorable __function__)) (if (2vec-p x) (4vec-fix x) (4vec-x))))
Theorem:
(defthm 4vec-p-of-4vec-xdet (b* ((res (4vec-xdet x))) (4vec-p res)) :rule-classes :rewrite)
Theorem:
(defthm 4vec-xdet-of-2vecx-fix-x (equal (4vec-xdet (2vecx-fix x)) (4vec-xdet x)))
Theorem:
(defthm 4vec-xdet-2vecx-equiv-congruence-on-x (implies (2vecx-equiv x x-equiv) (equal (4vec-xdet x) (4vec-xdet x-equiv))) :rule-classes :congruence)