(xlate-equiv-memory x86-1 x86-2) → *
Function:
(defun xlate-equiv-memory (x86-1 x86-2) (declare (xargs :guard (and (x86p x86-1) (x86p x86-2)) :non-executable t)) (prog2$ (acl2::throw-nonexec-error 'xlate-equiv-memory (list x86-1 x86-2)) (let ((__function__ 'xlate-equiv-memory)) (declare (ignorable __function__)) (if (and (equal (xr :app-view nil x86-1) nil) (equal (xr :app-view nil x86-2) nil) (64-bit-modep x86-1) (64-bit-modep x86-2)) (and (xlate-equiv-structures x86-1 x86-2) (all-mem-except-paging-structures-equal x86-1 x86-2)) (equal x86-1 x86-2)))))
Theorem:
(defthm xlate-equiv-memory-is-an-equivalence (and (booleanp (xlate-equiv-memory x y)) (xlate-equiv-memory x x) (implies (xlate-equiv-memory x y) (xlate-equiv-memory y x)) (implies (and (xlate-equiv-memory x y) (xlate-equiv-memory y z)) (xlate-equiv-memory x z))) :rule-classes (:equivalence))
Theorem:
(defthm xlate-equiv-memory-refines-xlate-equiv-structures (implies (xlate-equiv-memory x86-1 x86-2) (xlate-equiv-structures x86-1 x86-2)) :rule-classes :refinement)
Theorem:
(defthm xlate-equiv-memory-refines-all-mem-except-paging-structures-equal (implies (xlate-equiv-memory x86-1 x86-2) (all-mem-except-paging-structures-equal x86-1 x86-2)) :rule-classes :refinement)
Theorem:
(defthm xlate-equiv-memory-implies-equal-64-bit-modep-1 (implies (xlate-equiv-memory x86 x86-equiv) (equal (64-bit-modep x86) (64-bit-modep x86-equiv))) :rule-classes (:congruence))
Theorem:
(defthm xlate-equiv-memory-and-xw-rflags (implies (and (equal (rflagsbits->ac val) (rflagsbits->ac (xr :rflags nil x86))) (64-bit-modep x86) (not (app-view x86))) (xlate-equiv-memory (xw :rflags nil val x86) (double-rewrite x86))))