Basic equivalence relation for svexlist structures.
Function:
(defun svexlist-equiv$inline (x y) (declare (xargs :guard (and (svexlist-p x) (svexlist-p y)))) (equal (svexlist-fix x) (svexlist-fix y)))
Theorem:
(defthm svexlist-equiv-is-an-equivalence (and (booleanp (svexlist-equiv x y)) (svexlist-equiv x x) (implies (svexlist-equiv x y) (svexlist-equiv y x)) (implies (and (svexlist-equiv x y) (svexlist-equiv y z)) (svexlist-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm svexlist-equiv-implies-equal-svexlist-fix-1 (implies (svexlist-equiv x x-equiv) (equal (svexlist-fix x) (svexlist-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm svexlist-fix-under-svexlist-equiv (svexlist-equiv (svexlist-fix x) x) :rule-classes (:rewrite :rewrite-quoted-constant))
Theorem:
(defthm equal-of-svexlist-fix-1-forward-to-svexlist-equiv (implies (equal (svexlist-fix x) y) (svexlist-equiv x y)) :rule-classes :forward-chaining)
Theorem:
(defthm equal-of-svexlist-fix-2-forward-to-svexlist-equiv (implies (equal x (svexlist-fix y)) (svexlist-equiv x y)) :rule-classes :forward-chaining)
Theorem:
(defthm svexlist-equiv-of-svexlist-fix-1-forward (implies (svexlist-equiv (svexlist-fix x) y) (svexlist-equiv x y)) :rule-classes :forward-chaining)
Theorem:
(defthm svexlist-equiv-of-svexlist-fix-2-forward (implies (svexlist-equiv x (svexlist-fix y)) (svexlist-equiv x y)) :rule-classes :forward-chaining)