This is a universal equivalence, introduced using ACL2::def-universal-equiv.
Function:
(defun lits-equiv (x acl2::y) (declare (xargs :non-executable t)) (declare (xargs :guard t)) (prog2$ (acl2::throw-nonexec-error 'lits-equiv (list x acl2::y)) (let ((i (lits-equiv-witness x acl2::y))) (and (lit-equiv (nth i x) (nth i acl2::y))))))
Theorem:
(defthm lits-equiv-necc (implies (not (and (lit-equiv (nth i x) (nth i acl2::y)))) (not (lits-equiv x acl2::y))))
Theorem:
(defthm lits-equiv-is-an-equivalence (and (booleanp (lits-equiv x y)) (lits-equiv x x) (implies (lits-equiv x y) (lits-equiv y x)) (implies (and (lits-equiv x y) (lits-equiv y z)) (lits-equiv x z))) :rule-classes (:equivalence))