@@ -332,20 +332,27 @@ Section esum.
332332Variables (R : realFieldType) (T : choiceType).
333333Implicit Types (S : set T) (f g : T -> \bar R).
334334
335- Import PosEsum.
336-
337- Definition esum S f := pos_esum S f^\+ - pos_esum S f^\-.
335+ Definition esum S f := PosEsum.pos_esum S f^\+ - PosEsum.pos_esum S f^\-.
338336
339337Local Notation "\esum_ ( i 'in ' P ) A" := (esum P (fun i => A)).
340338
339+ Lemma eq_esum S f g : (forall i, S i -> f i = g i) ->
340+ \esum_(i in S) f i = \esum_(i in S) g i.
341+ Proof .
342+ by move=> e; congr (_ - _); apply: PosEsum.eq_pos_esum => i /set_mem/e fgi;
343+ rewrite !(funeposE,funenegE) fgi.
344+ Qed .
345+
341346Lemma ge0_esum S f : (forall x, S x -> 0 <= f x) ->
342347 \esum_(i in S) f i = ereal_sup [set \sum_(x \in B) f x | B in fsets S].
343348Proof .
344- by move=> ?; rewrite /esum ge0_pos_esum_funepos// ge0_pos_esum_funeneg// sube0.
349+ move=> ?.
350+ rewrite /esum PosEsum.ge0_pos_esum_funepos// PosEsum.ge0_pos_esum_funeneg//.
351+ by rewrite sube0.
345352Qed .
346353
347354Lemma esum_set0 f : \esum_(i in set0) f i = 0.
348- Proof . by rewrite /esum !pos_esum_set0 subee. Qed .
355+ Proof . by rewrite /esum !PosEsum. pos_esum_set0 subee. Qed .
349356
350357Lemma esumN S f : (forall x, S x -> 0 <= f x) ->
351358 \esum_(x in S) - f x = - \esum_(i in S) f i.
@@ -360,6 +367,7 @@ by case: SB => _; exact.
360367Qed .
361368
362369End esum.
370+ Arguments eq_esum {R T} S f g.
363371
364372Notation "\esum_ ( i 'in ' P ) F" := (esum P (fun i => F)) : ring_scope.
365373
@@ -388,19 +396,9 @@ End esum_realType.
388396Lemma esum1 {R : realFieldType} {I : choiceType} (D : set I) (f : I -> \bar R) :
389397 (forall i, D i -> f i = 0) -> \esum_(i in D) f i = 0.
390398Proof .
391- move=> a0; rewrite ge0_esum; last exact: PosEsum.pos_esum1.
392- by move=> i /a0 ->.
393- Qed .
394-
395- Lemma eq_esum {R : realFieldType} {T : choiceType} (A : set T)
396- (f g : T -> \bar R) : (forall i, A i -> f i = g i) ->
397- \esum_(i in A) f i = \esum_(i in A) g i.
398- Proof .
399- move=> e; congr (_ - _).
400- - by apply: PosEsum.eq_pos_esum => i /set_mem/e abi; rewrite !funeposE abi.
401- - by apply: PosEsum.eq_pos_esum => i /set_mem/e abi; rewrite !funenegE abi.
399+ move=> Df0; rewrite ge0_esum; last exact: PosEsum.pos_esum1.
400+ by move=> i /Df0 ->.
402401Qed .
403- Arguments eq_esum {R T} A f g.
404402
405403Section esum_cond.
406404Context {R : realType} {T : choiceType}.
0 commit comments