Arithmetic shift, unsigned version.
See also lshu for a logical (instead of arithmetic) shift.
Function:
(defun ashu (size i cnt) (declare (xargs :guard (and (and (integerp size) (< 0 size)) (integerp i) (integerp cnt)))) (let ((__function__ 'ashu)) (declare (ignorable __function__)) (loghead size (ash (logext size i) cnt))))
Theorem:
(defthm ashu-type (b* ((nat (ashu size i cnt))) (natp nat)) :rule-classes :type-prescription)