### Nuprl Lemma : list_accum_permute1

`∀[T,A:Type]. ∀[g:T ⟶ A]. ∀[f:A ⟶ A ⟶ A].`
`  (∀[L:T List]. ∀[x:T]. ∀[n:A].`
`     (accumulate (with value a and list item z):`
`       f[a;g[z]]`
`      over list:`
`        [x / L]`
`      with starting value:`
`       n)`
`     = accumulate (with value a and list item z):`
`        f[a;g[z]]`
`       over list:`
`         L @ [x]`
`       with starting value:`
`        n)`
`     ∈ A)) supposing `
`     (Assoc(A;λx,y. f[x;y]) and `
`     Comm(A;λx,y. f[x;y]))`

Proof

Definitions occuring in Statement :  append: `as @ bs` list_accum: list_accum cons: `[a / b]` nil: `[]` list: `T List` comm: `Comm(T;op)` assoc: `Assoc(T;op)` uimplies: `b supposing a` uall: `∀[x:A]. B[x]` so_apply: `x[s1;s2]` so_apply: `x[s]` lambda: `λx.A[x]` function: `x:A ⟶ B[x]` universe: `Type` equal: `s = t ∈ T`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` member: `t ∈ T` uimplies: `b supposing a` so_lambda: `λ2x.t[x]` so_lambda: `λ2x y.t[x; y]` so_apply: `x[s1;s2]` so_apply: `x[s]` implies: `P `` Q` all: `∀x:A. B[x]` top: `Top` append: `as @ bs` so_lambda: `so_lambda(x,y,z.t[x; y; z])` so_apply: `x[s1;s2;s3]` squash: `↓T` prop: `ℙ` true: `True` subtype_rel: `A ⊆r B` guard: `{T}` iff: `P `⇐⇒` Q` and: `P ∧ Q` rev_implies: `P `` Q` assoc: `Assoc(T;op)` infix_ap: `x f y` comm: `Comm(T;op)`
Lemmas referenced :  list_induction uall_wf equal_wf list_accum_wf cons_wf append_wf nil_wf list_wf list_accum_cons_lemma list_ind_nil_lemma list_accum_nil_lemma list_ind_cons_lemma squash_wf true_wf iff_weakening_equal assoc_wf comm_wf
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation introduction cut thin extract_by_obid sqequalHypSubstitution isectElimination hypothesisEquality sqequalRule lambdaEquality cumulativity because_Cache hypothesis applyEquality functionExtensionality independent_functionElimination dependent_functionElimination isect_memberEquality voidElimination voidEquality axiomEquality equalityTransitivity equalitySymmetry lambdaFormation rename imageElimination natural_numberEquality imageMemberEquality baseClosed universeEquality independent_isectElimination productElimination functionEquality

Latex:
\mforall{}[T,A:Type].  \mforall{}[g:T  {}\mrightarrow{}  A].  \mforall{}[f:A  {}\mrightarrow{}  A  {}\mrightarrow{}  A].
(\mforall{}[L:T  List].  \mforall{}[x:T].  \mforall{}[n:A].
(accumulate  (with  value  a  and  list  item  z):
f[a;g[z]]
over  list:
[x  /  L]
with  starting  value:
n)
=  accumulate  (with  value  a  and  list  item  z):
f[a;g[z]]
over  list:
L  @  [x]
with  starting  value:
n)))  supposing
(Assoc(A;\mlambda{}x,y.  f[x;y])  and
Comm(A;\mlambda{}x,y.  f[x;y]))

Date html generated: 2017_04_17-AM-07_37_52
Last ObjectModification: 2017_02_27-PM-04_11_45

Theory : list_1

Home Index