Number of value bit roles in a list of roles of signed integer bits.
(sinteger-bit-roles-value-count roles) → m
If the list of bit roles is well-formed
(see sinteger-bit-roles-wfp),
this is the number
Function:
(defun sinteger-bit-roles-value-count (roles) (declare (xargs :guard (sinteger-bit-role-listp roles))) (let ((__function__ 'sinteger-bit-roles-value-count)) (declare (ignorable __function__)) (cond ((endp roles) 0) ((sinteger-bit-role-case (car roles) :value) (1+ (sinteger-bit-roles-value-count (cdr roles)))) (t (sinteger-bit-roles-value-count (cdr roles))))))
Theorem:
(defthm natp-of-sinteger-bit-roles-value-count (b* ((m (sinteger-bit-roles-value-count roles))) (natp m)) :rule-classes :rewrite)
Theorem:
(defthm sinteger-bit-roles-value-count-alt-def (equal (sinteger-bit-roles-value-count roles) (len (sinteger-bit-roles-exponents roles))))
Theorem:
(defthm posp-of-sinteger-bit-roles-value-count (implies (sinteger-bit-roles-wfp roles) (b* ((m (sinteger-bit-roles-value-count roles))) (posp m))) :rule-classes (:rewrite :type-prescription))
Theorem:
(defthm sinteger-bit-roles-value-count-of-append (equal (sinteger-bit-roles-value-count (append roles1 roles2)) (+ (sinteger-bit-roles-value-count roles1) (sinteger-bit-roles-value-count roles2))))
Theorem:
(defthm sinteger-bit-roles-value-count-of-sinteger-bit-role-list-fix-roles (equal (sinteger-bit-roles-value-count (sinteger-bit-role-list-fix roles)) (sinteger-bit-roles-value-count roles)))
Theorem:
(defthm sinteger-bit-roles-value-count-sinteger-bit-role-list-equiv-congruence-on-roles (implies (sinteger-bit-role-list-equiv roles roles-equiv) (equal (sinteger-bit-roles-value-count roles) (sinteger-bit-roles-value-count roles-equiv))) :rule-classes :congruence)