Basic equivalence relation for literals.
Function:
(defun lit-equiv (x y) (declare (xargs :guard (and (litp x) (litp y)))) (let ((__function__ 'lit-equiv)) (declare (ignorable __function__)) (int= (lit-fix x) (lit-fix y))))
Theorem:
(defthm lit-equiv-is-an-equivalence (and (booleanp (lit-equiv x y)) (lit-equiv x x) (implies (lit-equiv x y) (lit-equiv y x)) (implies (and (lit-equiv x y) (lit-equiv y z)) (lit-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm lit-equiv-implies-equal-lit-fix-1 (implies (lit-equiv x x-equiv) (equal (lit-fix x) (lit-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm lit-equiv-of-lit-fix (lit-equiv (lit-fix lit) lit))
Theorem:
(defthm acl2::__deffixtype-lit-equiv-means-equal-of-lit-fix (implies (lit-equiv acl2::x acl2::y) (equal (lit-fix acl2::x) (lit-fix acl2::y))) :rule-classes nil)
Theorem:
(defthm lit-equiv-of-lit-fix-x (equal (lit-equiv (lit-fix x) y) (lit-equiv x y)))
Theorem:
(defthm lit-equiv-lit-equiv-congruence-on-x (implies (lit-equiv x x-equiv) (equal (lit-equiv x y) (lit-equiv x-equiv y))) :rule-classes :congruence)
Theorem:
(defthm lit-equiv-of-lit-fix-y (equal (lit-equiv x (lit-fix y)) (lit-equiv x y)))
Theorem:
(defthm lit-equiv-lit-equiv-congruence-on-y (implies (lit-equiv y y-equiv) (equal (lit-equiv x y) (lit-equiv x y-equiv))) :rule-classes :congruence)