Section REDUCE_EFFECT.
Variable Message : Set.
Let Bag_of_message := Bag_of_Data Message.
Variable f : Message -> Z.

Lemma reduce_collect_message :
forall (m : Message) (s1 s2 : Site) (b : Bag_of_message),
first Message (b s1 s2) = value Message m ->
reduce Message f (Collect_message Message b s1 s2 s1 s2) =
(reduce Message f (b s1 s2) - f m)%Z.