(rm-low-64 addr x86) → *
Function:
(defun rm-low-64 (addr x86) (declare (xargs :stobjs (x86))) (declare (type (unsigned-byte 52) addr)) (declare (xargs :guard (and (not (app-view x86)) (integerp addr) (<= 0 addr) (< (+ 7 addr) *mem-size-in-bytes*)))) (let ((__function__ 'rm-low-64)) (declare (ignorable __function__)) (if (mbt (not (app-view x86))) (b* ((addr (mbe :logic (ifix addr) :exec addr)) ((the (unsigned-byte 32) dword0) (rm-low-32 addr x86)) ((the (unsigned-byte 32) dword1) (rm-low-32 (+ 4 addr) x86)) ((the (unsigned-byte 64) qword) (logior (the (unsigned-byte 64) (ash dword1 32)) dword0))) qword) 0)))
Theorem:
(defthm rm-low-64-in-app-view (implies (app-view x86) (equal (rm-low-64 p-addr x86) 0)))
Theorem:
(defthm n64p-rm-low-64 (unsigned-byte-p 64 (rm-low-64 addr x86)) :rule-classes (:rewrite (:type-prescription :corollary (natp (rm-low-64 addr x86)) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p natp)))) (:linear :corollary (and (<= 0 (rm-low-64 addr x86)) (< (rm-low-64 addr x86) 18446744073709551616)) :hints (("Goal" :in-theory '(unsigned-byte-p integer-range-p (:e expt)))))))
Theorem:
(defthm rm-low-64-xw (implies (and (not (equal fld :mem)) (not (equal fld :app-view))) (equal (rm-low-64 addr (xw fld index val x86)) (rm-low-64 addr x86))))