Disambiguate an external declaration.
(dimb-extdecl extdecl table) → (mv erp new-extdecl new-table)
Function:
(defun dimb-extdecl (extdecl table) (declare (xargs :guard (and (extdeclp extdecl) (dimb-tablep table)))) (let ((__function__ 'dimb-extdecl)) (declare (ignorable __function__)) (b* (((reterr) (irr-extdecl) (irr-dimb-table))) (extdecl-case extdecl :fundef (b* (((erp new-fundef table) (dimb-fundef extdecl.unwrap table))) (retok (extdecl-fundef new-fundef) table)) :decl (b* (((erp new-decl table) (dimb-decl extdecl.unwrap table))) (retok (extdecl-decl new-decl) table)) :empty (retok (extdecl-fix extdecl) (dimb-table-fix table)) :asm (retok (extdecl-fix extdecl) (dimb-table-fix table))))))
Theorem:
(defthm extdeclp-of-dimb-extdecl.new-extdecl (b* (((mv acl2::?erp ?new-extdecl ?new-table) (dimb-extdecl extdecl table))) (extdeclp new-extdecl)) :rule-classes :rewrite)
Theorem:
(defthm dimb-tablep-of-dimb-extdecl.new-table (b* (((mv acl2::?erp ?new-extdecl ?new-table) (dimb-extdecl extdecl table))) (dimb-tablep new-table)) :rule-classes :rewrite)
Theorem:
(defthm extdecl-unambp-of-dimb-extdecl (b* (((mv acl2::?erp ?new-extdecl ?new-table) (dimb-extdecl extdecl table))) (implies (not erp) (extdecl-unambp new-extdecl))))
Theorem:
(defthm dimb-extdecl-of-extdecl-fix-extdecl (equal (dimb-extdecl (extdecl-fix extdecl) table) (dimb-extdecl extdecl table)))
Theorem:
(defthm dimb-extdecl-extdecl-equiv-congruence-on-extdecl (implies (extdecl-equiv extdecl extdecl-equiv) (equal (dimb-extdecl extdecl table) (dimb-extdecl extdecl-equiv table))) :rule-classes :congruence)
Theorem:
(defthm dimb-extdecl-of-dimb-table-fix-table (equal (dimb-extdecl extdecl (dimb-table-fix table)) (dimb-extdecl extdecl table)))
Theorem:
(defthm dimb-extdecl-dimb-table-equiv-congruence-on-table (implies (dimb-table-equiv table table-equiv) (equal (dimb-extdecl extdecl table) (dimb-extdecl extdecl table-equiv))) :rule-classes :congruence)