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