Check equality of the integer values of two sparseints
(sparseint-equal x y) → equal
Function:
(defun sparseint-equal$inline (x y) (declare (xargs :guard (and (sparseint-p x) (sparseint-p y)))) (let ((__function__ 'sparseint-equal)) (declare (ignorable __function__)) (sparseint$-equal (sparseint-fix x) (sparseint-fix y))))
Theorem:
(defthm booleanp-of-sparseint-equal (b* ((equal (sparseint-equal$inline x y))) (booleanp equal)) :rule-classes :type-prescription)
Theorem:
(defthm sparseint-equal-correct (b* ((common-lisp::?equal (sparseint-equal$inline x y))) (equal equal (equal (sparseint-val x) (sparseint-val y)))))
Theorem:
(defthm sparseint-equal-is-an-equivalence (and (booleanp (sparseint-equal x y)) (sparseint-equal x x) (implies (sparseint-equal x y) (sparseint-equal y x)) (implies (and (sparseint-equal x y) (sparseint-equal y z)) (sparseint-equal x z))) :rule-classes (:equivalence))
Theorem:
(defthm sparseint-equal$inline-of-sparseint-fix-x (equal (sparseint-equal$inline (sparseint-fix x) y) (sparseint-equal$inline x y)))
Theorem:
(defthm sparseint-equal$inline-sparseint-equiv-congruence-on-x (implies (sparseint-equiv x x-equiv) (equal (sparseint-equal$inline x y) (sparseint-equal$inline x-equiv y))) :rule-classes :congruence)
Theorem:
(defthm sparseint-equal$inline-of-sparseint-fix-y (equal (sparseint-equal$inline x (sparseint-fix y)) (sparseint-equal$inline x y)))
Theorem:
(defthm sparseint-equal$inline-sparseint-equiv-congruence-on-y (implies (sparseint-equiv y y-equiv) (equal (sparseint-equal$inline x y) (sparseint-equal$inline x y-equiv))) :rule-classes :congruence)