Process the inputs.
(split-fn-when-process-inputs const-old const-new triggers wrld) → (mv er? code const-new$ triggers)
Function:
(defun split-fn-when-process-inputs (const-old const-new triggers wrld) (declare (xargs :guard (plist-worldp wrld))) (b* (((reterr) (irr-code-ensemble) nil nil) ((unless (symbolp const-old)) (retmsg$ "~x0 must be a symbol" const-old)) (code (constant-value const-old wrld)) ((unless (code-ensemblep code)) (retmsg$ "~x0 must be a code ensemble." const-old)) (tunits (code-ensemble->transunits code)) ((unless (transunit-ensemble-annop tunits)) (retmsg$ "~x0 must be an annotated with validation information." const-old)) ((unless (symbolp const-new)) (retmsg$ "~x0 must be a symbol" const-new)) (triggers (if (stringp triggers) (list triggers) triggers)) ((unless (string-listp triggers)) (retmsg$ "~x0 must be a string or string list" triggers)) ((when (endp triggers)) (retmsg$ "~x0 must be a list with at least one element" triggers))) (retok code const-new triggers)))
Theorem:
(defthm maybe-msgp-of-split-fn-when-process-inputs.er? (b* (((mv ?er? ?code ?const-new$ ?triggers) (split-fn-when-process-inputs const-old const-new triggers wrld))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-split-fn-when-process-inputs.code (b* (((mv ?er? ?code ?const-new$ ?triggers) (split-fn-when-process-inputs const-old const-new triggers wrld))) (and (code-ensemblep code) (transunit-ensemble-annop (code-ensemble->transunits code)))) :rule-classes :rewrite)
Theorem:
(defthm symbolp-of-split-fn-when-process-inputs.const-new$ (b* (((mv ?er? ?code ?const-new$ ?triggers) (split-fn-when-process-inputs const-old const-new triggers wrld))) (symbolp const-new$)) :rule-classes :type-prescription)
Theorem:
(defthm string-listp-of-split-fn-when-process-inputs.triggers (b* (((mv ?er? ?code ?const-new$ ?triggers) (split-fn-when-process-inputs const-old const-new triggers wrld))) (string-listp triggers)) :rule-classes :rewrite)