Step
*
1
1
of Lemma
bag-summation-add
1. T : Type
2. R : Type
3. add : R ⟶ R ⟶ R
4. zero : R
5. f : T ⟶ R
6. g : T ⟶ R
7. IsMonoid(R;add;zero)
8. Comm(R;add)
9. L : T List
⊢ Σ(x∈L). f[x] add g[x] = (Σ(x∈L). f[x] add Σ(x∈L). g[x]) ∈ R
BY
{ (RepUR ``bag-summation bag-accum`` 0
   THEN Assert ⌜∀x,y,z:R.
                  ((z = add[x;y] ∈ R)
                  
⇒ (accumulate (with value c and list item x):
                       add add[f[x];g[x]] c
                      over list:
                        L
                      with starting value:
                       z)
                     = add[accumulate (with value c and list item x):
                            add f[x] c
                           over list:
                             L
                           with starting value:
                            x);accumulate (with value c and list item x):
                                add g[x] c
                               over list:
                                 L
                               with starting value:
                                y)]
                     ∈ R))⌝⋅
   ) }
1
.....assertion..... 
1. T : Type
2. R : Type
3. add : R ⟶ R ⟶ R
4. zero : R
5. f : T ⟶ R
6. g : T ⟶ R
7. IsMonoid(R;add;zero)
8. Comm(R;add)
9. L : T List
⊢ ∀x,y,z:R.
    ((z = add[x;y] ∈ R)
    
⇒ (accumulate (with value c and list item x):
         add add[f[x];g[x]] c
        over list:
          L
        with starting value:
         z)
       = add[accumulate (with value c and list item x):
              add f[x] c
             over list:
               L
             with starting value:
              x);accumulate (with value c and list item x):
                  add g[x] c
                 over list:
                   L
                 with starting value:
                  y)]
       ∈ R))
2
1. T : Type
2. R : Type
3. add : R ⟶ R ⟶ R
4. zero : R
5. f : T ⟶ R
6. g : T ⟶ R
7. IsMonoid(R;add;zero)
8. Comm(R;add)
9. L : T List
10. ∀x,y,z:R.
      ((z = add[x;y] ∈ R)
      
⇒ (accumulate (with value c and list item x):
           add add[f[x];g[x]] c
          over list:
            L
          with starting value:
           z)
         = add[accumulate (with value c and list item x):
                add f[x] c
               over list:
                 L
               with starting value:
                x);accumulate (with value c and list item x):
                    add g[x] c
                   over list:
                     L
                   with starting value:
                    y)]
         ∈ R))
⊢ accumulate (with value c and list item x):
   add (f[x] add g[x]) c
  over list:
    L
  with starting value:
   zero)
= (accumulate (with value c and list item x):
    add f[x] c
   over list:
     L
   with starting value:
    zero) 
   add 
   accumulate (with value c and list item x):
    add g[x] c
   over list:
     L
   with starting value:
    zero))
∈ R
Latex:
Latex:
1.  T  :  Type
2.  R  :  Type
3.  add  :  R  {}\mrightarrow{}  R  {}\mrightarrow{}  R
4.  zero  :  R
5.  f  :  T  {}\mrightarrow{}  R
6.  g  :  T  {}\mrightarrow{}  R
7.  IsMonoid(R;add;zero)
8.  Comm(R;add)
9.  L  :  T  List
\mvdash{}  \mSigma{}(x\mmember{}L).  f[x]  add  g[x]  =  (\mSigma{}(x\mmember{}L).  f[x]  add  \mSigma{}(x\mmember{}L).  g[x])
By
Latex:
(RepUR  ``bag-summation  bag-accum``  0
  THEN  Assert  \mkleeneopen{}\mforall{}x,y,z:R.
                                ((z  =  add[x;y])
                                {}\mRightarrow{}  (accumulate  (with  value  c  and  list  item  x):
                                          add  add[f[x];g[x]]  c
                                        over  list:
                                            L
                                        with  starting  value:
                                          z)
                                      =  add[accumulate  (with  value  c  and  list  item  x):
                                                    add  f[x]  c
                                                  over  list:
                                                      L
                                                  with  starting  value:
                                                    x);accumulate  (with  value  c  and  list  item  x):
                                                            add  g[x]  c
                                                          over  list:
                                                              L
                                                          with  starting  value:
                                                            y)]))\mkleeneclose{}\mcdot{}
  )
Home
Index