(ext-declon-try-split-fn-when extdecl triggers transunits) → (mv er? found extdecls)
Function:
(defun ext-declon-try-split-fn-when (extdecl triggers transunits) (declare (xargs :guard (and (ext-declonp extdecl) (ident-setp triggers) (transunit-ensemblep transunits)))) (b* (((reterr) nil nil)) (ext-declon-case extdecl :fundef (b* (((erp fundef1 fundef2) (fundef-try-split-fn-when extdecl.fundef triggers transunits))) (fundef-option-case fundef2 :some (retok t (list (ext-declon-fundef fundef1) (ext-declon-fundef fundef2.val))) :none (retok nil (list (ext-declon-fundef fundef1))))) :otherwise (retok nil (list (ext-declon-fix extdecl))))))
Theorem:
(defthm maybe-msgp-of-ext-declon-try-split-fn-when.er? (b* (((mv ?er? ?found ?extdecls) (ext-declon-try-split-fn-when extdecl triggers transunits))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm booleanp-of-ext-declon-try-split-fn-when.found (b* (((mv ?er? ?found ?extdecls) (ext-declon-try-split-fn-when extdecl triggers transunits))) (booleanp found)) :rule-classes :type-prescription)
Theorem:
(defthm ext-declon-listp-of-ext-declon-try-split-fn-when.extdecls (b* (((mv ?er? ?found ?extdecls) (ext-declon-try-split-fn-when extdecl triggers transunits))) (ext-declon-listp extdecls)) :rule-classes :rewrite)
Theorem:
(defthm true-listp-of-ext-declon-try-split-fn-when.extdecls (b* (((mv ?er? ?found ?extdecls) (ext-declon-try-split-fn-when extdecl triggers transunits))) (true-listp extdecls)) :rule-classes :type-prescription)