(lhs-indexed->named x scope moddb indnamememo) → (mv xx indnamememo1)
Function:
(defun lhs-indexed->named (x scope moddb indnamememo) (declare (xargs :stobjs (moddb indnamememo))) (declare (xargs :guard (and (lhs-p x) (modscope-p scope) (moddb-ok moddb)))) (declare (xargs :guard (and (modscope-okp scope moddb) (svarlist-boundedp (lhs-vars x) (modscope-local-bound scope moddb))))) (let ((__function__ 'lhs-indexed->named)) (declare (ignorable __function__)) (b* (((mv first rest) (lhs-decomp x)) ((unless first) (mv nil indnamememo)) ((lhrange first) first) ((mv repl indnamememo) (lhatom-case first.atom :z (mv first indnamememo) :var (b* (((mv name indnamememo) (svar-indexed->named-memo first.atom.name scope moddb indnamememo))) (mv (lhrange first.w (lhatom-var name first.atom.rsh)) indnamememo)))) ((mv rest indnamememo) (lhs-indexed->named rest scope moddb indnamememo))) (mv (lhs-cons repl rest) indnamememo))))
Theorem:
(defthm return-type-of-lhs-indexed->named.xx (b* (((mv ?xx ?indnamememo1) (lhs-indexed->named x scope moddb indnamememo))) (and (lhs-p xx) (svarlist-addr-p (lhs-vars xx)))) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-lhs-indexed->named.indnamememo1 (b* (((mv ?xx ?indnamememo1) (lhs-indexed->named x scope moddb indnamememo))) (equal (len indnamememo1) (len indnamememo))) :rule-classes :rewrite)
Theorem:
(defthm lhs-indexed->named-of-lhs-fix-x (equal (lhs-indexed->named (lhs-fix x) scope moddb indnamememo) (lhs-indexed->named x scope moddb indnamememo)))
Theorem:
(defthm lhs-indexed->named-lhs-equiv-congruence-on-x (implies (lhs-equiv x x-equiv) (equal (lhs-indexed->named x scope moddb indnamememo) (lhs-indexed->named x-equiv scope moddb indnamememo))) :rule-classes :congruence)
Theorem:
(defthm lhs-indexed->named-of-modscope-fix-scope (equal (lhs-indexed->named x (modscope-fix scope) moddb indnamememo) (lhs-indexed->named x scope moddb indnamememo)))
Theorem:
(defthm lhs-indexed->named-modscope-equiv-congruence-on-scope (implies (modscope-equiv scope scope-equiv) (equal (lhs-indexed->named x scope moddb indnamememo) (lhs-indexed->named x scope-equiv moddb indnamememo))) :rule-classes :congruence)
Theorem:
(defthm lhs-indexed->named-of-moddb-fix-moddb (equal (lhs-indexed->named x scope (moddb-fix moddb) indnamememo) (lhs-indexed->named x scope moddb indnamememo)))
Theorem:
(defthm lhs-indexed->named-moddb-equiv-congruence-on-moddb (implies (moddb-equiv moddb moddb-equiv) (equal (lhs-indexed->named x scope moddb indnamememo) (lhs-indexed->named x scope moddb-equiv indnamememo))) :rule-classes :congruence)