(f-aig-zif c a b) constructs an FAIG representing a kind of pass gate style mux.
(f-aig-zif c a b) → *
This mainly exists to support 4v-zif in sexpr-to-faig conversion.
Function:
(defun f-aig-zif (c a b) (declare (xargs :guard t)) (let ((__function__ 'f-aig-zif)) (declare (ignorable __function__)) (b* ((c (f-aig-unfloat c))) (t-aig-ite* c a b))))
Theorem:
(defthm faig-eval-of-f-aig-zif (equal (faig-eval (f-aig-zif c a b) env) (f-aig-zif (faig-eval c env) (faig-eval a env) (faig-eval b env))))
Theorem:
(defthm faig-fix-equiv-implies-equal-f-aig-zif-1 (implies (faig-fix-equiv c c-equiv) (equal (f-aig-zif c a b) (f-aig-zif c-equiv a b))) :rule-classes (:congruence))
Theorem:
(defthm faig-fix-equiv-implies-equal-f-aig-zif-2 (implies (faig-fix-equiv a a-equiv) (equal (f-aig-zif c a b) (f-aig-zif c a-equiv b))) :rule-classes (:congruence))
Theorem:
(defthm faig-fix-equiv-implies-equal-f-aig-zif-3 (implies (faig-fix-equiv b b-equiv) (equal (f-aig-zif c a b) (f-aig-zif c a b-equiv))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-f-aig-zif-3 (implies (faig-equiv b b-equiv) (faig-equiv (f-aig-zif c a b) (f-aig-zif c a b-equiv))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-f-aig-zif-2 (implies (faig-equiv a a-equiv) (faig-equiv (f-aig-zif c a b) (f-aig-zif c a-equiv b))) :rule-classes (:congruence))
Theorem:
(defthm faig-equiv-implies-faig-equiv-f-aig-zif-1 (implies (faig-equiv c c-equiv) (faig-equiv (f-aig-zif c a b) (f-aig-zif c-equiv a b))) :rule-classes (:congruence))