(split-plusargs-exec args acc plusacc) → (mv acc plusacc)
Function:
(defun split-plusargs-exec (args acc plusacc) (declare (xargs :guard (and (string-listp args) (string-listp acc) (string-listp plusacc)))) (let ((__function__ 'split-plusargs-exec)) (declare (ignorable __function__)) (b* (((when (atom args)) (mv (string-list-fix acc) (string-list-fix plusacc))) ((cons first rest) args) ((mv acc plusacc) (if (and (< 0 (length first)) (eql (char first 0) #\+)) (mv acc (cons (subseq first 1 nil) plusacc)) (mv (cons first acc) plusacc)))) (split-plusargs-exec rest acc plusacc))))
Theorem:
(defthm string-listp-of-split-plusargs-exec.acc (b* (((mv ?acc ?plusacc) (split-plusargs-exec args acc plusacc))) (string-listp acc)) :rule-classes :rewrite)
Theorem:
(defthm string-listp-of-split-plusargs-exec.plusacc (b* (((mv ?acc ?plusacc) (split-plusargs-exec args acc plusacc))) (string-listp plusacc)) :rule-classes :rewrite)