(fraig-config-normalized-output-map config output-ranges aignet) → (mv map new-output-ranges)
Function:
(defun fraig-config-normalized-output-map (config output-ranges aignet) (declare (xargs :stobjs (aignet))) (declare (xargs :guard (and (fraig-config-p config) (aignet-output-range-map-p output-ranges)))) (let ((__function__ 'fraig-config-normalized-output-map)) (declare (ignorable __function__)) (b* (((fraig-config config)) (len (aignet-output-range-map-length output-ranges)) (outs (num-outs aignet)) (output-ranges (cond ((< outs len) (prog2$ (cw "Warning: not enough outputs for the output-ranges.") (list (cons nil outs)))) ((< len outs) (cons (cons nil (- outs len)) (aignet-output-range-map-fix output-ranges))) (t (aignet-output-range-map-fix output-ranges))))) (mv (fraig-create-output-map output-ranges config.output-types) output-ranges))))
Theorem:
(defthm fraig-output-map-p-of-fraig-config-normalized-output-map.map (b* (((mv common-lisp::?map ?new-output-ranges) (fraig-config-normalized-output-map config output-ranges aignet))) (fraig-output-map-p map)) :rule-classes :rewrite)
Theorem:
(defthm aignet-output-range-map-p-of-fraig-config-normalized-output-map.new-output-ranges (b* (((mv common-lisp::?map ?new-output-ranges) (fraig-config-normalized-output-map config output-ranges aignet))) (aignet-output-range-map-p new-output-ranges)) :rule-classes :rewrite)
Theorem:
(defthm output-range-map-length-of-fraig-config-normalized-output-map (b* (((mv common-lisp::?map ?new-output-ranges) (fraig-config-normalized-output-map config output-ranges aignet))) (equal (aignet-output-range-map-length new-output-ranges) (stype-count :po aignet))))
Theorem:
(defthm output-map-count-of-fraig-config-normalized-output-map (b* (((mv common-lisp::?map ?new-output-ranges) (fraig-config-normalized-output-map config output-ranges aignet))) (equal (fraig-output-map-total-count map) (stype-count :po aignet))))
Theorem:
(defthm fraig-config-normalized-output-map-of-fraig-config-fix-config (equal (fraig-config-normalized-output-map (fraig-config-fix config) output-ranges aignet) (fraig-config-normalized-output-map config output-ranges aignet)))
Theorem:
(defthm fraig-config-normalized-output-map-fraig-config-equiv-congruence-on-config (implies (fraig-config-equiv config config-equiv) (equal (fraig-config-normalized-output-map config output-ranges aignet) (fraig-config-normalized-output-map config-equiv output-ranges aignet))) :rule-classes :congruence)
Theorem:
(defthm fraig-config-normalized-output-map-of-aignet-output-range-map-fix-output-ranges (equal (fraig-config-normalized-output-map config (aignet-output-range-map-fix output-ranges) aignet) (fraig-config-normalized-output-map config output-ranges aignet)))
Theorem:
(defthm fraig-config-normalized-output-map-aignet-output-range-map-equiv-congruence-on-output-ranges (implies (aignet-output-range-map-equiv output-ranges output-ranges-equiv) (equal (fraig-config-normalized-output-map config output-ranges aignet) (fraig-config-normalized-output-map config output-ranges-equiv aignet))) :rule-classes :congruence)