Extend stv-expand-input-entry across a list of lines.
(stv-expand-input-lines lines gensyms usersyms) → (mv new-lines gensyms usersyms)
Function:
(defun stv-expand-input-lines (lines gensyms usersyms) (declare (xargs :guard (true-list-listp lines))) (let ((__function__ 'stv-expand-input-lines)) (declare (ignorable __function__)) (b* (((when (atom lines)) (mv nil gensyms usersyms)) (line1 (car lines)) ((cons name1 entries1) line1) ((unless (and (consp name1) (atom-listp name1))) (raise "Expected all input line names to be already expanded to ~ non-empty lists of E bits, but found ~x0." name1) (mv nil gensyms usersyms)) ((mv new-entries1 gensyms usersyms) (stv-expand-input-entries name1 (len name1) 0 entries1 gensyms usersyms nil)) (new-car (cons name1 new-entries1)) ((mv new-cdr gensyms usersyms) (stv-expand-input-lines (cdr lines) gensyms usersyms))) (mv (cons new-car new-cdr) gensyms usersyms))))
Theorem:
(defthm true-list-listp-of-stv-expand-input-lines.new-lines (b* (((mv ?new-lines ?gensyms ?usersyms) (stv-expand-input-lines lines gensyms usersyms))) (true-list-listp new-lines)) :rule-classes :rewrite)
Theorem:
(defthm stv-expand-input-lines-mvtypes-0 (true-listp (mv-nth 0 (stv-expand-input-lines lines gensyms usersyms))) :rule-classes :type-prescription)
Theorem:
(defthm true-listp-of-stv-expand-input-lines-gensyms (let ((ret (stv-expand-input-lines lines gensyms usersyms))) (implies (true-listp gensyms) (true-listp (mv-nth 1 ret)))))