Function:
(defun svstack-fork (x) (declare (xargs :guard (svstack-p x))) (let ((__function__ 'svstack-fork)) (declare (ignorable __function__)) (if (atom x) nil (cons (fast-alist-fork (svex-alist-fix (car x)) nil) (svstack-fork (cdr x))))))
Theorem:
(defthm svstack-p-of-svstack-fork (b* ((new-x (svstack-fork x))) (svstack-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm len-of-svstack-fork (b* ((?new-x (svstack-fork x))) (equal (len new-x) (len x))))
Theorem:
(defthm lookup-in-svstack-fork (b* ((?new-x (svstack-fork x))) (equal (svex-lookup v (svstack-to-svex-alist new-x)) (svex-lookup v (svstack-to-svex-alist x)))))
Theorem:
(defthm vars-of-svstack-fork (b* ((?new-x (svstack-fork x))) (implies (not (member v (svex-alist-vars (svstack-to-svex-alist x)))) (not (member v (svex-alist-vars (svstack-to-svex-alist new-x)))))))
Theorem:
(defthm consp-of-svstack-fork (b* ((?new-x (svstack-fork x))) (equal (consp new-x) (consp x))))
Theorem:
(defthm svstack-fork-of-svstack-fix-x (equal (svstack-fork (svstack-fix x)) (svstack-fork x)))
Theorem:
(defthm svstack-fork-svstack-equiv-congruence-on-x (implies (svstack-equiv x x-equiv) (equal (svstack-fork x) (svstack-fork x-equiv))) :rule-classes :congruence)