Function:
(defun make-simple-lhs-fn (width rsh var) (declare (xargs :guard (and (posp width) (natp rsh) (svar-p var)))) (let ((__function__ 'make-simple-lhs)) (declare (ignorable __function__)) (list (make-lhrange :w width :atom (make-lhatom-var :name var :rsh rsh)))))
Theorem:
(defthm lhs-p-of-make-simple-lhs (b* ((lhs (make-simple-lhs-fn width rsh var))) (lhs-p lhs)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-make-simple-lhs (b* ((?lhs (make-simple-lhs-fn width rsh var))) (equal (lhs-vars lhs) (list (svar-fix var)))))
Theorem:
(defthm make-simple-lhs-fn-of-pos-fix-width (equal (make-simple-lhs-fn (pos-fix width) rsh var) (make-simple-lhs-fn width rsh var)))
Theorem:
(defthm make-simple-lhs-fn-pos-equiv-congruence-on-width (implies (pos-equiv width width-equiv) (equal (make-simple-lhs-fn width rsh var) (make-simple-lhs-fn width-equiv rsh var))) :rule-classes :congruence)
Theorem:
(defthm make-simple-lhs-fn-of-nfix-rsh (equal (make-simple-lhs-fn width (nfix rsh) var) (make-simple-lhs-fn width rsh var)))
Theorem:
(defthm make-simple-lhs-fn-nat-equiv-congruence-on-rsh (implies (nat-equiv rsh rsh-equiv) (equal (make-simple-lhs-fn width rsh var) (make-simple-lhs-fn width rsh-equiv var))) :rule-classes :congruence)
Theorem:
(defthm make-simple-lhs-fn-of-svar-fix-var (equal (make-simple-lhs-fn width rsh (svar-fix var)) (make-simple-lhs-fn width rsh var)))
Theorem:
(defthm make-simple-lhs-fn-svar-equiv-congruence-on-var (implies (svar-equiv var var-equiv) (equal (make-simple-lhs-fn width rsh var) (make-simple-lhs-fn width rsh var-equiv))) :rule-classes :congruence)