Function:
(defun svstate-clean (x) (declare (xargs :guard (svstate-p x))) (let ((__function__ 'svstate-clean)) (declare (ignorable __function__)) (b* (((svstate x))) (change-svstate x :blkst (svstack-clean x.blkst) :nonblkst (fast-alist-clean x.nonblkst)))))
Theorem:
(defthm svstate-p-of-svstate-clean (b* ((new-x (svstate-clean x))) (svstate-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svstate-clean (b* ((?new-x (svstate-clean x))) (implies (not (member v (svstate-vars x))) (not (member v (svstate-vars new-x))))))
Theorem:
(defthm nonblkst-of-svstate-clean (b* ((?new-x (svstate-clean x))) (equal (svstate->nonblkst new-x) (fast-alist-clean (svstate->nonblkst x)))))
Theorem:
(defthm svstate-clean-of-svstate-fix-x (equal (svstate-clean (svstate-fix x)) (svstate-clean x)))
Theorem:
(defthm svstate-clean-svstate-equiv-congruence-on-x (implies (svstate-equiv x x-equiv) (equal (svstate-clean x) (svstate-clean x-equiv))) :rule-classes :congruence)