(svexlist-rewrite-fixpoint x &key (count '4) (verbosep 'nil)) → xx
Function:
(defun svexlist-rewrite-fixpoint-fn (x count verbosep) (declare (xargs :guard (and (svexlist-p x) (natp count)))) (let ((__function__ 'svexlist-rewrite-fixpoint)) (declare (ignorable __function__)) (b* ((x (mbe :logic (svexlist-fix x) :exec x)) ((when (zp count)) x) (newx (svexlist-rewrite-top x :verbosep verbosep)) ((when (hons-equal x newx)) x)) (svexlist-rewrite-fixpoint newx :count (1- count) :verbosep verbosep))))
Theorem:
(defthm svexlist-p-of-svexlist-rewrite-fixpoint (b* ((xx (svexlist-rewrite-fixpoint-fn x count verbosep))) (svexlist-p xx)) :rule-classes :rewrite)
Theorem:
(defthm svexlist-rewrite-fixpoint-fn-of-svexlist-fix-x (equal (svexlist-rewrite-fixpoint-fn (svexlist-fix x) count verbosep) (svexlist-rewrite-fixpoint-fn x count verbosep)))
Theorem:
(defthm svexlist-rewrite-fixpoint-fn-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (svexlist-rewrite-fixpoint-fn x count verbosep) (svexlist-rewrite-fixpoint-fn x-equiv count verbosep))) :rule-classes :congruence)
Theorem:
(defthm svexlist-rewrite-fixpoint-fn-of-nfix-count (equal (svexlist-rewrite-fixpoint-fn x (nfix count) verbosep) (svexlist-rewrite-fixpoint-fn x count verbosep)))
Theorem:
(defthm svexlist-rewrite-fixpoint-fn-nat-equiv-congruence-on-count (implies (nat-equiv count count-equiv) (equal (svexlist-rewrite-fixpoint-fn x count verbosep) (svexlist-rewrite-fixpoint-fn x count-equiv verbosep))) :rule-classes :congruence)
Theorem:
(defthm svexlist-rewrite-fixpoint-correct (b* ((?xx (svexlist-rewrite-fixpoint-fn x count verbosep))) (equal (svexlist-eval xx env) (svexlist-eval x env))))
Theorem:
(defthm len-of-svexlist-rewrite-fixpoint (b* ((?xx (svexlist-rewrite-fixpoint-fn x count verbosep))) (equal (len xx) (len x))))
Theorem:
(defthm consp-of-svexlist-rewrite-fixpoint (b* ((?xx (svexlist-rewrite-fixpoint-fn x count verbosep))) (equal (consp xx) (consp x))))
Theorem:
(defthm vars-of-svexlist-rewrite-fixpoint (b* ((?xx (svexlist-rewrite-fixpoint-fn x count verbosep))) (implies (not (member v (svexlist-vars x))) (not (member v (svexlist-vars xx))))))