An 32-bit unsigned bitstruct type.
This is a bitstruct type introduced by defbitstruct, represented as a unsigned 32-bit integer.
Function:
(defun evex-prefixes-p$inline (x) (declare (xargs :guard t)) (mbe :logic (unsigned-byte-p 32 x) :exec (and (natp x) (< x 4294967296))))
Theorem:
(defthm evex-prefixes-p-when-unsigned-byte-p (implies (unsigned-byte-p 32 x) (evex-prefixes-p x)))
Theorem:
(defthm unsigned-byte-p-when-evex-prefixes-p (implies (evex-prefixes-p x) (unsigned-byte-p 32 x)))
Theorem:
(defthm evex-prefixes-p-compound-recognizer (implies (evex-prefixes-p x) (natp x)) :rule-classes :compound-recognizer)
Function:
(defun evex-prefixes-fix$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (mbe :logic (loghead 32 x) :exec x))
Theorem:
(defthm evex-prefixes-p-of-evex-prefixes-fix (b* ((fty::fixed (evex-prefixes-fix$inline x))) (evex-prefixes-p fty::fixed)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes-fix-when-evex-prefixes-p (implies (evex-prefixes-p x) (equal (evex-prefixes-fix x) x)))
Function:
(defun evex-prefixes-equiv$inline (x y) (declare (xargs :guard (and (evex-prefixes-p x) (evex-prefixes-p y)))) (equal (evex-prefixes-fix x) (evex-prefixes-fix y)))
Theorem:
(defthm evex-prefixes-equiv-is-an-equivalence (and (booleanp (evex-prefixes-equiv x y)) (evex-prefixes-equiv x x) (implies (evex-prefixes-equiv x y) (evex-prefixes-equiv y x)) (implies (and (evex-prefixes-equiv x y) (evex-prefixes-equiv y z)) (evex-prefixes-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm evex-prefixes-equiv-implies-equal-evex-prefixes-fix-1 (implies (evex-prefixes-equiv x x-equiv) (equal (evex-prefixes-fix x) (evex-prefixes-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm evex-prefixes-fix-under-evex-prefixes-equiv (evex-prefixes-equiv (evex-prefixes-fix x) x) :rule-classes (:rewrite :rewrite-quoted-constant))
Function:
(defun evex-prefixes$inline (byte0 byte1 byte2 byte3) (declare (xargs :guard (and (8bits-p byte0) (8bits-p byte1) (8bits-p byte2) (8bits-p byte3)))) (b* ((byte0 (mbe :logic (8bits-fix byte0) :exec byte0)) (byte1 (mbe :logic (8bits-fix byte1) :exec byte1)) (byte2 (mbe :logic (8bits-fix byte2) :exec byte2)) (byte3 (mbe :logic (8bits-fix byte3) :exec byte3))) (logapp 8 byte0 (logapp 8 byte1 (logapp 8 byte2 byte3)))))
Theorem:
(defthm evex-prefixes-p-of-evex-prefixes (b* ((evex-prefixes (evex-prefixes$inline byte0 byte1 byte2 byte3))) (evex-prefixes-p evex-prefixes)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes$inline-of-8bits-fix-byte0 (equal (evex-prefixes$inline (8bits-fix byte0) byte1 byte2 byte3) (evex-prefixes$inline byte0 byte1 byte2 byte3)))
Theorem:
(defthm evex-prefixes$inline-8bits-equiv-congruence-on-byte0 (implies (8bits-equiv byte0 byte0-equiv) (equal (evex-prefixes$inline byte0 byte1 byte2 byte3) (evex-prefixes$inline byte0-equiv byte1 byte2 byte3))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes$inline-of-8bits-fix-byte1 (equal (evex-prefixes$inline byte0 (8bits-fix byte1) byte2 byte3) (evex-prefixes$inline byte0 byte1 byte2 byte3)))
Theorem:
(defthm evex-prefixes$inline-8bits-equiv-congruence-on-byte1 (implies (8bits-equiv byte1 byte1-equiv) (equal (evex-prefixes$inline byte0 byte1 byte2 byte3) (evex-prefixes$inline byte0 byte1-equiv byte2 byte3))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes$inline-of-8bits-fix-byte2 (equal (evex-prefixes$inline byte0 byte1 (8bits-fix byte2) byte3) (evex-prefixes$inline byte0 byte1 byte2 byte3)))
Theorem:
(defthm evex-prefixes$inline-8bits-equiv-congruence-on-byte2 (implies (8bits-equiv byte2 byte2-equiv) (equal (evex-prefixes$inline byte0 byte1 byte2 byte3) (evex-prefixes$inline byte0 byte1 byte2-equiv byte3))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes$inline-of-8bits-fix-byte3 (equal (evex-prefixes$inline byte0 byte1 byte2 (8bits-fix byte3)) (evex-prefixes$inline byte0 byte1 byte2 byte3)))
Theorem:
(defthm evex-prefixes$inline-8bits-equiv-congruence-on-byte3 (implies (8bits-equiv byte3 byte3-equiv) (equal (evex-prefixes$inline byte0 byte1 byte2 byte3) (evex-prefixes$inline byte0 byte1 byte2 byte3-equiv))) :rule-classes :congruence)
Function:
(defun evex-prefixes-equiv-under-mask$inline (x x1 mask) (declare (xargs :guard (and (evex-prefixes-p x) (evex-prefixes-p x1) (integerp mask)))) (fty::int-equiv-under-mask (evex-prefixes-fix x) (evex-prefixes-fix x1) mask))
Function:
(defun evex-prefixes->byte0$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (mbe :logic (let ((x (evex-prefixes-fix x))) (part-select x :low 0 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 32) x)))))
Theorem:
(defthm 8bits-p-of-evex-prefixes->byte0 (b* ((byte0 (evex-prefixes->byte0$inline x))) (8bits-p byte0)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes->byte0$inline-of-evex-prefixes-fix-x (equal (evex-prefixes->byte0$inline (evex-prefixes-fix x)) (evex-prefixes->byte0$inline x)))
Theorem:
(defthm evex-prefixes->byte0$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (evex-prefixes->byte0$inline x) (evex-prefixes->byte0$inline x-equiv))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes->byte0-of-evex-prefixes (equal (evex-prefixes->byte0 (evex-prefixes byte0 byte1 byte2 byte3)) (8bits-fix byte0)))
Theorem:
(defthm evex-prefixes->byte0-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x evex-prefixes-equiv-under-mask) (evex-prefixes-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 255) 0)) (equal (evex-prefixes->byte0 x) (evex-prefixes->byte0 y))))
Function:
(defun evex-prefixes->byte1$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (mbe :logic (let ((x (evex-prefixes-fix x))) (part-select x :low 8 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 24) (ash (the (unsigned-byte 32) x) -8))))))
Theorem:
(defthm 8bits-p-of-evex-prefixes->byte1 (b* ((byte1 (evex-prefixes->byte1$inline x))) (8bits-p byte1)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes->byte1$inline-of-evex-prefixes-fix-x (equal (evex-prefixes->byte1$inline (evex-prefixes-fix x)) (evex-prefixes->byte1$inline x)))
Theorem:
(defthm evex-prefixes->byte1$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (evex-prefixes->byte1$inline x) (evex-prefixes->byte1$inline x-equiv))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes->byte1-of-evex-prefixes (equal (evex-prefixes->byte1 (evex-prefixes byte0 byte1 byte2 byte3)) (8bits-fix byte1)))
Theorem:
(defthm evex-prefixes->byte1-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x evex-prefixes-equiv-under-mask) (evex-prefixes-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 65280) 0)) (equal (evex-prefixes->byte1 x) (evex-prefixes->byte1 y))))
Function:
(defun evex-prefixes->byte2$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (mbe :logic (let ((x (evex-prefixes-fix x))) (part-select x :low 16 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 16) (ash (the (unsigned-byte 32) x) -16))))))
Theorem:
(defthm 8bits-p-of-evex-prefixes->byte2 (b* ((byte2 (evex-prefixes->byte2$inline x))) (8bits-p byte2)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes->byte2$inline-of-evex-prefixes-fix-x (equal (evex-prefixes->byte2$inline (evex-prefixes-fix x)) (evex-prefixes->byte2$inline x)))
Theorem:
(defthm evex-prefixes->byte2$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (evex-prefixes->byte2$inline x) (evex-prefixes->byte2$inline x-equiv))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes->byte2-of-evex-prefixes (equal (evex-prefixes->byte2 (evex-prefixes byte0 byte1 byte2 byte3)) (8bits-fix byte2)))
Theorem:
(defthm evex-prefixes->byte2-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x evex-prefixes-equiv-under-mask) (evex-prefixes-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 16711680) 0)) (equal (evex-prefixes->byte2 x) (evex-prefixes->byte2 y))))
Function:
(defun evex-prefixes->byte3$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (mbe :logic (let ((x (evex-prefixes-fix x))) (part-select x :low 24 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 8) (ash (the (unsigned-byte 32) x) -24))))))
Theorem:
(defthm 8bits-p-of-evex-prefixes->byte3 (b* ((byte3 (evex-prefixes->byte3$inline x))) (8bits-p byte3)) :rule-classes :rewrite)
Theorem:
(defthm evex-prefixes->byte3$inline-of-evex-prefixes-fix-x (equal (evex-prefixes->byte3$inline (evex-prefixes-fix x)) (evex-prefixes->byte3$inline x)))
Theorem:
(defthm evex-prefixes->byte3$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (evex-prefixes->byte3$inline x) (evex-prefixes->byte3$inline x-equiv))) :rule-classes :congruence)
Theorem:
(defthm evex-prefixes->byte3-of-evex-prefixes (equal (evex-prefixes->byte3 (evex-prefixes byte0 byte1 byte2 byte3)) (8bits-fix byte3)))
Theorem:
(defthm evex-prefixes->byte3-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x evex-prefixes-equiv-under-mask) (evex-prefixes-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 4278190080) 0)) (equal (evex-prefixes->byte3 x) (evex-prefixes->byte3 y))))
Theorem:
(defthm evex-prefixes-fix-in-terms-of-evex-prefixes (equal (evex-prefixes-fix x) (change-evex-prefixes x)))
Function:
(defun !evex-prefixes->byte0$inline (byte0 x) (declare (xargs :guard (and (8bits-p byte0) (evex-prefixes-p x)))) (mbe :logic (b* ((byte0 (mbe :logic (8bits-fix byte0) :exec byte0)) (x (evex-prefixes-fix x))) (part-install byte0 x :width 8 :low 0)) :exec (the (unsigned-byte 32) (logior (the (unsigned-byte 32) (logand (the (unsigned-byte 32) x) (the (signed-byte 9) -256))) (the (unsigned-byte 8) byte0)))))
Theorem:
(defthm evex-prefixes-p-of-!evex-prefixes->byte0 (b* ((new-x (!evex-prefixes->byte0$inline byte0 x))) (evex-prefixes-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !evex-prefixes->byte0$inline-of-8bits-fix-byte0 (equal (!evex-prefixes->byte0$inline (8bits-fix byte0) x) (!evex-prefixes->byte0$inline byte0 x)))
Theorem:
(defthm !evex-prefixes->byte0$inline-8bits-equiv-congruence-on-byte0 (implies (8bits-equiv byte0 byte0-equiv) (equal (!evex-prefixes->byte0$inline byte0 x) (!evex-prefixes->byte0$inline byte0-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte0$inline-of-evex-prefixes-fix-x (equal (!evex-prefixes->byte0$inline byte0 (evex-prefixes-fix x)) (!evex-prefixes->byte0$inline byte0 x)))
Theorem:
(defthm !evex-prefixes->byte0$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (!evex-prefixes->byte0$inline byte0 x) (!evex-prefixes->byte0$inline byte0 x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte0-is-evex-prefixes (equal (!evex-prefixes->byte0 byte0 x) (change-evex-prefixes x :byte0 byte0)))
Theorem:
(defthm evex-prefixes->byte0-of-!evex-prefixes->byte0 (b* ((?new-x (!evex-prefixes->byte0$inline byte0 x))) (equal (evex-prefixes->byte0 new-x) (8bits-fix byte0))))
Theorem:
(defthm !evex-prefixes->byte0-equiv-under-mask (b* ((?new-x (!evex-prefixes->byte0$inline byte0 x))) (evex-prefixes-equiv-under-mask new-x x -256)))
Function:
(defun !evex-prefixes->byte1$inline (byte1 x) (declare (xargs :guard (and (8bits-p byte1) (evex-prefixes-p x)))) (mbe :logic (b* ((byte1 (mbe :logic (8bits-fix byte1) :exec byte1)) (x (evex-prefixes-fix x))) (part-install byte1 x :width 8 :low 8)) :exec (the (unsigned-byte 32) (logior (the (unsigned-byte 32) (logand (the (unsigned-byte 32) x) (the (signed-byte 17) -65281))) (the (unsigned-byte 16) (ash (the (unsigned-byte 8) byte1) 8))))))
Theorem:
(defthm evex-prefixes-p-of-!evex-prefixes->byte1 (b* ((new-x (!evex-prefixes->byte1$inline byte1 x))) (evex-prefixes-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !evex-prefixes->byte1$inline-of-8bits-fix-byte1 (equal (!evex-prefixes->byte1$inline (8bits-fix byte1) x) (!evex-prefixes->byte1$inline byte1 x)))
Theorem:
(defthm !evex-prefixes->byte1$inline-8bits-equiv-congruence-on-byte1 (implies (8bits-equiv byte1 byte1-equiv) (equal (!evex-prefixes->byte1$inline byte1 x) (!evex-prefixes->byte1$inline byte1-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte1$inline-of-evex-prefixes-fix-x (equal (!evex-prefixes->byte1$inline byte1 (evex-prefixes-fix x)) (!evex-prefixes->byte1$inline byte1 x)))
Theorem:
(defthm !evex-prefixes->byte1$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (!evex-prefixes->byte1$inline byte1 x) (!evex-prefixes->byte1$inline byte1 x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte1-is-evex-prefixes (equal (!evex-prefixes->byte1 byte1 x) (change-evex-prefixes x :byte1 byte1)))
Theorem:
(defthm evex-prefixes->byte1-of-!evex-prefixes->byte1 (b* ((?new-x (!evex-prefixes->byte1$inline byte1 x))) (equal (evex-prefixes->byte1 new-x) (8bits-fix byte1))))
Theorem:
(defthm !evex-prefixes->byte1-equiv-under-mask (b* ((?new-x (!evex-prefixes->byte1$inline byte1 x))) (evex-prefixes-equiv-under-mask new-x x -65281)))
Function:
(defun !evex-prefixes->byte2$inline (byte2 x) (declare (xargs :guard (and (8bits-p byte2) (evex-prefixes-p x)))) (mbe :logic (b* ((byte2 (mbe :logic (8bits-fix byte2) :exec byte2)) (x (evex-prefixes-fix x))) (part-install byte2 x :width 8 :low 16)) :exec (the (unsigned-byte 32) (logior (the (unsigned-byte 32) (logand (the (unsigned-byte 32) x) (the (signed-byte 25) -16711681))) (the (unsigned-byte 24) (ash (the (unsigned-byte 8) byte2) 16))))))
Theorem:
(defthm evex-prefixes-p-of-!evex-prefixes->byte2 (b* ((new-x (!evex-prefixes->byte2$inline byte2 x))) (evex-prefixes-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !evex-prefixes->byte2$inline-of-8bits-fix-byte2 (equal (!evex-prefixes->byte2$inline (8bits-fix byte2) x) (!evex-prefixes->byte2$inline byte2 x)))
Theorem:
(defthm !evex-prefixes->byte2$inline-8bits-equiv-congruence-on-byte2 (implies (8bits-equiv byte2 byte2-equiv) (equal (!evex-prefixes->byte2$inline byte2 x) (!evex-prefixes->byte2$inline byte2-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte2$inline-of-evex-prefixes-fix-x (equal (!evex-prefixes->byte2$inline byte2 (evex-prefixes-fix x)) (!evex-prefixes->byte2$inline byte2 x)))
Theorem:
(defthm !evex-prefixes->byte2$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (!evex-prefixes->byte2$inline byte2 x) (!evex-prefixes->byte2$inline byte2 x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte2-is-evex-prefixes (equal (!evex-prefixes->byte2 byte2 x) (change-evex-prefixes x :byte2 byte2)))
Theorem:
(defthm evex-prefixes->byte2-of-!evex-prefixes->byte2 (b* ((?new-x (!evex-prefixes->byte2$inline byte2 x))) (equal (evex-prefixes->byte2 new-x) (8bits-fix byte2))))
Theorem:
(defthm !evex-prefixes->byte2-equiv-under-mask (b* ((?new-x (!evex-prefixes->byte2$inline byte2 x))) (evex-prefixes-equiv-under-mask new-x x -16711681)))
Function:
(defun !evex-prefixes->byte3$inline (byte3 x) (declare (xargs :guard (and (8bits-p byte3) (evex-prefixes-p x)))) (mbe :logic (b* ((byte3 (mbe :logic (8bits-fix byte3) :exec byte3)) (x (evex-prefixes-fix x))) (part-install byte3 x :width 8 :low 24)) :exec (the (unsigned-byte 32) (logior (the (unsigned-byte 32) (logand (the (unsigned-byte 32) x) (the (signed-byte 33) -4278190081))) (the (unsigned-byte 32) (ash (the (unsigned-byte 8) byte3) 24))))))
Theorem:
(defthm evex-prefixes-p-of-!evex-prefixes->byte3 (b* ((new-x (!evex-prefixes->byte3$inline byte3 x))) (evex-prefixes-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !evex-prefixes->byte3$inline-of-8bits-fix-byte3 (equal (!evex-prefixes->byte3$inline (8bits-fix byte3) x) (!evex-prefixes->byte3$inline byte3 x)))
Theorem:
(defthm !evex-prefixes->byte3$inline-8bits-equiv-congruence-on-byte3 (implies (8bits-equiv byte3 byte3-equiv) (equal (!evex-prefixes->byte3$inline byte3 x) (!evex-prefixes->byte3$inline byte3-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte3$inline-of-evex-prefixes-fix-x (equal (!evex-prefixes->byte3$inline byte3 (evex-prefixes-fix x)) (!evex-prefixes->byte3$inline byte3 x)))
Theorem:
(defthm !evex-prefixes->byte3$inline-evex-prefixes-equiv-congruence-on-x (implies (evex-prefixes-equiv x x-equiv) (equal (!evex-prefixes->byte3$inline byte3 x) (!evex-prefixes->byte3$inline byte3 x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !evex-prefixes->byte3-is-evex-prefixes (equal (!evex-prefixes->byte3 byte3 x) (change-evex-prefixes x :byte3 byte3)))
Theorem:
(defthm evex-prefixes->byte3-of-!evex-prefixes->byte3 (b* ((?new-x (!evex-prefixes->byte3$inline byte3 x))) (equal (evex-prefixes->byte3 new-x) (8bits-fix byte3))))
Theorem:
(defthm !evex-prefixes->byte3-equiv-under-mask (b* ((?new-x (!evex-prefixes->byte3$inline byte3 x))) (evex-prefixes-equiv-under-mask new-x x 16777215)))
Function:
(defun evex-prefixes-debug$inline (x) (declare (xargs :guard (evex-prefixes-p x))) (b* (((evex-prefixes x))) (cons (cons 'byte0 x.byte0) (cons (cons 'byte1 x.byte1) (cons (cons 'byte2 x.byte2) (cons (cons 'byte3 x.byte3) nil))))))