Like observability-fix, but overwrites the original network instead of returning a new one.
(observability-fix! aignet config state) → (mv new-aignet new-state)
Function:
(defun observability-fix! (aignet config state) (declare (xargs :stobjs (aignet state))) (declare (xargs :guard (observability-config-p config))) (let ((__function__ 'observability-fix!)) (declare (ignorable __function__)) (b* (((local-stobjs aignet-tmp) (mv aignet aignet-tmp state)) ((mv aignet-tmp aignet state) (observability-fix-core aignet aignet-tmp config state)) (aignet (aignet-prune-comb aignet-tmp aignet (observability-config->gatesimp config)))) (mv aignet aignet-tmp state))))
Theorem:
(defthm num-ins-of-observability-fix! (b* (((mv ?new-aignet ?new-state) (observability-fix! aignet config state))) (equal (stype-count :pi new-aignet) (stype-count :pi aignet))))
Theorem:
(defthm num-regs-of-observability-fix! (b* (((mv ?new-aignet ?new-state) (observability-fix! aignet config state))) (equal (stype-count :reg new-aignet) (stype-count :reg aignet))))
Theorem:
(defthm num-outs-of-observability-fix! (b* (((mv ?new-aignet ?new-state) (observability-fix! aignet config state))) (equal (stype-count :po new-aignet) (stype-count :po aignet))))
Theorem:
(defthm observability-fix!-comb-equivalent (b* (((mv ?new-aignet ?new-state) (observability-fix! aignet config state))) (comb-equiv new-aignet aignet)))
Theorem:
(defthm w-state-of-observability-fix! (b* (((mv ?new-aignet ?new-state) (observability-fix! aignet config state))) (equal (w new-state) (w state))))
Theorem:
(defthm observability-fix!-of-node-list-fix-aignet (equal (observability-fix! (node-list-fix aignet) config state) (observability-fix! aignet config state)))
Theorem:
(defthm observability-fix!-node-list-equiv-congruence-on-aignet (implies (node-list-equiv aignet aignet-equiv) (equal (observability-fix! aignet config state) (observability-fix! aignet-equiv config state))) :rule-classes :congruence)
Theorem:
(defthm observability-fix!-of-observability-config-fix-config (equal (observability-fix! aignet (observability-config-fix config) state) (observability-fix! aignet config state)))
Theorem:
(defthm observability-fix!-observability-config-equiv-congruence-on-config (implies (observability-config-equiv config config-equiv) (equal (observability-fix! aignet config state) (observability-fix! aignet config-equiv state))) :rule-classes :congruence)