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