Step
*
1
1
1
1
of Lemma
list_accum-remove-repeats
1. T : Type
2. eq : EqDecider(T)
3. A : Type
4. g : T ⟶ A
5. f : A ⟶ A ⟶ A
6. Comm(A;λx,y. f[x;y])
7. Assoc(A;λx,y. f[x;y])
8. ∀x:A. (f[x;x] = x ∈ A)
9. u : T
10. u1 : T
11. v : T List
12. ∀n:A
      (accumulate (with value a and list item z):
        f[a;g[z]]
       over list:
         v
       with starting value:
        f[n;g[u]])
      = accumulate (with value a and list item z):
         f[a;g[z]]
        over list:
          filter(λx.(¬b(eq x u));v)
        with starting value:
         f[n;g[u]])
      ∈ A)
13. n : A
14. u1 = u ∈ T
15. u1 = u ∈ T
⊢ accumulate (with value a and list item z):
   f[a;g[z]]
  over list:
    v
  with starting value:
   f[f[n;g[u]];g[u1]])
= accumulate (with value a and list item z):
   f[a;g[z]]
  over list:
    filter(λx.(¬b(eq x u));v)
  with starting value:
   f[n;g[u]])
∈ A
BY
{ ((InstHyp [⌜f[n;g[u]]⌝] (-4)⋅ THENA Auto) THEN NthHypEq (-1) THEN RepeatFor 2 ((EqCD THEN Auto)))⋅ }
1
.....subterm..... T:t
2:n
1. T : Type
2. eq : EqDecider(T)
3. A : Type
4. g : T ⟶ A
5. f : A ⟶ A ⟶ A
6. Comm(A;λx,y. f[x;y])
7. Assoc(A;λx,y. f[x;y])
8. ∀x:A. (f[x;x] = x ∈ A)
9. u : T
10. u1 : T
11. v : T List
12. ∀n:A
      (accumulate (with value a and list item z):
        f[a;g[z]]
       over list:
         v
       with starting value:
        f[n;g[u]])
      = accumulate (with value a and list item z):
         f[a;g[z]]
        over list:
          filter(λx.(¬b(eq x u));v)
        with starting value:
         f[n;g[u]])
      ∈ A)
13. n : A
14. u1 = u ∈ T
15. u1 = u ∈ T
16. accumulate (with value a and list item z):
     f[a;g[z]]
    over list:
      v
    with starting value:
     f[f[n;g[u]];g[u]])
= accumulate (with value a and list item z):
   f[a;g[z]]
  over list:
    filter(λx.(¬b(eq x u));v)
  with starting value:
   f[f[n;g[u]];g[u]])
∈ A
⊢ f[n;g[u]] = f[f[n;g[u]];g[u]] ∈ A
Latex:
Latex:
1.  T  :  Type
2.  eq  :  EqDecider(T)
3.  A  :  Type
4.  g  :  T  {}\mrightarrow{}  A
5.  f  :  A  {}\mrightarrow{}  A  {}\mrightarrow{}  A
6.  Comm(A;\mlambda{}x,y.  f[x;y])
7.  Assoc(A;\mlambda{}x,y.  f[x;y])
8.  \mforall{}x:A.  (f[x;x]  =  x)
9.  u  :  T
10.  u1  :  T
11.  v  :  T  List
12.  \mforall{}n:A
            (accumulate  (with  value  a  and  list  item  z):
                f[a;g[z]]
              over  list:
                  v
              with  starting  value:
                f[n;g[u]])
            =  accumulate  (with  value  a  and  list  item  z):
                  f[a;g[z]]
                over  list:
                    filter(\mlambda{}x.(\mneg{}\msubb{}(eq  x  u));v)
                with  starting  value:
                  f[n;g[u]]))
13.  n  :  A
14.  u1  =  u
15.  u1  =  u
\mvdash{}  accumulate  (with  value  a  and  list  item  z):
      f[a;g[z]]
    over  list:
        v
    with  starting  value:
      f[f[n;g[u]];g[u1]])
=  accumulate  (with  value  a  and  list  item  z):
      f[a;g[z]]
    over  list:
        filter(\mlambda{}x.(\mneg{}\msubb{}(eq  x  u));v)
    with  starting  value:
      f[n;g[u]])
By
Latex:
((InstHyp  [\mkleeneopen{}f[n;g[u]]\mkleeneclose{}]  (-4)\mcdot{}  THENA  Auto)  THEN  NthHypEq  (-1)  THEN  RepeatFor  2  ((EqCD  THEN  Auto)))\mcdot{}
Home
Index