Number of sign bit roles in a list of roles of signed integer bits.
(sinteger-bit-roles-sign-count roles) → count
We count the number of sign bit roles. Note that the sign bit roles in a list are all the same.
Function:
(defun sinteger-bit-roles-sign-count (roles) (declare (xargs :guard (sinteger-bit-role-listp roles))) (let ((__function__ 'sinteger-bit-roles-sign-count)) (declare (ignorable __function__)) (cond ((endp roles) 0) ((sinteger-bit-role-case (car roles) :sign) (1+ (sinteger-bit-roles-sign-count (cdr roles)))) (t (sinteger-bit-roles-sign-count (cdr roles))))))
Theorem:
(defthm natp-of-sinteger-bit-roles-sign-count (b* ((count (sinteger-bit-roles-sign-count roles))) (natp count)) :rule-classes :rewrite)
Theorem:
(defthm sinteger-bit-roles-sign-count-of-sinteger-bit-role-list-fix-roles (equal (sinteger-bit-roles-sign-count (sinteger-bit-role-list-fix roles)) (sinteger-bit-roles-sign-count roles)))
Theorem:
(defthm sinteger-bit-roles-sign-count-sinteger-bit-role-list-equiv-congruence-on-roles (implies (sinteger-bit-role-list-equiv roles roles-equiv) (equal (sinteger-bit-roles-sign-count roles) (sinteger-bit-roles-sign-count roles-equiv))) :rule-classes :congruence)