Transform a code ensemble.
(split-fn-code-ensemble target-fn new-fn-name code split-point) → (mv er? new-code)
Function:
(defun split-fn-code-ensemble (target-fn new-fn-name code split-point) (declare (xargs :guard (and (identp target-fn) (identp new-fn-name) (code-ensemblep code) (natp split-point)))) (b* (((code-ensemble code) code) ((reterr) (irr-code-ensemble)) ((erp tunits) (split-fn-transunit-ensemble target-fn new-fn-name code.transunits split-point))) (retok (change-code-ensemble code :transunits tunits))))
Theorem:
(defthm maybe-msgp-of-split-fn-code-ensemble.er? (b* (((mv ?er? ?new-code) (split-fn-code-ensemble target-fn new-fn-name code split-point))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm code-ensemblep-of-split-fn-code-ensemble.new-code (b* (((mv ?er? ?new-code) (split-fn-code-ensemble target-fn new-fn-name code split-point))) (code-ensemblep new-code)) :rule-classes :rewrite)