(bitset-subsetp x y) efficiently determines if
Function:
(defun acl2::bitset-subsetp$inline (x y) (declare (type unsigned-byte x) (type unsigned-byte y)) (declare (xargs :guard (and (natp x) (natp y)))) (declare (xargs :split-types t)) (let ((__function__ 'bitset-subsetp)) (declare (ignorable __function__)) (eql 0 (the unsigned-byte (bitset-difference x y)))))
Theorem:
(defthm acl2::booleanp-of-bitset-subsetp (b* ((subsetp (acl2::bitset-subsetp$inline x y))) (booleanp subsetp)) :rule-classes :type-prescription)
Theorem:
(defthm bitset-subsetp-when-not-natp-left (implies (not (natp x)) (equal (bitset-subsetp x y) t)))
Theorem:
(defthm bitset-subsetp-when-not-natp-right (implies (not (natp y)) (equal (bitset-subsetp x y) (zp x))))
Theorem:
(defthm bitset-subsetp-of-nfix-left (equal (bitset-subsetp (nfix x) y) (bitset-subsetp x y)))
Theorem:
(defthm bitset-subsetp-of-nfix-right (equal (bitset-subsetp x (nfix y)) (bitset-subsetp x y)))
Theorem:
(defthm bitset-subsetp-removal (equal (bitset-subsetp x y) (subset (bitset-members x) (bitset-members y))))