Rewriting
(get-prefixes-alt start-rip prefixes rex-byte cnt x86) → *
The following is not a theorem, which is why we can not
define congruence rules about
(implies (xlate-equiv-memory x86-1 x86-2) (equal (mv-nth 0 (get-prefixes *64-bit-mode* start-rip prefixes rex-byte cnt x86-1)) (mv-nth 0 (get-prefixes *64-bit-mode* start-rip prefixes rex-byte cnt x86-2))))
The above would be a theorem if the following pre-conditions held
about both
(and (marking-view x86) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x x86)) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses x86))) (not (mv-nth 0 (las-to-pas cnt start-rip :x x86))))
Since 'conditional' congruence rules can't be defined, we define
an alternative version of
A drawback of this approach to have 'conditional' congruence-based
rules is that all the theorems I have about
Function:
(defun get-prefixes-alt (start-rip prefixes rex-byte cnt x86) (declare (xargs :stobjs (x86))) (declare (type (signed-byte 48) start-rip) (type (unsigned-byte 52) prefixes) (type (unsigned-byte 8) rex-byte) (type (integer 0 15) cnt)) (declare (xargs :guard (and (canonical-address-p (+ -1 cnt start-rip)) (not (app-view x86)) (marking-view x86)) :non-executable t)) (prog2$ (acl2::throw-nonexec-error 'get-prefixes-alt (list start-rip prefixes rex-byte cnt x86)) (let ((__function__ 'get-prefixes-alt)) (declare (ignorable __function__)) (if (and (marking-view x86) (64-bit-modep x86) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x x86)) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses x86))) (not (mv-nth 0 (las-to-pas cnt start-rip :x x86)))) (get-prefixes 0 start-rip prefixes rex-byte cnt x86) (mv nil prefixes rex-byte x86)))))
Theorem:
(defthm natp-get-prefixes-alt.new-prefixes (implies (forced-and (natp prefixes) (canonical-address-p start-rip) (x86p x86)) (natp (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))) :rule-classes :type-prescription)
Theorem:
(defthm natp-get-prefixes-alt.new-rex-byte (implies (forced-and (natp rex-byte) (natp prefixes) (x86p x86)) (natp (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))) :rule-classes :type-prescription)
Theorem:
(defthm prefixes-width-p-of-get-prefixes.new-prefixes-alt (implies (and (unsigned-byte-p 52 prefixes) (x86p x86)) (unsigned-byte-p 52 (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))) :rule-classes (:rewrite (:linear :corollary (implies (and (unsigned-byte-p 52 prefixes) (x86p x86)) (and (<= 0 (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (< (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)) 4503599627370496))) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p (:e expt)))))))
Theorem:
(defthm byte-p-of-get-prefixes.new-rex-byte-alt (implies (and (unsigned-byte-p 8 rex-byte) (natp prefixes) (x86p x86)) (unsigned-byte-p 8 (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))) :rule-classes (:rewrite (:linear :corollary (implies (and (unsigned-byte-p 8 rex-byte) (natp prefixes) (x86p x86)) (and (<= 0 (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (< (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)) 256))) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p (:e expt)))))))
Theorem:
(defthm x86p-get-prefixes-alt (implies (force (x86p x86)) (x86p (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm xr-ms-mv-nth-3-get-prefixes-alt (equal (xr :ms index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ms index x86)))
Theorem:
(defthm xr-env-mv-nth-3-get-prefixes-alt (equal (xr :env index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :env index x86)))
Theorem:
(defthm xr-undef-mv-nth-3-get-prefixes-alt (equal (xr :undef index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :undef index x86)))
Theorem:
(defthm xr-app-view-mv-nth-3-get-prefixes-alt (equal (xr :app-view index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :app-view index x86)))
Theorem:
(defthm xr-marking-view-mv-nth-3-get-prefixes-alt (equal (xr :marking-view index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :marking-view index x86)))
Theorem:
(defthm xr-enable-peripherals-mv-nth-3-get-prefixes-alt (equal (xr :enable-peripherals index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :enable-peripherals index x86)))
Theorem:
(defthm xr-handle-exceptions-mv-nth-3-get-prefixes-alt (equal (xr :handle-exceptions index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :handle-exceptions index x86)))
Theorem:
(defthm xr-os-info-mv-nth-3-get-prefixes-alt (equal (xr :os-info index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :os-info index x86)))
Theorem:
(defthm xr-rgf-mv-nth-3-get-prefixes-alt (equal (xr :rgf index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :rgf index x86)))
Theorem:
(defthm xr-rip-mv-nth-3-get-prefixes-alt (equal (xr :rip index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :rip index x86)))
Theorem:
(defthm xr-rflags-mv-nth-3-get-prefixes-alt (equal (xr :rflags index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :rflags index x86)))
Theorem:
(defthm xr-seg-visible-mv-nth-3-get-prefixes-alt (equal (xr :seg-visible index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :seg-visible index x86)))
Theorem:
(defthm xr-seg-hidden-base-mv-nth-3-get-prefixes-alt (equal (xr :seg-hidden-base index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :seg-hidden-base index x86)))
Theorem:
(defthm xr-seg-hidden-limit-mv-nth-3-get-prefixes-alt (equal (xr :seg-hidden-limit index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :seg-hidden-limit index x86)))
Theorem:
(defthm xr-seg-hidden-attr-mv-nth-3-get-prefixes-alt (equal (xr :seg-hidden-attr index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :seg-hidden-attr index x86)))
Theorem:
(defthm xr-str-mv-nth-3-get-prefixes-alt (equal (xr :str index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :str index x86)))
Theorem:
(defthm xr-ssr-visible-mv-nth-3-get-prefixes-alt (equal (xr :ssr-visible index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ssr-visible index x86)))
Theorem:
(defthm xr-ssr-hidden-base-mv-nth-3-get-prefixes-alt (equal (xr :ssr-hidden-base index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ssr-hidden-base index x86)))
Theorem:
(defthm xr-ssr-hidden-limit-mv-nth-3-get-prefixes-alt (equal (xr :ssr-hidden-limit index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ssr-hidden-limit index x86)))
Theorem:
(defthm xr-ssr-hidden-attr-mv-nth-3-get-prefixes-alt (equal (xr :ssr-hidden-attr index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ssr-hidden-attr index x86)))
Theorem:
(defthm xr-ctr-mv-nth-3-get-prefixes-alt (equal (xr :ctr index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :ctr index x86)))
Theorem:
(defthm xr-dbg-mv-nth-3-get-prefixes-alt (equal (xr :dbg index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :dbg index x86)))
Theorem:
(defthm xr-fp-data-mv-nth-3-get-prefixes-alt (equal (xr :fp-data index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-data index x86)))
Theorem:
(defthm xr-fp-ctrl-mv-nth-3-get-prefixes-alt (equal (xr :fp-ctrl index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-ctrl index x86)))
Theorem:
(defthm xr-fp-status-mv-nth-3-get-prefixes-alt (equal (xr :fp-status index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-status index x86)))
Theorem:
(defthm xr-fp-tag-mv-nth-3-get-prefixes-alt (equal (xr :fp-tag index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-tag index x86)))
Theorem:
(defthm xr-fp-last-inst-mv-nth-3-get-prefixes-alt (equal (xr :fp-last-inst index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-last-inst index x86)))
Theorem:
(defthm xr-fp-last-data-mv-nth-3-get-prefixes-alt (equal (xr :fp-last-data index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-last-data index x86)))
Theorem:
(defthm xr-fp-opcode-mv-nth-3-get-prefixes-alt (equal (xr :fp-opcode index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fp-opcode index x86)))
Theorem:
(defthm xr-mxcsr-mv-nth-3-get-prefixes-alt (equal (xr :mxcsr index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :mxcsr index x86)))
Theorem:
(defthm xr-opmsk-mv-nth-3-get-prefixes-alt (equal (xr :opmsk index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :opmsk index x86)))
Theorem:
(defthm xr-zmm-mv-nth-3-get-prefixes-alt (equal (xr :zmm index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :zmm index x86)))
Theorem:
(defthm xr-msr-mv-nth-3-get-prefixes-alt (equal (xr :msr index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :msr index x86)))
Theorem:
(defthm xr-inhibit-interrupts-one-instruction-mv-nth-3-get-prefixes-alt (equal (xr :inhibit-interrupts-one-instruction index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :inhibit-interrupts-one-instruction index x86)))
Theorem:
(defthm xr-time-stamp-counter-mv-nth-3-get-prefixes-alt (equal (xr :time-stamp-counter index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :time-stamp-counter index x86)))
Theorem:
(defthm xr-last-clock-event-mv-nth-3-get-prefixes-alt (equal (xr :last-clock-event index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :last-clock-event index x86)))
Theorem:
(defthm xr-implicit-supervisor-access-mv-nth-3-get-prefixes-alt (equal (xr :implicit-supervisor-access index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :implicit-supervisor-access index x86)))
Theorem:
(defthm xr-tty-in-mv-nth-3-get-prefixes-alt (equal (xr :tty-in index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :tty-in index x86)))
Theorem:
(defthm xr-tty-out-mv-nth-3-get-prefixes-alt (equal (xr :tty-out index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :tty-out index x86)))
Theorem:
(defthm xr-fault-and-get-prefixes-alt (equal (xr :fault index (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :fault index x86)))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-ms (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ms index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-env (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :env index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-undef (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :undef index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-enable-peripherals (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :enable-peripherals index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-handle-exceptions (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :handle-exceptions index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-os-info (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :os-info index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-rgf (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rgf index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-rip (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rip index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-str (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :str index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-ssr-visible (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-visible index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-ssr-hidden-base (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-base index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-ssr-hidden-limit (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-limit index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-ssr-hidden-attr (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-attr index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-dbg (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :dbg index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-data (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-data index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-ctrl (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-ctrl index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-status (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-status index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-tag (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-tag index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-last-inst (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-inst index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-last-data (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-data index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-fp-opcode (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-opcode index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-mxcsr (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :mxcsr index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-opmsk (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :opmsk index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-zmm (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :zmm index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-inhibit-interrupts-one-instruction (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :inhibit-interrupts-one-instruction index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-time-stamp-counter (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :time-stamp-counter index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-last-clock-event (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :last-clock-event index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-tty-in (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-in index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-0-get-prefixes-alt-xw-tty-out (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-out index val x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-ms (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ms index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-env (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :env index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-undef (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :undef index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-enable-peripherals (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :enable-peripherals index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-handle-exceptions (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :handle-exceptions index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-os-info (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :os-info index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-rgf (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rgf index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-rip (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rip index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-str (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :str index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-ssr-visible (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-visible index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-ssr-hidden-base (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-base index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-ssr-hidden-limit (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-limit index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-ssr-hidden-attr (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-attr index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-dbg (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :dbg index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-data (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-data index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-ctrl (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-ctrl index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-status (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-status index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-tag (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-tag index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-last-inst (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-inst index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-last-data (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-data index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-fp-opcode (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-opcode index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-mxcsr (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :mxcsr index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-opmsk (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :opmsk index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-zmm (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :zmm index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-inhibit-interrupts-one-instruction (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :inhibit-interrupts-one-instruction index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-time-stamp-counter (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :time-stamp-counter index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-last-clock-event (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :last-clock-event index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-tty-in (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-in index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-1-get-prefixes-alt-xw-tty-out (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-out index val x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-ms (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ms index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-env (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :env index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-undef (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :undef index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-enable-peripherals (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :enable-peripherals index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-handle-exceptions (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :handle-exceptions index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-os-info (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :os-info index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-rgf (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rgf index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-rip (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rip index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-str (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :str index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-ssr-visible (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-visible index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-ssr-hidden-base (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-base index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-ssr-hidden-limit (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-limit index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-ssr-hidden-attr (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-attr index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-dbg (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :dbg index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-data (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-data index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-ctrl (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-ctrl index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-status (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-status index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-tag (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-tag index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-last-inst (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-inst index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-last-data (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-data index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-fp-opcode (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-opcode index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-mxcsr (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :mxcsr index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-opmsk (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :opmsk index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-zmm (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :zmm index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-inhibit-interrupts-one-instruction (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :inhibit-interrupts-one-instruction index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-time-stamp-counter (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :time-stamp-counter index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-last-clock-event (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :last-clock-event index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-tty-in (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-in index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-2-get-prefixes-alt-xw-tty-out (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-out index val x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-ms (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ms index val x86))) (xw :ms index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-env (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :env index val x86))) (xw :env index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-undef (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :undef index val x86))) (xw :undef index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-enable-peripherals (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :enable-peripherals index val x86))) (xw :enable-peripherals index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-handle-exceptions (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :handle-exceptions index val x86))) (xw :handle-exceptions index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-os-info (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :os-info index val x86))) (xw :os-info index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-rgf (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rgf index val x86))) (xw :rgf index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-rip (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rip index val x86))) (xw :rip index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-str (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :str index val x86))) (xw :str index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-ssr-visible (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-visible index val x86))) (xw :ssr-visible index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-ssr-hidden-base (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-base index val x86))) (xw :ssr-hidden-base index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-ssr-hidden-limit (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-limit index val x86))) (xw :ssr-hidden-limit index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-ssr-hidden-attr (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :ssr-hidden-attr index val x86))) (xw :ssr-hidden-attr index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-dbg (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :dbg index val x86))) (xw :dbg index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-data (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-data index val x86))) (xw :fp-data index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-ctrl (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-ctrl index val x86))) (xw :fp-ctrl index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-status (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-status index val x86))) (xw :fp-status index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-tag (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-tag index val x86))) (xw :fp-tag index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-last-inst (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-inst index val x86))) (xw :fp-last-inst index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-last-data (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-last-data index val x86))) (xw :fp-last-data index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-fp-opcode (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :fp-opcode index val x86))) (xw :fp-opcode index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-mxcsr (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :mxcsr index val x86))) (xw :mxcsr index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-opmsk (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :opmsk index val x86))) (xw :opmsk index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-zmm (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :zmm index val x86))) (xw :zmm index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-inhibit-interrupts-one-instruction (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :inhibit-interrupts-one-instruction index val x86))) (xw :inhibit-interrupts-one-instruction index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-time-stamp-counter (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :time-stamp-counter index val x86))) (xw :time-stamp-counter index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-last-clock-event (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :last-clock-event index val x86))) (xw :last-clock-event index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-tty-in (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-in index val x86))) (xw :tty-in index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm mv-nth-3-get-prefixes-alt-xw-tty-out (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :tty-out index val x86))) (xw :tty-out index val (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86)))))
Theorem:
(defthm get-prefixes-alt-values-and-xw-rflags-in-sys-view (implies (and (equal (rflagsbits->ac (double-rewrite value)) (rflagsbits->ac (rflags x86))) (x86p x86)) (and (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))) (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))) (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))))
Theorem:
(defthm get-prefixes-alt-and-xw-rflags-state-in-sys-view (implies (and (equal (rflagsbits->ac (double-rewrite value)) (rflagsbits->ac (rflags x86))) (not (app-view x86)) (x86p x86)) (equal (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (xw :rflags nil value (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))))))
Theorem:
(defthm xr-rflags-and-mv-nth-3-get-prefixes-alt (equal (xr :rflags nil (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (xr :rflags nil x86)))
Theorem:
(defthm alignment-checking-enabled-p-and-mv-nth-3-get-prefixes-alt (equal (alignment-checking-enabled-p (mv-nth 3 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (alignment-checking-enabled-p x86)))
Theorem:
(defthm rewrite-get-prefixes-to-get-prefixes-alt (implies (forced-and (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86)))) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86)))) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip)) (equal (get-prefixes 0 start-rip prefixes rex-byte cnt x86) (get-prefixes-alt start-rip prefixes rex-byte cnt (double-rewrite x86)))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-zero-cnt (implies (and (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip)) (equal (get-prefixes-alt start-rip prefixes rex-byte 0 x86) (mv t prefixes rex-byte x86))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-no-prefix-byte (implies (and (b* (((mv flg prefix-byte &) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (and (not flg) (zp prefix-byte-group-code) (not (equal (ash prefix-byte -4) 4)))) (not (zp cnt)) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86)))) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86))))) (b* (((mv new-flg new-prefixes new-rex-byte &) (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (and (equal new-flg nil) (equal new-prefixes (let ((prefixes (!prefixes->nxt (mv-nth 1 (rb-alt 1 start-rip :x (double-rewrite x86))) prefixes))) (!prefixes->num (- 15 cnt) prefixes))) (equal new-rex-byte rex-byte)))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-no-legacy-prefix-but-rex-prefix (implies (and (b* (((mv flg prefix-byte &) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (and (not flg) (zp prefix-byte-group-code) (equal (ash prefix-byte -4) 4))) (not (zp cnt)) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86)))) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86))))) (equal (get-prefixes-alt start-rip prefixes rex-byte cnt x86) (b* (((mv & byte byte-x86) (rb-alt 1 start-rip :x x86)) (next-rip (the (signed-byte 49) (1+ start-rip)))) (if (not (canonical-address-p next-rip)) (mv (list :non-canonical-instruction-pointer next-rip) prefixes rex-byte byte-x86) (get-prefixes-alt next-rip prefixes byte (1- cnt) byte-x86))))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-group-1-prefix-in-marking-view (b* (((mv flg prefix-byte new-x86) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (implies (and (not flg) (equal prefix-byte-group-code 1) (canonical-address-p (1+ start-rip)) (not (zp cnt)) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86)))) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86))))) (equal (get-prefixes-alt start-rip prefixes rex-byte cnt x86) (get-prefixes-alt (+ 1 start-rip) (if (equal prefix-byte 240) (!prefixes->lck prefix-byte prefixes) (!prefixes->rep prefix-byte prefixes)) 0 (+ -1 cnt) new-x86)))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-group-2-prefix-in-marking-view (b* (((mv flg prefix-byte new-x86) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (implies (and (canonical-address-p (1+ start-rip)) (not (zp cnt)) (not flg) (equal prefix-byte-group-code 2) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86)))) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86))))) (equal (get-prefixes-alt start-rip prefixes rex-byte cnt x86) (if (or (equal prefix-byte 100) (equal prefix-byte 101)) (get-prefixes-alt (1+ start-rip) (!prefixes->seg prefix-byte prefixes) 0 (1- cnt) new-x86) (get-prefixes-alt (1+ start-rip) prefixes 0 (1- cnt) new-x86))))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-group-3-prefix-in-marking-view (b* (((mv flg prefix-byte new-x86) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (implies (and (canonical-address-p (1+ start-rip)) (not (zp cnt)) (not flg) (equal prefix-byte-group-code 3) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86)))) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86))))) (equal (get-prefixes-alt start-rip prefixes rex-byte cnt x86) (get-prefixes-alt (+ 1 start-rip) (!prefixes->opr prefix-byte prefixes) 0 (+ -1 cnt) new-x86)))))
Theorem:
(defthm get-prefixes-alt-opener-lemma-group-4-prefix-in-marking-view (b* (((mv flg prefix-byte new-x86) (rb-alt 1 start-rip :x (double-rewrite x86))) (prefix-byte-group-code (get-one-byte-prefix-array-code prefix-byte))) (implies (and (canonical-address-p (1+ start-rip)) (not (zp cnt)) (not flg) (equal prefix-byte-group-code 4) (marking-view x86) (64-bit-modep (double-rewrite x86)) (not (app-view x86)) (canonical-address-p start-rip) (disjoint-p (mv-nth 1 (las-to-pas cnt start-rip :x (double-rewrite x86))) (open-qword-paddr-list (gather-all-paging-structure-qword-addresses (double-rewrite x86)))) (not (mv-nth 0 (las-to-pas cnt start-rip :x (double-rewrite x86))))) (equal (get-prefixes-alt start-rip prefixes rex-byte cnt x86) (get-prefixes-alt (+ 1 start-rip) (!prefixes->adr prefix-byte prefixes) 0 (+ -1 cnt) new-x86)))))
Theorem:
(defthm get-prefixes-alt-xw-rflags-not-ac-values-in-sys-view (implies (equal (rflagsbits->ac (double-rewrite value)) (rflagsbits->ac (rflags x86))) (and (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))) (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt (xw :rflags nil value x86))) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86))))))
Theorem:
(defthm paging-equiv-memory-and-two-mv-nth-0-get-prefixes-alt (implies (and (paging-equiv-memory x86-1 x86-2) (xlate-equiv-memory x86-1 x86-2)) (equal (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-1)) (mv-nth 0 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-2)))))
Theorem:
(defthm paging-equiv-memory-and-two-mv-nth-1-get-prefixes-alt (implies (and (paging-equiv-memory x86-1 x86-2) (xlate-equiv-memory x86-1 x86-2)) (equal (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-1)) (mv-nth 1 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-2)))))
Theorem:
(defthm get-prefixes-alt-and-mv-nth-2-las-to-pas (implies (64-bit-modep (double-rewrite x86)) (and (equal (mv-nth 1 (get-prefixes-alt rip prefixes rex-byte cnt (mv-nth 2 (las-to-pas n lin-addr r-w-x x86)))) (mv-nth 1 (get-prefixes-alt rip prefixes rex-byte cnt (double-rewrite x86)))))))
Theorem:
(defthm paging-equiv-memory-and-two-mv-nth-2-get-prefixes-alt (implies (and (paging-equiv-memory x86-1 x86-2) (xlate-equiv-memory x86-1 x86-2)) (equal (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-1)) (mv-nth 2 (get-prefixes-alt start-rip prefixes rex-byte cnt x86-2)))))