(observability-split-supergate id config aignet) → (mv hyps rest)
Function:
(defun observability-split-supergate (id config aignet) (declare (xargs :stobjs (aignet))) (declare (xargs :guard (and (natp id) (observability-config-p config)))) (declare (xargs :guard (and (id-existsp id aignet) (not (equal (id->type id aignet) (out-type)))))) (let ((__function__ 'observability-split-supergate)) (declare (ignorable __function__)) (b* ((full-size (count-gates-mark id aignet)) ((local-stobjs aignet-refcounts) (mv hyps rest aignet-refcounts)) (aignet-refcounts (resize-u32 (+ 1 (lnfix id)) aignet-refcounts)) ((mv lits &) (lit-collect-supergate (make-lit id 0) t nil 1000 nil aignet-refcounts aignet)) (- (cw "Observability supergate: ~x0 lits~%" (len lits))) ((mv hyps rest) (observability-split-supergate-aux lits config full-size aignet)) (- (cw "Observability hyp lits: ~x0 concl: ~x1~%" (len hyps) (len rest)))) (mv hyps rest aignet-refcounts))))
Theorem:
(defthm lit-listp-of-observability-split-supergate.hyps (b* (((mv ?hyps common-lisp::?rest) (observability-split-supergate id config aignet))) (lit-listp hyps)) :rule-classes :rewrite)
Theorem:
(defthm lit-listp-of-observability-split-supergate.rest (b* (((mv ?hyps common-lisp::?rest) (observability-split-supergate id config aignet))) (lit-listp rest)) :rule-classes :rewrite)
Theorem:
(defthm aignet-lit-listp-of-observability-split-supergate (b* (((mv ?hyps common-lisp::?rest) (observability-split-supergate id config aignet))) (implies (and (aignet-idp id aignet) (not (equal (ctype (stype (car (lookup-id id aignet)))) :output))) (and (aignet-lit-listp hyps aignet) (aignet-lit-listp rest aignet)))))
Theorem:
(defthm eval-of-observability-split-supergate (b* (((mv ?hyps common-lisp::?rest) (observability-split-supergate id config aignet))) (equal (b-and (aignet-eval-conjunction hyps invals regvals aignet) (aignet-eval-conjunction rest invals regvals aignet)) (id-eval id invals regvals aignet))))
Theorem:
(defthm observability-split-supergate-of-nfix-id (equal (observability-split-supergate (nfix id) config aignet) (observability-split-supergate id config aignet)))
Theorem:
(defthm observability-split-supergate-nat-equiv-congruence-on-id (implies (nat-equiv id id-equiv) (equal (observability-split-supergate id config aignet) (observability-split-supergate id-equiv config aignet))) :rule-classes :congruence)
Theorem:
(defthm observability-split-supergate-of-observability-config-fix-config (equal (observability-split-supergate id (observability-config-fix config) aignet) (observability-split-supergate id config aignet)))
Theorem:
(defthm observability-split-supergate-observability-config-equiv-congruence-on-config (implies (observability-config-equiv config config-equiv) (equal (observability-split-supergate id config aignet) (observability-split-supergate id config-equiv aignet))) :rule-classes :congruence)
Theorem:
(defthm observability-split-supergate-of-node-list-fix-aignet (equal (observability-split-supergate id config (node-list-fix aignet)) (observability-split-supergate id config aignet)))
Theorem:
(defthm observability-split-supergate-node-list-equiv-congruence-on-aignet (implies (node-list-equiv aignet aignet-equiv) (equal (observability-split-supergate id config aignet) (observability-split-supergate id config aignet-equiv))) :rule-classes :congruence)