Section REDUCE.
Variable E : Set.
Variable f : E -> Z.
Fixpoint reduce (q : queue E) : Z :=
match q with
| empty => 0%Z
| input d q' => (reduce q' + f d)%Z
end.
Hypothesis positive_function : forall a : E, (f a > 0)%Z.

Lemma reduce_null_fun :
forall q : queue E, (forall d : E, f d = 0%Z) -> reduce q = 0%Z.