Section SIGMA_BUT.
Variable E : Set.
Variable x0 : E.
Hypothesis eq_E_dec : eq_dec E.
Variable f : E -> Z.
Fixpoint sigma_but (l1 : list E) : (E -> Z) -> Z :=
fun f : E -> Z =>
match l1 with
| nil => 0%Z
| e :: l2 =>
if eq_E_dec e x0
then sigma_but l2 f
else (f e + sigma_but l2 f)%Z
end.

Lemma sigma_but_pos :
forall (f : E -> Z) (l : list E),
(forall x_ : E, (f x_ >= 0)%Z) -> (sigma_but l f >= 0)%Z.