Alternative version of x86-run that uses x86-fetch-decode-execute-halt instead of x86-fetch-decode-execute
(x86-run-halt halt-address n x86) → x86
Function:
(defun x86-run-halt (halt-address n x86) (declare (xargs :stobjs (x86))) (declare (type (signed-byte 48) halt-address) (type (unsigned-byte 59) n)) (let ((__function__ 'x86-run-halt)) (declare (ignorable __function__)) (cond ((fault x86) x86) ((ms x86) x86) ((mbe :logic (zp n) :exec (equal 0 n)) x86) (t (let* ((x86 (x86-fetch-decode-execute-halt halt-address x86)) (n (the (unsigned-byte 59) (1- n)))) (x86-run-halt halt-address n x86))))))
Theorem:
(defthm x86p-of-x86-run-halt (implies (x86p x86) (b* ((x86 (x86-run-halt halt-address n x86))) (x86p x86))) :rule-classes :rewrite)