Validate a list of external declarations.
(valid-ext-declon-list edecls table ienv) → (mv erp new-edecls new-table)
We validate them in order, threading the validation table through.
Function:
(defun valid-ext-declon-list (edecls table ienv) (declare (xargs :guard (and (ext-declon-listp edecls) (valid-tablep table) (ienvp ienv)))) (declare (xargs :guard (ext-declon-list-unambp edecls))) (b* (((reterr) nil (irr-valid-table)) ((when (endp edecls)) (retok nil (valid-table-fix table))) ((erp new-edecl table) (valid-ext-declon (car edecls) table ienv)) ((erp new-edecls table) (valid-ext-declon-list (cdr edecls) table ienv))) (retok (cons new-edecl new-edecls) table)))
Theorem:
(defthm maybe-msgp-of-valid-ext-declon-list.erp (b* (((mv acl2::?erp ?new-edecls ?new-table) (valid-ext-declon-list edecls table ienv))) (maybe-msgp erp)) :rule-classes :rewrite)
Theorem:
(defthm ext-declon-listp-of-valid-ext-declon-list.new-edecls (b* (((mv acl2::?erp ?new-edecls ?new-table) (valid-ext-declon-list edecls table ienv))) (ext-declon-listp new-edecls)) :rule-classes :rewrite)
Theorem:
(defthm valid-tablep-of-valid-ext-declon-list.new-table (b* (((mv acl2::?erp ?new-edecls ?new-table) (valid-ext-declon-list edecls table ienv))) (valid-tablep new-table)) :rule-classes :rewrite)
Theorem:
(defthm ext-declon-list-unambp-of-valid-ext-declon-list (implies (ext-declon-list-unambp edecls) (b* (((mv acl2::?erp ?new-edecls ?new-table) (valid-ext-declon-list edecls table ienv))) (implies (not erp) (ext-declon-list-unambp new-edecls)))))
Theorem:
(defthm valid-ext-declon-list-of-ext-declon-list-fix-edecls (equal (valid-ext-declon-list (ext-declon-list-fix edecls) table ienv) (valid-ext-declon-list edecls table ienv)))
Theorem:
(defthm valid-ext-declon-list-ext-declon-list-equiv-congruence-on-edecls (implies (ext-declon-list-equiv edecls edecls-equiv) (equal (valid-ext-declon-list edecls table ienv) (valid-ext-declon-list edecls-equiv table ienv))) :rule-classes :congruence)
Theorem:
(defthm valid-ext-declon-list-of-valid-table-fix-table (equal (valid-ext-declon-list edecls (valid-table-fix table) ienv) (valid-ext-declon-list edecls table ienv)))
Theorem:
(defthm valid-ext-declon-list-valid-table-equiv-congruence-on-table (implies (valid-table-equiv table table-equiv) (equal (valid-ext-declon-list edecls table ienv) (valid-ext-declon-list edecls table-equiv ienv))) :rule-classes :congruence)
Theorem:
(defthm valid-ext-declon-list-of-ienv-fix-ienv (equal (valid-ext-declon-list edecls table (ienv-fix ienv)) (valid-ext-declon-list edecls table ienv)))
Theorem:
(defthm valid-ext-declon-list-ienv-equiv-congruence-on-ienv (implies (ienv-equiv ienv ienv-equiv) (equal (valid-ext-declon-list edecls table ienv) (valid-ext-declon-list edecls table ienv-equiv))) :rule-classes :congruence)