(t-aig-ite* c a b) constructs a (more conservative) FAIG representing
(t-aig-ite* c a b) → *
This is a more-conservative version of t-aig-ite that emits
Function:
(defun t-aig-ite* (c a b) (declare (xargs :guard t)) (let ((__function__ 't-aig-ite*)) (declare (ignorable __function__)) (b* (((faig a1 a0) a) ((faig b1 b0) b) ((faig c1 c0) c) (x (aig-and c1 c0))) (cons (aig-or x (aig-or (aig-and c1 a1) (aig-and c0 b1))) (aig-or x (aig-or (aig-and c1 a0) (aig-and c0 b0)))))))
Theorem:
(defthm faig-eval-of-t-aig-ite* (equal (faig-eval (t-aig-ite* c a b) env) (t-aig-ite* (faig-eval c env) (faig-eval a env) (faig-eval b env))))
Theorem:
(defthm faig-fix-equiv-implies-equal-t-aig-ite*-1 (implies (faig-fix-equiv c c-equiv) (equal (t-aig-ite* c a b) (t-aig-ite* c-equiv a b))) :rule-classes (:congruence))
Theorem:
(defthm faig-fix-equiv-implies-equal-t-aig-ite*-2 (implies (faig-fix-equiv a a-equiv) (equal (t-aig-ite* c a b) (t-aig-ite* c a-equiv b))) :rule-classes (:congruence))
Theorem:
(defthm faig-fix-equiv-implies-equal-t-aig-ite*-3 (implies (faig-fix-equiv b b-equiv) (equal (t-aig-ite* c a b) (t-aig-ite* c a b-equiv))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-t-aig-ite*-3 (implies (faig-equiv b b-equiv) (faig-equiv (t-aig-ite* c a b) (t-aig-ite* c a b-equiv))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-t-aig-ite*-2 (implies (faig-equiv a a-equiv) (faig-equiv (t-aig-ite* c a b) (t-aig-ite* c a-equiv b))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-t-aig-ite*-1 (implies (faig-equiv c c-equiv) (faig-equiv (t-aig-ite* c a b) (t-aig-ite* c-equiv a b))) :rule-classes (:congruence))