Function:
(defun lhrange-combinable-dec (x.w x.atom y) (declare (xargs :guard (and (posp x.w) (lhatom-p x.atom) (lhatom-p y)))) (let ((__function__ 'lhrange-combinable-dec)) (declare (ignorable __function__)) (mbe :logic (equal (lhatom-fix y) (lhrange-nextbit (lhrange x.w x.atom))) :exec (b* ((xkind (lhatom-kind x.atom)) (ykind (lhatom-kind y))) (and (eq xkind ykind) (or (eq xkind :z) (and (equal (lhatom-var->name x.atom) (lhatom-var->name y)) (eql (lhatom-var->rsh y) (+ (lhatom-var->rsh x.atom) x.w)))))))))
Theorem:
(defthm lhrange-combinable-dec-of-pos-fix-x.w (equal (lhrange-combinable-dec (pos-fix x.w) x.atom y) (lhrange-combinable-dec x.w x.atom y)))
Theorem:
(defthm lhrange-combinable-dec-pos-equiv-congruence-on-x.w (implies (pos-equiv x.w x.w-equiv) (equal (lhrange-combinable-dec x.w x.atom y) (lhrange-combinable-dec x.w-equiv x.atom y))) :rule-classes :congruence)
Theorem:
(defthm lhrange-combinable-dec-of-lhatom-fix-x.atom (equal (lhrange-combinable-dec x.w (lhatom-fix x.atom) y) (lhrange-combinable-dec x.w x.atom y)))
Theorem:
(defthm lhrange-combinable-dec-lhatom-equiv-congruence-on-x.atom (implies (lhatom-equiv x.atom x.atom-equiv) (equal (lhrange-combinable-dec x.w x.atom y) (lhrange-combinable-dec x.w x.atom-equiv y))) :rule-classes :congruence)
Theorem:
(defthm lhrange-combinable-dec-of-lhatom-fix-y (equal (lhrange-combinable-dec x.w x.atom (lhatom-fix y)) (lhrange-combinable-dec x.w x.atom y)))
Theorem:
(defthm lhrange-combinable-dec-lhatom-equiv-congruence-on-y (implies (lhatom-equiv y y-equiv) (equal (lhrange-combinable-dec x.w x.atom y) (lhrange-combinable-dec x.w x.atom y-equiv))) :rule-classes :congruence)