src/ZF/UNITY/MultisetSum.thy
changeset 14052 e9c9f69e4f63
child 15202 d14a6e421a65
equal deleted inserted replaced
14051:4b61bbb0dcab 14052:e9c9f69e4f63
       
     1 (*  Title:      ZF/UNITY/MultusetSum.thy
       
     2     ID:         $Id$
       
     3     Author:     Sidi O Ehmety
       
     4 
       
     5 Setsum for multisets.
       
     6 *)
       
     7 
       
     8 MultisetSum = Multiset +
       
     9 constdefs
       
    10 
       
    11   lcomm :: "[i, i, [i,i]=>i]=>o"
       
    12   "lcomm(A, B, f) ==
       
    13    (ALL x:A. ALL y:A. ALL z:B. f(x, f(y, z))= f(y, f(x, z)))  &
       
    14    (ALL x:A. ALL y:B. f(x, y):B)"
       
    15 
       
    16   general_setsum :: "[i,i,i, [i,i]=>i, i=>i] =>i"
       
    17    "general_setsum(C, B, e, f, g) ==
       
    18     if Finite(C) then fold[cons(e, B)](%x y. f(g(x), y), e, C) else e"
       
    19 
       
    20   msetsum :: "[i=>i, i, i]=>i"
       
    21   "msetsum(g, C, B) == normalize(general_setsum(C, Mult(B), 0, op +#, g))"
       
    22 
       
    23   (* sum for naturals *)
       
    24   nsetsum :: "[i=>i, i] =>i"
       
    25   "nsetsum(g, C) == general_setsum(C, nat, 0, op #+, g)"
       
    26 end