Skip to content

Commit ae2b17b

Browse files
committed
fix
1 parent c3c2bb7 commit ae2b17b

2 files changed

Lines changed: 26 additions & 29 deletions

File tree

experimental_reals/realsum.v

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -267,21 +267,21 @@ Lemma esum_psum {R : realType} {T : choiceType} (f : T -> R) :
267267
(forall i, 0 <= f i) -> summable f ->
268268
\esum_(x in [set: T]) (f x)%:E = (psum f)%:E.
269269
Proof.
270-
move => f0 h; apply/eqP; rewrite eq_le; apply/andP; split.
270+
move=> f0 sumf; apply/eqP; rewrite eq_le; apply/andP; split.
271271
- rewrite ge0_esum; first by move=> t _; rewrite lee_fin.
272-
rewrite ge_ereal_sup//= => x [X [finX _]].
273-
rewrite fsumEFin // => <-.
272+
rewrite ge_ereal_sup//= => x [A [finA _]].
273+
rewrite fsumEFin// => <-.
274274
rewrite lee_fin fsbig_finite//=.
275-
move/finite_fsetP : finX => [J ->].
276-
rewrite set_fsetK (le_trans _ (gerfin_psum J h))//.
275+
move/finite_fsetP : finA => [J ->].
276+
rewrite set_fsetK (le_trans _ (gerfin_psum J sumf))//.
277277
by rewrite -big_fset_seq//= (le_trans _ (ler_norm_sum _ _ _))// ler_norm.
278278
- rewrite (eq_esum _ _ (fun x => `|f x|%:E)).
279279
by move => t _; rewrite ger0_norm.
280-
have [nonempty hasub] := summable_sup h.
281-
rewrite psum_absE// -ereal_sup_EFin// ge_ereal_sup//= => x [X [Fs ->] <-].
282-
rewrite esum_ge//; exists [set` Fs]%classic => //.
283-
rewrite fsumEFin// lee_fin (big_fset_seq (fun x => `|f x|))//=.
284-
by rewrite -{1}(set_fsetK Fs) -fsbig_finite.
280+
have [nonempty hasub] := summable_sup sumf.
281+
rewrite psum_absE// -ereal_sup_EFin// ge_ereal_sup//= => x [r [J ->] <-].
282+
rewrite esum_ge//; exists [set` J]%classic => //.
283+
rewrite fsumEFin// lee_fin (big_fset_seq (Num.Def.normr \o f))//=.
284+
by rewrite -[in leLHS](set_fsetK J) -fsbig_finite.
285285
Qed.
286286

287287
(* -------------------------------------------------------------------- *)
@@ -636,8 +636,7 @@ End SummableAlg.
636636
Lemma esumEsum {T : choiceType} {R : realType} (f : T -> R) : summable f ->
637637
\esum_(x in [set: T]) (f x)%:E = (sum f)%:E.
638638
Proof.
639-
move=> hs; rewrite /esum.
640-
rewrite EFinB; congr (_ - _)%E.
639+
move=> hs; rewrite /esum; rewrite EFinB; congr (_ - _)%E.
641640
- rewrite -esum_psum//; first exact: summable_funrpos.
642641
rewrite ge0_esum/=; first by move=> x _; rewrite lee_fin.
643642
by apply: PosEsum.eq_pos_esum => x _; rewrite funerpos.

theories/esum.v

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -332,20 +332,27 @@ Section esum.
332332
Variables (R : realFieldType) (T : choiceType).
333333
Implicit 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

339337
Local 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+
341346
Lemma 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].
343348
Proof.
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.
345352
Qed.
346353

347354
Lemma 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

350357
Lemma 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.
360367
Qed.
361368

362369
End esum.
370+
Arguments eq_esum {R T} S f g.
363371

364372
Notation "\esum_ ( i 'in' P ) F" := (esum P (fun i => F)) : ring_scope.
365373

@@ -388,19 +396,9 @@ End esum_realType.
388396
Lemma 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.
390398
Proof.
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 ->.
402401
Qed.
403-
Arguments eq_esum {R T} A f g.
404402

405403
Section esum_cond.
406404
Context {R : realType} {T : choiceType}.

0 commit comments

Comments
 (0)