Skip to content

Commit b8c8b64

Browse files
committed
Add proof for interchange_psum using esum
1 parent ba95a8f commit b8c8b64

1 file changed

Lines changed: 41 additions & 2 deletions

File tree

experimental_reals/realsum.v

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,11 @@ case=> J ->; exists J.
721721
by under [in RHS]eq_bigr do rewrite normr_id.
722722
Qed.
723723

724+
Lemma esum_psum_abs S :
725+
summable \`| S | ->
726+
(PosSum.psum (fun y => S y))%:E = \esum_(y in [set: T]) `|S y|%:E.
727+
Proof. by move => ?; rewrite -psum_abs -esum_psum. Qed.
728+
724729
Lemma eq_psum_abs S1 S2 : \`|S1| =1 \`|S2| -> PosSum.psum S1 = PosSum.psum S2.
725730
Proof.
726731
by move=> eqS; rewrite -[LHS]psum_abs -[RHS]psum_abs; apply/eq_psum.
@@ -1104,8 +1109,42 @@ Qed.
11041109

11051110
End PSumInterchange.
11061111

1107-
#[deprecated(since="1.17.0", note="use `interchange_psum` instead")]
1108-
Notation __admitted__interchange_psum := interchange_psum (only parsing).
1112+
(* -------------------------------------------------------------------- *)
1113+
Section PSumInterchangeEsum.
1114+
Context {R : realType} {T U : choiceType} (S: T -> U -> R).
1115+
Hypothesis H1 : (forall x, summable (S x)).
1116+
Hypothesis H2 : summable (PosSum.psum \o S).
1117+
1118+
Lemma esum_psum_abs2:
1119+
(PosSum.psum (fun x => PosSum.psum (fun y => S x y)))%:E =
1120+
\esum_(x in [set: T]) \esum_(y in [set: U]) `|S x y|%:E.
1121+
Proof.
1122+
rewrite -esum_psum//; first by move=> x; exact: ge0_psum.
1123+
by apply: eq_esum => x _; rewrite esum_psum_abs // summable_abs.
1124+
Qed.
1125+
1126+
Lemma interchange_psum_alt :
1127+
PosSum.psum (PosSum.psum \o S) =
1128+
PosSum.psum (fun y => PosSum.psum (S ^~ y)).
1129+
Proof.
1130+
apply: EFin_inj; rewrite esum_psum_abs2 exchange_esum.
1131+
+ by move => ? ?; rewrite lee_fin.
1132+
have summable_y y : summable (fun x : T => `|S x y|).
1133+
+ apply: (le_summable (F2 := fun x => PosSum.psum (fun y' => S x y'))) => // x.
1134+
by apply/andP; split; [exact: normr_ge0 | exact: ger1_psum y (H1 x)].
1135+
under eq_esum => y _ do rewrite -esum_psum_abs //.
1136+
rewrite -esum_psum//.
1137+
+ by move=> y; exact: ge0_psum.
1138+
apply /esum_summableP; rewrite /esum.summable.
1139+
apply: (@le_lt_trans _ _ (\esum_(y in [set: U]) (PosSum.psum (fun x => S x y))%:E)).
1140+
+ by apply le_esum=> y _; rewrite /comp/= ger0_norm// ge0_psum.
1141+
under eq_esum => y _ do rewrite esum_psum_abs//.
1142+
rewrite exchange_esum.
1143+
+ by move => ? ?; rewrite lee_fin.
1144+
+ by rewrite -esum_psum_abs2 ltey.
1145+
Qed.
1146+
1147+
End PSumInterchangeEsum.
11091148

11101149
(* -------------------------------------------------------------------- *)
11111150
Section SumTheory.

0 commit comments

Comments
 (0)