Function:
(defun svex-svstmt-andc1 (a b) (declare (xargs :guard (and (svex-p a) (svex-p b)))) (let ((__function__ 'svex-svstmt-andc1)) (declare (ignorable __function__)) (b* ((a (svex-fix a)) (b (svex-fix b)) ((when (svex-case a :quote (2vec-p a.val) :otherwise nil)) (b* ((a (2vec->val (svex-quote->val a)))) (if (eql a 0) b 0))) ((when (svex-case b :quote (2vec-p b.val) :otherwise nil)) (b* ((b (2vec->val (svex-quote->val b)))) (if (eql b 0) 0 (svex-call 'bitnot (list (svex-call 'uor (list a)))))))) (svex-call 'bitand (list (svex-call 'bitnot (list (svex-call 'uor (list a)))) (svex-call 'uor (list b)))))))
Theorem:
(defthm svex-p-of-svex-svstmt-andc1 (b* ((or (svex-svstmt-andc1 a b))) (svex-p or)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-svstmt-andc1 (b* ((common-lisp::?or (svex-svstmt-andc1 a b))) (implies (and (not (member v (svex-vars a))) (not (member v (svex-vars b)))) (not (member v (svex-vars or))))))
Theorem:
(defthm svex-svstmt-andc1-of-svex-fix-a (equal (svex-svstmt-andc1 (svex-fix a) b) (svex-svstmt-andc1 a b)))
Theorem:
(defthm svex-svstmt-andc1-svex-equiv-congruence-on-a (implies (svex-equiv a a-equiv) (equal (svex-svstmt-andc1 a b) (svex-svstmt-andc1 a-equiv b))) :rule-classes :congruence)
Theorem:
(defthm svex-svstmt-andc1-of-svex-fix-b (equal (svex-svstmt-andc1 a (svex-fix b)) (svex-svstmt-andc1 a b)))
Theorem:
(defthm svex-svstmt-andc1-svex-equiv-congruence-on-b (implies (svex-equiv b b-equiv) (equal (svex-svstmt-andc1 a b) (svex-svstmt-andc1 a b-equiv))) :rule-classes :congruence)