### Nuprl Lemma : bag-summation-reindex

`∀[R:Type]. ∀[add:R ⟶ R ⟶ R]. ∀[zero:R].`
`  ∀[T,A:Type]. ∀[g:T ⟶ A]. ∀[h:A ⟶ T]. ∀[f:T ⟶ R].`
`    ∀[b:bag(T)]. (Σ(x∈b). f[x] = Σ(x∈bag-map(g;b)). f[h x] ∈ R) supposing ∀x:T. (x = (h (g x)) ∈ T) `
`  supposing Comm(R;add) ∧ Assoc(R;add)`

Proof

Definitions occuring in Statement :  bag-summation: `Σ(x∈b). f[x]` bag-map: `bag-map(f;bs)` bag: `bag(T)` comm: `Comm(T;op)` assoc: `Assoc(T;op)` uimplies: `b supposing a` uall: `∀[x:A]. B[x]` so_apply: `x[s]` all: `∀x:A. B[x]` and: `P ∧ Q` apply: `f a` function: `x:A ⟶ B[x]` universe: `Type` equal: `s = t ∈ T`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` member: `t ∈ T` top: `Top` and: `P ∧ Q` subtype_rel: `A ⊆r B` all: `∀x:A. B[x]` so_lambda: `λ2x.t[x]` so_apply: `x[s]` squash: `↓T` uimplies: `b supposing a` cand: `A c∧ B` prop: `ℙ` true: `True` guard: `{T}` iff: `P `⇐⇒` Q` rev_implies: `P `` Q` implies: `P `` Q`
Lemmas referenced :  bag-summation-map bag-subtype-list bag-summation_wf equal_wf squash_wf true_wf iff_weakening_equal bag_wf all_wf comm_wf assoc_wf
Rules used in proof :  sqequalSubstitution sqequalRule sqequalReflexivity cut introduction extract_by_obid sqequalHypSubstitution sqequalTransitivity computationStep isectElimination thin isect_memberEquality voidElimination voidEquality productElimination hypothesisEquality applyEquality dependent_functionElimination hypothesis lambdaEquality imageElimination because_Cache independent_isectElimination independent_pairFormation equalityTransitivity equalitySymmetry functionExtensionality cumulativity natural_numberEquality imageMemberEquality baseClosed universeEquality independent_functionElimination functionEquality productEquality isect_memberFormation axiomEquality

Latex:
\mforall{}[R:Type].  \mforall{}[add:R  {}\mrightarrow{}  R  {}\mrightarrow{}  R].  \mforall{}[zero:R].
\mforall{}[T,A:Type].  \mforall{}[g:T  {}\mrightarrow{}  A].  \mforall{}[h:A  {}\mrightarrow{}  T].  \mforall{}[f:T  {}\mrightarrow{}  R].
\mforall{}[b:bag(T)].  (\mSigma{}(x\mmember{}b).  f[x]  =  \mSigma{}(x\mmember{}bag-map(g;b)).  f[h  x])  supposing  \mforall{}x:T.  (x  =  (h  (g  x)))