(fundef-try-split-fn-when fundef triggers transunits) → (mv er? fundef1 fundef2)
Function:
(defun fundef-try-split-fn-when (fundef triggers transunits) (declare (xargs :guard (and (fundefp fundef) (ident-setp triggers) (transunit-ensemblep transunits)))) (b* (((reterr) (irr-fundef) nil) (fundef (fundef-fix fundef)) ((fundef fundef) fundef) ((declor fundef.declor) fundef.declor) (position? (block-item-list-try-split-fn-when (comp-stmt->items fundef.body) triggers)) ((unless position?) (retok fundef nil)) ((erp fun-name) (b* (((reterr) nil)) (dirdeclor-case fundef.declor.direct :function-params (retok (c$::dirdeclor->ident fundef.declor.direct.declor)) :function-names (retok (c$::dirdeclor->ident fundef.declor.direct.declor)) :otherwise (retmsg$ "Malformed syntax."))))) (split-fn-fundef fun-name (transunit-ensemble-fresh-ident fun-name transunits) fundef position?)))
Theorem:
(defthm maybe-msgp-of-fundef-try-split-fn-when.er? (b* (((mv ?er? ?fundef1 ?fundef2) (fundef-try-split-fn-when fundef triggers transunits))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm fundefp-of-fundef-try-split-fn-when.fundef1 (b* (((mv ?er? ?fundef1 ?fundef2) (fundef-try-split-fn-when fundef triggers transunits))) (fundefp fundef1)) :rule-classes :rewrite)
Theorem:
(defthm fundef-optionp-of-fundef-try-split-fn-when.fundef2 (b* (((mv ?er? ?fundef1 ?fundef2) (fundef-try-split-fn-when fundef triggers transunits))) (fundef-optionp fundef2)) :rule-classes :rewrite)