(aignet-simplify-marked aignet bitarr litmap litarr config state) → (mv new-aignet new-litarr new-litmap new-state)
Function:
(defun aignet-simplify-marked (aignet bitarr litmap litarr config state) (declare (xargs :stobjs (aignet bitarr litarr state))) (declare (xargs :guard (named-lit-list-map-p litmap))) (declare (xargs :guard (and (<= (bits-length bitarr) (num-fanins aignet)) (named-lit-list-map-aignet-okp litmap aignet)))) (let ((__function__ 'aignet-simplify-marked)) (declare (ignorable __function__)) (b* (((local-stobjs copy) (mv aignet copy litarr litmap state)) ((mv aignet copy litarr new-litmap state) (aignet-simplify-marked-with-tracking aignet bitarr nil litmap copy litarr config state))) (mv aignet copy litarr new-litmap state))))
Theorem:
(defthm named-lit-list-map-p-of-aignet-simplify-marked.new-litmap (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (named-lit-list-map-p new-litmap)) :rule-classes :rewrite)
Theorem:
(defthm stype-count-of-aignet-simplify-marked (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (and (equal (stype-count :pi new-aignet) (stype-count :pi aignet)) (equal (stype-count :reg new-aignet) (stype-count :reg aignet)) (equal (stype-count :po new-aignet) 0) (equal (stype-count :nxst new-aignet) 0))))
Theorem:
(defthm eval-of-aignet-simplify-marked (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (implies (and (equal 1 (nth n bitarr)) (<= (bits-length bitarr) (num-fanins aignet))) (equal (lit-eval (nth-lit n new-litarr) invals regvals new-aignet) (id-eval n invals regvals aignet)))))
Theorem:
(defthm litarr-length-of-aignet-simplify-marked (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (let ((fanins (+ 1 (fanin-count aignet)))) (implies (<= (len bitarr) fanins) (equal (len new-litarr) fanins)))))
Theorem:
(defthm aignet-litp-of-aignet-simplify-marked-lits (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (aignet-litp (nth-lit n new-litarr) new-aignet)))
Theorem:
(defthm named-lit-list-map-aignet-okp-of-aignet-simplify-marked (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (named-lit-list-map-aignet-okp new-litmap new-aignet)))
Theorem:
(defthm w-state-of-aignet-simplify-marked (b* (((mv ?new-aignet ?new-litarr ?new-litmap ?new-state) (aignet-simplify-marked aignet bitarr litmap litarr config state))) (equal (w new-state) (w state))))
Theorem:
(defthm aignet-simplify-marked-of-node-list-fix-aignet (equal (aignet-simplify-marked (node-list-fix aignet) bitarr litmap litarr config state) (aignet-simplify-marked aignet bitarr litmap litarr config state)))
Theorem:
(defthm aignet-simplify-marked-node-list-equiv-congruence-on-aignet (implies (node-list-equiv aignet aignet-equiv) (equal (aignet-simplify-marked aignet bitarr litmap litarr config state) (aignet-simplify-marked aignet-equiv bitarr litmap litarr config state))) :rule-classes :congruence)
Theorem:
(defthm aignet-simplify-marked-of-named-lit-list-map-fix-litmap (equal (aignet-simplify-marked aignet bitarr (named-lit-list-map-fix litmap) litarr config state) (aignet-simplify-marked aignet bitarr litmap litarr config state)))
Theorem:
(defthm aignet-simplify-marked-named-lit-list-map-equiv-congruence-on-litmap (implies (named-lit-list-map-equiv litmap litmap-equiv) (equal (aignet-simplify-marked aignet bitarr litmap litarr config state) (aignet-simplify-marked aignet bitarr litmap-equiv litarr config state))) :rule-classes :congruence)