(bitset-difference x y) constructs the set
Function:
(defun acl2::bitset-difference$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-difference)) (declare (ignorable __function__)) (the unsigned-byte (logandc1 (the unsigned-byte (lnfix y)) (the unsigned-byte (lnfix x))))))
Theorem:
(defthm acl2::natp-of-bitset-difference (b* ((bitset (acl2::bitset-difference$inline x y))) (natp bitset)) :rule-classes :type-prescription)
Theorem:
(defthm bitset-difference-when-not-natp-left (implies (not (natp x)) (equal (bitset-difference x y) 0)))
Theorem:
(defthm bitset-difference-when-not-natp-right (implies (not (natp y)) (equal (bitset-difference x y) (nfix x))))
Theorem:
(defthm bitset-difference-of-nfix-left (equal (bitset-difference (nfix x) y) (bitset-difference x y)))
Theorem:
(defthm bitset-difference-of-nfix-right (equal (bitset-difference x (nfix y)) (bitset-difference x y)))
Theorem:
(defthm bitset-members-of-bitset-difference (equal (bitset-members (bitset-difference x y)) (difference (bitset-members x) (bitset-members y))))