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