(svex-compose-assigns/delays assigns delays constraints &key (rewrite 't) (verbosep 'nil)) → (mv updates nextstates full-constraints)
Function:
(defun svex-compose-assigns/delays-fn (assigns delays constraints rewrite verbosep) (declare (xargs :guard (and (svex-alist-p assigns) (svex-alist-p delays) (constraintlist-p constraints)))) (let ((__function__ 'svex-compose-assigns/delays)) (declare (ignorable __function__)) (b* ((updates (cwtime (svex-assigns-compose assigns :rewrite rewrite) :mintime 1)) ((with-fast updates)) (next-states (cwtime (svex-alist-compose delays updates) :mintime 1)) (full-constraints (cwtime (constraintlist-compose constraints updates) :mintime 1)) (- (clear-memoize-table 'svex-compose)) ((unless rewrite) (mv updates next-states full-constraints)) (rewritten (svex-alist-rewrite-fixpoint (append updates next-states) :verbosep verbosep :count 2)) (updates-len (len updates)) (updates (take updates-len rewritten)) (next-states (nthcdr updates-len rewritten))) (clear-memoize-table 'svex-compose) (mv updates next-states full-constraints))))
Theorem:
(defthm svex-alist-p-of-svex-compose-assigns/delays.updates (b* (((mv ?updates ?nextstates ?full-constraints) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep))) (svex-alist-p updates)) :rule-classes :rewrite)
Theorem:
(defthm svex-alist-p-of-svex-compose-assigns/delays.nextstates (b* (((mv ?updates ?nextstates ?full-constraints) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep))) (svex-alist-p nextstates)) :rule-classes :rewrite)
Theorem:
(defthm constraintlist-p-of-svex-compose-assigns/delays.full-constraints (b* (((mv ?updates ?nextstates ?full-constraints) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep))) (constraintlist-p full-constraints)) :rule-classes :rewrite)
Theorem:
(defthm svex-compose-assigns/delays-fn-of-svex-alist-fix-assigns (equal (svex-compose-assigns/delays-fn (svex-alist-fix assigns) delays constraints rewrite verbosep) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep)))
Theorem:
(defthm svex-compose-assigns/delays-fn-svex-alist-equiv-congruence-on-assigns (implies (svex-alist-equiv assigns assigns-equiv) (equal (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep) (svex-compose-assigns/delays-fn assigns-equiv delays constraints rewrite verbosep))) :rule-classes :congruence)
Theorem:
(defthm svex-compose-assigns/delays-fn-of-svex-alist-fix-delays (equal (svex-compose-assigns/delays-fn assigns (svex-alist-fix delays) constraints rewrite verbosep) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep)))
Theorem:
(defthm svex-compose-assigns/delays-fn-svex-alist-equiv-congruence-on-delays (implies (svex-alist-equiv delays delays-equiv) (equal (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep) (svex-compose-assigns/delays-fn assigns delays-equiv constraints rewrite verbosep))) :rule-classes :congruence)
Theorem:
(defthm svex-compose-assigns/delays-fn-of-constraintlist-fix-constraints (equal (svex-compose-assigns/delays-fn assigns delays (constraintlist-fix constraints) rewrite verbosep) (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep)))
Theorem:
(defthm svex-compose-assigns/delays-fn-constraintlist-equiv-congruence-on-constraints (implies (constraintlist-equiv constraints constraints-equiv) (equal (svex-compose-assigns/delays-fn assigns delays constraints rewrite verbosep) (svex-compose-assigns/delays-fn assigns delays constraints-equiv rewrite verbosep))) :rule-classes :congruence)