(transunit-ensemble-split-fn-when-loop tunits triggers steps) → (mv er? tunits$)
Function:
(defun transunit-ensemble-split-fn-when-loop (tunits triggers steps) (declare (type (unsigned-byte 60) steps)) (declare (xargs :guard (and (transunit-ensemblep tunits) (ident-setp triggers)))) (b* (((reterr) (irr-transunit-ensemble)) ((when (= 0 (mbe :logic (nfix steps) :exec (acl2::the-fixnat steps)))) (retmsg$ "Out of steps.")) ((erp found tunits$) (transunit-ensemble-try-split-fn-when tunits triggers)) ((unless found) (retok tunits$))) (transunit-ensemble-split-fn-when-loop tunits$ triggers (- steps 1))))
Theorem:
(defthm maybe-msgp-of-transunit-ensemble-split-fn-when-loop.er? (b* (((mv ?er? ?tunits$) (transunit-ensemble-split-fn-when-loop tunits triggers steps))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm transunit-ensemblep-of-transunit-ensemble-split-fn-when-loop.tunits$ (b* (((mv ?er? ?tunits$) (transunit-ensemble-split-fn-when-loop tunits triggers steps))) (transunit-ensemblep tunits$)) :rule-classes :rewrite)