Fixpoint sigma (l1 : list E) : (E -> Z) -> Z :=
  fun f : E -> Z =>
  match l1 with
  | nil => 0%Z
  | e :: l2 => (f e + sigma l2 f)%Z
  end.

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