Perform skip-detection for a list of expressions.
Signature: (sd-analyze-ctxexprs ctxexprs global-pats) returns a list of sd-problem-ps.
We just call sd-patalist-compare for every expression in
Function:
(defun sd-analyze-ctxexprs (ctxexprs global-pats) (declare (xargs :guard (and (vl-exprctxalist-p ctxexprs) (sd-patalist-p global-pats)))) (if (atom ctxexprs) nil (b* ((expr (caar ctxexprs)) (ctx (vl-context1-fix (cdar ctxexprs))) (expr-names (vl-expr-names expr)) (expr-keys (sd-keygen-list expr-names nil)) (expr-pats (sd-patalist expr-keys)) (dom (strip-cars expr-pats)) (report1 (sd-patalist-compare dom expr-pats global-pats ctx)) (- (flush-hons-get-hash-table-link expr-pats))) (append report1 (sd-analyze-ctxexprs (cdr ctxexprs) global-pats)))))
Theorem:
(defthm true-listp-of-sd-analyze-ctxexprs (true-listp (sd-analyze-ctxexprs ctxexprs global-pats)) :rule-classes :type-prescription)
Theorem:
(defthm sd-problemlist-p-of-sd-analyze-ctxexprs (implies (and (force (vl-exprctxalist-p ctxexprs)) (force (sd-patalist-p global-pats))) (sd-problemlist-p (sd-analyze-ctxexprs ctxexprs global-pats))))