Multi-step execution.
We perform
Function:
(defun step32n (n stat) (declare (xargs :guard (and (natp n) (stat32ip stat)))) (let ((__function__ 'step32n)) (declare (ignorable __function__)) (cond ((zp n) (stat32i-fix stat)) ((error32p stat) (stat32i-fix stat)) (t (step32n (1- n) (step32 stat))))))
Theorem:
(defthm stat32ip-of-step32n (b* ((new-stat (step32n n stat))) (stat32ip new-stat)) :rule-classes :rewrite)
Theorem:
(defthm step32n-of-nfix-n (equal (step32n (nfix n) stat) (step32n n stat)))
Theorem:
(defthm step32n-nat-equiv-congruence-on-n (implies (acl2::nat-equiv n n-equiv) (equal (step32n n stat) (step32n n-equiv stat))) :rule-classes :congruence)
Theorem:
(defthm step32n-of-stat32i-fix-stat (equal (step32n n (stat32i-fix stat)) (step32n n stat)))
Theorem:
(defthm step32n-stat32i-equiv-congruence-on-stat (implies (stat32i-equiv stat stat-equiv) (equal (step32n n stat) (step32n n stat-equiv))) :rule-classes :congruence)