(aignet-outputs aignet) → outputs
Function:
(defun aignet-outputs (aignet) (declare (xargs :guard (node-listp aignet))) (let ((__function__ 'aignet-outputs)) (declare (ignorable __function__)) (aignet-outputs-aux (stype-count :po aignet) aignet)))
Theorem:
(defthm node-listp-of-aignet-outputs (b* ((outputs (aignet-outputs aignet))) (node-listp outputs)) :rule-classes :rewrite)
Theorem:
(defthm fanin-count-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (fanin-count outputs) 0)))
Theorem:
(defthm lookup-id-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (lookup-id k outputs) nil)))
Theorem:
(defthm stype-count-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (stype-count stype outputs) (if (equal (stype-fix stype) :po) (stype-count :po aignet) 0))))
Theorem:
(defthm aignet-outputs-of-node-list-fix-aignet (equal (aignet-outputs (node-list-fix aignet)) (aignet-outputs aignet)))
Theorem:
(defthm aignet-outputs-node-list-equiv-congruence-on-aignet (implies (node-list-equiv aignet aignet-equiv) (equal (aignet-outputs aignet) (aignet-outputs aignet-equiv))) :rule-classes :congruence)
Theorem:
(defthm lookup-stype-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (lookup-stype k stype outputs) (if (and (equal (stype-fix stype) :po) (< (nfix k) (stype-count :po aignet))) (aignet-outputs (lookup-stype k :po aignet)) nil))))
Theorem:
(defthm lookup-reg->nxst-of-append-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (lookup-reg->nxst k (append outputs rest)) (lookup-reg->nxst k rest))))
Theorem:
(defthm car-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (implies (posp (stype-count :po aignet)) (equal (car outputs) (po-node (fanin 0 (lookup-stype (1- (stype-count :po aignet)) :po aignet)))))))
Theorem:
(defthm consp-of-aignet-outputs (b* ((?outputs (aignet-outputs aignet))) (equal (consp outputs) (posp (stype-count :po aignet)))))
Theorem:
(defthm aignet-outputs-of-append-aignet-outputs (b* nil (implies (and (equal (stype-count :po rest) 0) (<= (fanin-count x) (fanin-count rest))) (equal (aignet-outputs (append (aignet-outputs x) rest)) (aignet-outputs x)))))
Theorem:
(defthm aignet-outputs-of-append-non-outputs (implies (equal (stype-count :po first) 0) (equal (aignet-outputs (append first x)) (aignet-outputs x))))
Theorem:
(defthm aignet-outputs-of-cons (equal (aignet-outputs (cons node x)) (if (equal (stype node) :po) (cons (po-node (aignet-lit-fix (po-node->fanin node) x)) (aignet-outputs x)) (aignet-outputs x))))