Executable multi-step execution function.
This is obtained from stepn via apt::simplify,
passing
We manually propagate the fixing and state validity preservation theorems
that accompany stepn to
Function:
(defun stepnx (n stat feat) (declare (xargs :guard (and (natp n) (statp stat) (featp feat) (stat-validp stat feat)))) (cond ((zp n) (stat-fix stat)) ((errorp stat feat) (stat-fix stat)) (t (stepnx (1- n) (stepx stat feat) feat))))
Theorem:
(defthm stepn-is-stepnx (equal (stepn n stat feat) (stepnx n stat feat)))
Theorem:
(defthm stepnx-of-nfix-n (equal (stepnx (nfix n) stat feat) (stepnx n stat feat)))
Theorem:
(defthm stepnx-nat-equiv-congruence-on-n (implies (acl2::nat-equiv n n-equiv) (equal (stepnx n stat feat) (stepnx n-equiv stat feat))) :rule-classes :congruence)
Theorem:
(defthm stepnx-of-stat-fix-stat (equal (stepnx n (stat-fix stat) feat) (stepnx n stat feat)))
Theorem:
(defthm stepnx-stat-equiv-congruence-on-stat (implies (stat-equiv stat stat-equiv) (equal (stepnx n stat feat) (stepnx n stat-equiv feat))) :rule-classes :congruence)
Theorem:
(defthm stepnx-of-feat-fix-feat (equal (stepnx n stat (feat-fix feat)) (stepnx n stat feat)))
Theorem:
(defthm stepnx-feat-equiv-congruence-on-feat (implies (feat-equiv feat feat-equiv) (equal (stepnx n stat feat) (stepnx n stat feat-equiv))) :rule-classes :congruence)
Theorem:
(defthm stat-validp-of-stepnx (implies (stat-validp stat feat) (stat-validp (stepnx n stat feat) feat)))