An AIG that captures exactly when the FAIG X is Boolean valued.
(faig-purebool-aig x) → aig
This is useful mainly to implement faig-purebool-check.
Function:
(defun faig-purebool-aig (x) (declare (xargs :guard t)) (let ((__function__ 'faig-purebool-aig)) (declare (ignorable __function__)) (b* ((x (faig-fix x)) (onset (car x)) (offset (cdr x))) (aig-or (aig-and onset (aig-not offset)) (aig-and offset (aig-not onset))))))
Theorem:
(defthm faig-purebool-p-as-aig-eval (equal (faig-purebool-p x) (aig-eval (faig-purebool-aig x) (faig-purebool-p-witness x))))
Theorem:
(defthm faig-purebool-p-monotonicity (implies (not (aig-eval (faig-purebool-aig x) env)) (not (aig-eval (faig-purebool-aig x) (faig-purebool-p-witness x)))))