Update the |ACL2|::|B| field of a evex-byte1 bit structure.
(!evex-byte1->b b byte1) → new-byte1
Function:
(defun !evex-byte1->b$inline (b byte1) (declare (xargs :guard (and (bitp b) (evex-byte1-p byte1)))) (mbe :logic (b* ((b (mbe :logic (bfix b) :exec b)) (byte1 (evex-byte1-fix byte1))) (part-install b byte1 :width 1 :low 5)) :exec (the (unsigned-byte 8) (logior (the (unsigned-byte 8) (logand (the (unsigned-byte 8) byte1) (the (signed-byte 7) -33))) (the (unsigned-byte 6) (ash (the (unsigned-byte 1) b) 5))))))
Theorem:
(defthm evex-byte1-p-of-!evex-byte1->b (b* ((new-byte1 (!evex-byte1->b$inline b byte1))) (evex-byte1-p new-byte1)) :rule-classes :rewrite)
Theorem:
(defthm !evex-byte1->b$inline-of-bfix-b (equal (!evex-byte1->b$inline (bfix b) byte1) (!evex-byte1->b$inline b byte1)))
Theorem:
(defthm !evex-byte1->b$inline-bit-equiv-congruence-on-b (implies (bit-equiv b b-equiv) (equal (!evex-byte1->b$inline b byte1) (!evex-byte1->b$inline b-equiv byte1))) :rule-classes :congruence)
Theorem:
(defthm !evex-byte1->b$inline-of-evex-byte1-fix-byte1 (equal (!evex-byte1->b$inline b (evex-byte1-fix byte1)) (!evex-byte1->b$inline b byte1)))
Theorem:
(defthm !evex-byte1->b$inline-evex-byte1-equiv-congruence-on-byte1 (implies (evex-byte1-equiv byte1 byte1-equiv) (equal (!evex-byte1->b$inline b byte1) (!evex-byte1->b$inline b byte1-equiv))) :rule-classes :congruence)
Theorem:
(defthm !evex-byte1->b-is-evex-byte1 (equal (!evex-byte1->b b byte1) (change-evex-byte1 byte1 :b b)))
Theorem:
(defthm evex-byte1->b-of-!evex-byte1->b (b* ((?new-byte1 (!evex-byte1->b$inline b byte1))) (equal (evex-byte1->b new-byte1) (bfix b))))
Theorem:
(defthm !evex-byte1->b-equiv-under-mask (b* ((?new-byte1 (!evex-byte1->b$inline b byte1))) (evex-byte1-equiv-under-mask new-byte1 byte1 -33)))