Construct a literal with the given
Function:
(defun make-lit$inline (var neg) (declare (type (integer 0 *) var) (type bit neg)) (declare (xargs :guard (and (varp var) (bitp neg)))) (declare (xargs :split-types t)) (let ((__function__ 'make-lit)) (declare (ignorable __function__)) (the (integer 0 *) (logior (the (integer 0 *) (ash (the (integer 0 *) (var-fix var)) 1)) (the bit (lbfix neg))))))
Theorem:
(defthm litp-of-make-lit (b* ((lit (make-lit$inline var neg))) (litp lit)) :rule-classes (:rewrite :type-prescription))
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)
Theorem:
(defthm lit->var-of-make-lit (equal (lit->var (make-lit var neg)) (var-fix var)))
Theorem:
(defthm lit->neg-of-make-lit (equal (lit->neg (make-lit var neg)) (bfix neg)))
Theorem:
(defthm make-lit-identity (equal (make-lit (lit->var lit) (lit->neg lit)) (lit-fix lit)))
Theorem:
(defthm equal-of-make-lit (equal (equal a (make-lit var neg)) (and (litp a) (equal (lit->var a) (var-fix var)) (equal (lit->neg a) (bfix neg)))))