(rvm08 addr x86) → (mv * * x86)
Function:
(defun rvm08$inline (addr x86) (declare (xargs :stobjs (x86))) (declare (type (signed-byte 48) addr)) (mbe :logic (if (canonical-address-p addr) (mv nil (memi (n48 addr) x86) x86) (mv 'rvm08 0 x86)) :exec (mv nil (memi (n48 addr) x86) x86)))
Theorem:
(defthm rvm08-no-error (implies (canonical-address-p addr) (equal (mv-nth 0 (rvm08 addr x86)) nil)))
Theorem:
(defthm n08p-mv-nth-1-rvm08 (unsigned-byte-p 8 (mv-nth 1 (rvm08 addr x86))) :rule-classes (:rewrite (:type-prescription :corollary (natp (mv-nth 1 (rvm08 addr x86))) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p natp)))) (:linear :corollary (and (<= 0 (mv-nth 1 (rvm08 addr x86))) (< (mv-nth 1 (rvm08 addr x86)) 256)) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p (:e expt)))))))
Theorem:
(defthm x86p-mv-nth-2-rvm08-unchanged (equal (mv-nth 2 (rvm08 addr x86)) x86))
Theorem:
(defthm xr-rvm08 (equal (xr fld index (mv-nth 2 (rvm08 addr x86))) (xr fld index x86)))
Theorem:
(defthm rvm08-xw-values (implies (not (equal fld :mem)) (and (equal (mv-nth 0 (rvm08 addr (xw fld index value x86))) (mv-nth 0 (rvm08 addr x86))) (equal (mv-nth 1 (rvm08 addr (xw fld index value x86))) (mv-nth 1 (rvm08 addr x86))))))