(maybe-svexlist-rewrite-fixpoint x do-it) → new-x
Function:
(defun maybe-svexlist-rewrite-fixpoint (x do-it) (declare (xargs :guard (svexlist-p x))) (let ((__function__ 'maybe-svexlist-rewrite-fixpoint)) (declare (ignorable __function__)) (if do-it (svexlist-rewrite-fixpoint-memo x) (hons-copy (svexlist-fix x)))))
Theorem:
(defthm svexlist-p-of-maybe-svexlist-rewrite-fixpoint (b* ((new-x (maybe-svexlist-rewrite-fixpoint x do-it))) (svexlist-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm maybe-svexlist-rewrite-fixpoint-correct (b* ((?new-x (maybe-svexlist-rewrite-fixpoint x do-it))) (equal (svexlist-eval new-x env) (svexlist-eval x env))))
Theorem:
(defthm maybe-svexlist-rewrite-fixpoint-len (b* ((?new-x (maybe-svexlist-rewrite-fixpoint x do-it))) (equal (len new-x) (len x))))
Theorem:
(defthm vars-of-maybe-svexlist-rewrite-fixpoint (b* ((?new-x (maybe-svexlist-rewrite-fixpoint x do-it))) (implies (not (member v (svexlist-vars x))) (not (member v (svexlist-vars new-x))))))
Theorem:
(defthm maybe-svexlist-rewrite-fixpoint-of-svexlist-fix-x (equal (maybe-svexlist-rewrite-fixpoint (svexlist-fix x) do-it) (maybe-svexlist-rewrite-fixpoint x do-it)))
Theorem:
(defthm maybe-svexlist-rewrite-fixpoint-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (maybe-svexlist-rewrite-fixpoint x do-it) (maybe-svexlist-rewrite-fixpoint x-equiv do-it))) :rule-classes :congruence)