(bfr-andc2 x y) constructs the ANDC2 of these BFRs.
(bfr-andc2 x y) → *
Function:
(defun bfr-andc2 (x y) (declare (xargs :guard t)) (let ((__function__ 'bfr-andc2)) (declare (ignorable __function__)) (mbe :logic (bfr-case :bdd (acl2::q-and-c2 x y) :aig (acl2::aig-andc2 x y)) :exec (if (and (booleanp x) (booleanp y)) (and x (not y)) (bfr-case :bdd (acl2::q-and-c2 x y) :aig (acl2::aig-andc2 x y))))))
Theorem:
(defthm bfr-eval-bfr-andc2 (equal (bfr-eval (bfr-andc2 x y) env) (and (bfr-eval x env) (not (bfr-eval y env)))))
Theorem:
(defthm bfr-equiv-implies-bfr-equiv-bfr-andc2-1 (implies (bfr-equiv x x-equiv) (bfr-equiv (bfr-andc2 x y) (bfr-andc2 x-equiv y))) :rule-classes (:congruence))
Theorem:
(defthm bfr-equiv-implies-bfr-equiv-bfr-andc2-2 (implies (bfr-equiv y y-equiv) (bfr-equiv (bfr-andc2 x y) (bfr-andc2 x y-equiv))) :rule-classes (:congruence))