(observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) → (mv conj new-copy new-strash new-aignet2 new-state)
Function:
(defun observability-fix-hyp/concl (hyp concl aignet copy gatesimp strash aignet2 state) (declare (xargs :stobjs (aignet copy strash aignet2 state))) (declare (xargs :guard (and (litp hyp) (litp concl) (gatesimp-p gatesimp)))) (declare (xargs :guard (and (<= (num-fanins aignet) (lits-length copy)) (aignet-copies-in-bounds copy aignet2) (fanin-litp hyp aignet) (fanin-litp concl aignet) (<= (num-ins aignet) (num-ins aignet2)) (<= (num-regs aignet) (num-regs aignet2))))) (let ((__function__ 'observability-fix-hyp/concl)) (declare (ignorable __function__)) (b* (((mv new-hyp ?hyp-copies new-concls copy strash aignet2 state) (observability-fix-hyps/concls (list hyp) (list concl) aignet copy gatesimp strash aignet2 state)) ((mv conj strash aignet2) (aignet-hash-and new-hyp (car new-concls) gatesimp strash aignet2))) (mv conj copy strash aignet2 state))))
Theorem:
(defthm litp-of-observability-fix-hyp/concl.conj (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (litp conj)) :rule-classes :rewrite)
Theorem:
(defthm aignet-extension-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (aignet-extension-p new-aignet2 aignet2)))
Theorem:
(defthm stype-counts-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (implies (and (not (equal (stype-fix stype) (and-stype))) (not (equal (stype-fix stype) (xor-stype)))) (equal (stype-count stype new-aignet2) (stype-count stype aignet2)))))
Theorem:
(defthm copy-length-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (implies (and (<= (num-fanins aignet) (len copy)) (aignet-litp hyp aignet) (aignet-litp concl aignet)) (equal (len new-copy) (len copy)))))
Theorem:
(defthm copies-in-bounds-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (implies (and (aignet-copies-in-bounds copy aignet2) (aignet-litp hyp aignet) (aignet-litp concl aignet) (<= (num-ins aignet) (num-ins aignet2)) (<= (num-regs aignet) (num-regs aignet2))) (and (aignet-copies-in-bounds new-copy new-aignet2) (aignet-litp conj new-aignet2)))))
Theorem:
(defthm eval-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (implies (and (aignet-copies-in-bounds copy aignet2) (aignet-litp hyp aignet) (aignet-litp concl aignet) (<= (num-ins aignet) (num-ins aignet2)) (<= (num-regs aignet) (num-regs aignet2))) (equal (lit-eval conj invals regvals new-aignet2) (b-and (lit-eval hyp (input-copy-values 0 invals regvals aignet copy aignet2) (reg-copy-values 0 invals regvals aignet copy aignet2) aignet) (lit-eval concl (input-copy-values 0 invals regvals aignet copy aignet2) (reg-copy-values 0 invals regvals aignet copy aignet2) aignet))))))
Theorem:
(defthm w-state-of-observability-fix-hyp/concl (b* (((mv ?conj ?new-copy ?new-strash ?new-aignet2 ?new-state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state))) (equal (w new-state) (w state))))
Theorem:
(defthm observability-fix-hyp/concl-of-lit-fix-hyp (equal (observability-fix-hyp/concl (lit-fix hyp) concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state)))
Theorem:
(defthm observability-fix-hyp/concl-lit-equiv-congruence-on-hyp (implies (lit-equiv hyp hyp-equiv) (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp-equiv concl aignet copy gatesimp strash aignet2 state))) :rule-classes :congruence)
Theorem:
(defthm observability-fix-hyp/concl-of-lit-fix-concl (equal (observability-fix-hyp/concl hyp (lit-fix concl) aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state)))
Theorem:
(defthm observability-fix-hyp/concl-lit-equiv-congruence-on-concl (implies (lit-equiv concl concl-equiv) (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl-equiv aignet copy gatesimp strash aignet2 state))) :rule-classes :congruence)
Theorem:
(defthm observability-fix-hyp/concl-of-node-list-fix-aignet (equal (observability-fix-hyp/concl hyp concl (node-list-fix aignet) copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state)))
Theorem:
(defthm observability-fix-hyp/concl-node-list-equiv-congruence-on-aignet (implies (node-list-equiv aignet aignet-equiv) (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet-equiv copy gatesimp strash aignet2 state))) :rule-classes :congruence)
Theorem:
(defthm observability-fix-hyp/concl-of-gatesimp-fix-gatesimp (equal (observability-fix-hyp/concl hyp concl aignet copy (gatesimp-fix gatesimp) strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state)))
Theorem:
(defthm observability-fix-hyp/concl-gatesimp-equiv-congruence-on-gatesimp (implies (gatesimp-equiv gatesimp gatesimp-equiv) (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp-equiv strash aignet2 state))) :rule-classes :congruence)
Theorem:
(defthm observability-fix-hyp/concl-of-node-list-fix-aignet2 (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash (node-list-fix aignet2) state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state)))
Theorem:
(defthm observability-fix-hyp/concl-node-list-equiv-congruence-on-aignet2 (implies (node-list-equiv aignet2 aignet2-equiv) (equal (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2 state) (observability-fix-hyp/concl hyp concl aignet copy gatesimp strash aignet2-equiv state))) :rule-classes :congruence)