Skip to content

Commit 45743de

Browse files
minor additions (#1558)
* minor additions Co-authored-by: Cyril Cohen <[email protected]>
1 parent b7df6a3 commit 45743de

File tree

5 files changed

+44
-7
lines changed

5 files changed

+44
-7
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@
9696
+ `lebesgue_integral_differentiation.v`
9797
+ `lebesgue_integral.v`
9898

99+
- in `sequences.v`:
100+
+ lemmas `nneseriesD1`, `geometric_ge0`
101+
102+
- in `constructive_ereal.v`:
103+
+ lemmas `EFin_fin_numP`, `EFin_bigmax`
104+
99105
### Changed
100106

101107
- file `nsatz_realtype.v` moved from `reals` to `reals-stdlib` package
@@ -158,6 +164,9 @@
158164
- in `real_interval.v`:
159165
+ lemmas `bigcup_itvT`, `itv_bndy_bigcup_BRight`, `itv_bndy_bigcup_BLeft_shift`
160166

167+
- in `sequences.v`:
168+
+ lemma `nneseries_recl` genralized with a filtering predicate `P`
169+
161170
### Deprecated
162171

163172
### Removed

reals/constructive_ereal.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,9 @@ Definition fin_num := [qualify a x : \bar R | (x != -oo) && (x != +oo)].
739739
Fact fin_num_key : pred_key fin_num. Proof. by []. Qed.
740740
(*Canonical fin_num_keyd := KeyedQualifier fin_num_key.*)
741741

742+
Lemma EFin_fin_numP x : reflect (exists r, x = r%:E) (x \in fin_num).
743+
Proof. by case: x => [r'||]//=; constructor; [exists r'| case | case ]. Qed.
744+
742745
Lemma fin_numE x : (x \is a fin_num) = (x != -oo) && (x != +oo).
743746
Proof. by []. Qed.
744747

theories/lebesgue_integral_theory/lebesgue_integral_fubini.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
965965
Variables (m1 : {sfinite_measure set X -> \bar R}).
966966
Variables (m2 : {sfinite_measure set Y -> \bar R}).
967967
Variables (f : X * Y -> \bar R) (f0 : forall xy, 0 <= f xy).
968-
Hypothesis mf : measurable_fun setT f.
968+
Hypothesis mf : measurable_fun [set: X * Y] f.
969969

970970
Lemma sfinite_Fubini :
971971
\int[m1]_x \int[m2]_y f (x, y) = \int[m2]_y \int[m1]_x f (x, y).

theories/measure.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4250,7 +4250,7 @@ Lemma le_outer_measure : {homo mu : A B / A `<=` B >-> A <= B}.
42504250
Proof.
42514251
move=> A B AB; pose B_ k := if k is 0%N then B else set0.
42524252
have -> : mu B = \sum_(n <oo) mu (B_ n).
4253-
rewrite nneseries_recl; last by move=> ?; rewrite outer_measure_ge0.
4253+
rewrite nneseries_recl//; last by move=> *; rewrite outer_measure_ge0.
42544254
rewrite eseries_cond/= eseries0 ?adde0// => -[|]//= k _ _.
42554255
by rewrite outer_measure0.
42564256
apply: subset_outer_measure_sigma_subadditive => //.

theories/sequences.v

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,10 @@ rewrite exprDn (bigD1 (inord 1)) ?inordK// subn1 expr1 bin1 lerDl sumr_ge0//.
964964
by move=> i; rewrite ?(mulrn_wge0, mulr_ge0, exprn_ge0, subr_ge0)// ltW.
965965
Unshelve. all: by end_near. Qed.
966966

967+
Lemma geometric_ge0 (R : numFieldType) (a z : R) n :
968+
0 <= a -> 0 <= z -> geometric a z n >= 0.
969+
Proof. by move=> *; rewrite mulr_ge0// exprn_ge0. Qed.
970+
967971
Lemma geometric_seriesE (R : numFieldType) (a z : R) : z != 1 ->
968972
series (geometric a z) = [sequence a * (1 - z ^+ n) / (1 - z)]_n.
969973
Proof.
@@ -1773,7 +1777,7 @@ rewrite -lim_shift_cst; last by rewrite (@lt_le_trans _ _ 0)// f0// leq_addr.
17731777
Unshelve. all: by end_near. Qed.
17741778

17751779
Lemma nneseries_split_cond (R : realType) (f : nat -> \bar R) N n (P : pred nat) :
1776-
(forall k, P k -> 0 <= f k)%E ->
1780+
(forall k, P k -> 0 <= f k) ->
17771781
\sum_(N <= k <oo | P k) f k =
17781782
\sum_(N <= k < N + n | P k) f k + \sum_(N + n <= k <oo | P k) f k.
17791783
Proof.
@@ -1782,15 +1786,36 @@ rewrite big_mkcond/= (nneseries_split n)// => k Nk.
17821786
by case: ifPn => //; exact: NPf.
17831787
Qed.
17841788

1789+
Lemma nneseriesD1 {R : realType} (f : nat -> \bar R) n (P : pred nat) :
1790+
(forall k, P k -> 0 <= f k) -> P n ->
1791+
\sum_(0 <= k <oo | P k) f k =
1792+
f n + \sum_(0 <= k <oo | P k && (k != n)) f k.
1793+
Proof.
1794+
move=> f0 Pn.
1795+
rewrite (@nneseries_split_cond _ f 0%N n.+1 P)// add0n big_mkcond/=.
1796+
rewrite big_nat_recr//= Pn -big_mkcond/= -addrA addrCA; congr +%E.
1797+
rewrite [RHS]eseries_mkcondr.
1798+
rewrite [in RHS](@nneseries_split_cond _ _ _ n.+1 P)//; last first.
1799+
by move=> k Pk; case: ifPn => // _; exact: f0.
1800+
rewrite add0n [X in _ = X + _]big_mkcond/= big_nat_recr//= Pn eqxx/= adde0.
1801+
rewrite -big_mkcond//=; congr +%E.
1802+
rewrite big_seq_cond [RHS]big_seq_cond; apply: eq_bigr => /= i.
1803+
by rewrite mem_index_iota leq0n/= => /andP[ij Pi]; rewrite lt_eqF.
1804+
rewrite eseries_cond [RHS]eseries_cond; apply: eq_eseriesr => i /andP[Pi ji].
1805+
by rewrite gt_eqF.
1806+
Qed.
1807+
17851808
End nneseries_split.
17861809
Arguments nneseries_split {R f} _ _.
17871810
Arguments nneseries_split_cond {R f} _ _ _.
1811+
Arguments nneseriesD1 {R f} n {P}.
17881812

1789-
Lemma nneseries_recl (R : realType) (f : nat -> \bar R) :
1790-
(forall k, 0 <= f k) -> \sum_(k <oo) f k = f 0%N + \sum_(1 <= k <oo) f k.
1813+
Lemma nneseries_recl {R : realType} (P : pred nat) (f : nat -> \bar R) :
1814+
(forall k, P k -> 0 <= f k) -> P 0%N ->
1815+
\sum_(0 <= k <oo | P k) f k = f 0%N + \sum_(1 <= k <oo | P k) f k.
17911816
Proof.
1792-
move=> f0; rewrite [LHS](nneseries_split _ 1)// add0n.
1793-
by rewrite /index_iota subn0/= big_cons big_nil addr0.
1817+
move=> F0 P0; rewrite (nneseriesD1 0%N)//; congr +%E.
1818+
by rewrite [RHS]eseries_cond; apply: eq_eseriesl => n; rewrite lt0n.
17941819
Qed.
17951820

17961821
Lemma nneseries_tail_cvg (R : realType) (f : (\bar R)^nat) P :

0 commit comments

Comments
 (0)