Multi-step execution.
We perform
Function:
(defun step32n (n stat) (declare (xargs :guard (and (natp n) (state32p stat)))) (let ((__function__ 'step32n)) (declare (ignorable __function__)) (cond ((zp n) (state32-fix stat)) ((error32p stat) (state32-fix stat)) (t (step32n (1- n) (step32 stat))))))
Theorem:
(defthm state32p-of-step32n (b* ((new-stat (step32n n stat))) (state32p 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-state32-fix-stat (equal (step32n n (state32-fix stat)) (step32n n stat)))
Theorem:
(defthm step32n-state32-equiv-congruence-on-stat (implies (state32-equiv stat stat-equiv) (equal (step32n n stat) (step32n n stat-equiv))) :rule-classes :congruence)