Same as make-lit, but with a type declaration that the input variable is 31 bits unsigned.
Function:
(defun make-lit^$inline (var neg) (declare (type (unsigned-byte 31) var) (type bit neg)) (declare (xargs :guard (and (varp var) (bitp neg)))) (declare (xargs :guard (unsigned-byte-p 31 var) :split-types t)) (let ((__function__ 'make-lit^)) (declare (ignorable __function__)) (mbe :logic (make-lit var neg) :exec (the (unsigned-byte 32) (logior (the (unsigned-byte 32) (ash (the (unsigned-byte 31) var) 1)) (the bit neg))))))
Theorem:
(defthm make-lit^$inline-of-var-fix-var (equal (make-lit^$inline (var-fix var) neg) (make-lit^$inline var neg)))
Theorem:
(defthm make-lit^$inline-var-equiv-congruence-on-var (implies (var-equiv var var-equiv) (equal (make-lit^$inline var neg) (make-lit^$inline var-equiv neg))) :rule-classes :congruence)
Theorem:
(defthm make-lit^$inline-of-bfix-neg (equal (make-lit^$inline var (bfix neg)) (make-lit^$inline var neg)))
Theorem:
(defthm make-lit^$inline-bit-equiv-congruence-on-neg (implies (bit-equiv neg neg-equiv) (equal (make-lit^$inline var neg) (make-lit^$inline var neg-equiv))) :rule-classes :congruence)