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