(lhs-vars x) → vars
Function:
(defun lhs-vars (x) (declare (xargs :guard (lhs-p x))) (let ((__function__ 'lhs-vars)) (declare (ignorable __function__)) (b* (((when (atom x)) nil) ((lhrange first) (car x))) (append (lhatom-vars first.atom) (lhs-vars (cdr x))))))
Theorem:
(defthm svarlist-p-of-lhs-vars (b* ((vars (lhs-vars x))) (svarlist-p vars)) :rule-classes :rewrite)
Theorem:
(defthm lhs-vars-of-cons (equal (lhs-vars (cons a b)) (append (lhatom-vars (lhrange->atom a)) (lhs-vars b))))
Theorem:
(defthm lhs-vars-when-consp (implies (consp x) (equal (lhs-vars x) (append (lhatom-vars (lhrange->atom (car x))) (lhs-vars (cdr x))))) :rule-classes ((:rewrite :backchain-limit-lst 0)))
Theorem:
(defthm lhs-vars-of-lhs-fix-x (equal (lhs-vars (lhs-fix x)) (lhs-vars x)))
Theorem:
(defthm lhs-vars-lhs-equiv-congruence-on-x (implies (lhs-equiv x x-equiv) (equal (lhs-vars x) (lhs-vars x-equiv))) :rule-classes :congruence)
Theorem:
(defthm vars-of-lhs-cons (iff (member v (lhs-vars (lhs-cons a b))) (or (member v (lhs-vars b)) (member v (lhatom-vars (lhrange->atom a))))))
Theorem:
(defthm vars-of-lhs-norm (iff (member v (lhs-vars (lhs-norm x))) (member v (lhs-vars x))))
Theorem:
(defthm vars-of-lhs-concat (implies (and (not (member v (lhs-vars x))) (not (member v (lhs-vars y)))) (not (member v (lhs-vars (lhs-concat w x y))))))
Theorem:
(defthm vars-of-lhs-rsh (implies (not (member v (lhs-vars x))) (not (member v (lhs-vars (lhs-rsh sh x))))))