(create-qword-address-list count addr) → *
Theorem:
(defthm n52p-left-shifting-a-40-bit-natp-by-12 (implies (unsigned-byte-p 40 x) (unsigned-byte-p 52 (+ 4095 (ash x 12)))) :rule-classes (:rewrite))
Theorem:
(defthm n52p-left-shifting-a-40-bit-natp-by-12-+-7 (implies (unsigned-byte-p 40 x) (unsigned-byte-p 52 (+ 7 (ash x 12)))) :rule-classes (:rewrite))
Theorem:
(defthm loghead-3-+8-addr (implies (equal (loghead 3 addr) 0) (equal (loghead 3 (+ 8 addr)) 0)))
Function:
(defun create-qword-address-list (count addr) (declare (type (unsigned-byte 52) addr)) (declare (xargs :guard (natp count))) (declare (xargs :guard (physical-address-p (+ -1 (ash count 3) addr)))) (let ((__function__ 'create-qword-address-list)) (declare (ignorable __function__)) (if (or (zp count) (not (physical-address-p addr)) (not (physical-address-p (+ 7 addr)))) nil (if (equal count 1) (list addr) (cons addr (create-qword-address-list (1- count) (+ 8 addr)))))))
Theorem:
(defthm nat-listp-create-qword-address-list (nat-listp (create-qword-address-list count addr)) :rule-classes :type-prescription)
Theorem:
(defthm qword-paddr-listp-create-qword-address-list (qword-paddr-listp (create-qword-address-list count addr)))
Theorem:
(defthm mult-8-qword-paddr-listp-create-qword-address-list (implies (equal (loghead 3 addr) 0) (mult-8-qword-paddr-listp (create-qword-address-list count addr))))
Theorem:
(defthm create-qword-address-list-1 (implies (and (physical-address-p (+ 7 addr)) (physical-address-p addr)) (equal (create-qword-address-list 1 addr) (list addr))))
Theorem:
(defthm non-nil-create-qword-address-list (implies (and (posp count) (physical-address-p addr) (physical-address-p (+ 7 addr))) (create-qword-address-list count addr)))
Theorem:
(defthm consp-create-qword-address-list (implies (and (physical-address-p addr) (physical-address-p (+ 7 addr)) (posp count)) (consp (create-qword-address-list count addr))) :rule-classes (:type-prescription :rewrite))
Theorem:
(defthm car-of-create-qword-address-list (implies (and (posp count) (physical-address-p addr) (physical-address-p (+ 7 addr))) (equal (car (create-qword-address-list count addr)) addr)))
Theorem:
(defthm member-p-create-qword-address-list (implies (and (<= addr x) (< x (+ (ash count 3) addr)) (equal (loghead 3 addr) 0) (equal (loghead 3 x) 0) (physical-address-p x) (physical-address-p addr)) (equal (member-p x (create-qword-address-list count addr)) t)))
Theorem:
(defthm not-member-p-create-qword-address-list (implies (or (not (<= addr x)) (not (< x (+ (ash count 3) addr)))) (equal (member-p x (create-qword-address-list count addr)) nil)))
Theorem:
(defthm no-duplicates-p-create-qword-address-list (no-duplicates-p (create-qword-address-list count addr)))