Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG_UNRELEASED.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,25 @@

### Generalized

- in `sequences.v`,
+ generalized indexing from zero-based ones (`0 <= k < n` and `k <oo`)
to `m <= k < n` and `m <= k <oo`
* lemmas `nondecreasing_series`, `ereal_nondecreasing_series`,
`eseries_mkcondl`, `eseries_mkcondr`, `eq_eseriesl`,
`nneseries_lim_ge`, `adde_def_nneseries`,
`nneseriesD`, `nneseries_sum_nat`, `nneseries_sum`,
+ lemmas `nneseries_ge0`, `is_cvg_nneseries_cond`, `is_cvg_npeseries_cond`,
`is_cvg_nneseries`, `is_cvg_npeseries`, `nneseries_ge0`, `npeseries_le0`,
`lee_nneseries`

### Deprecated

### Removed

- in `sequences.v`:
+ notations `nneseries_pred0`, `eq_nneseries`, `nneseries0`,
`ereal_cvgPpinfty`, `ereal_cvgPninfty` (were deprecated since 0.6.0)

### Infrastructure

### Misc
4 changes: 2 additions & 2 deletions theories/charge.v
Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,7 @@ exists (D `\` Aoo).
have cvg_nuA : (\sum_(0 <= i < n) nu (A_ (v i))) @[n --> \oo]--> nu Aoo.
exact: charge_semi_sigma_additive.
have nuAoo : 0 <= nu Aoo.
move/cvg_lim : cvg_nuA => <-//=; apply: nneseries_ge0 => n _.
move/cvg_lim : cvg_nuA => <-//=; apply: nneseries_ge0 => n _ _.
exact: nuA_ge0.
have A_cvg_0 : nu (A_ (v n)) @[n --> \oo] --> 0.
rewrite [X in X @ _ --> _](_ : _ = (fun n => (fine (nu (A_ (v n))))%:E)); last first.
Expand Down Expand Up @@ -853,7 +853,7 @@ move=> /cvg_ex[[l| |]]; first last.
by rewrite leNgt => /negP; apply; rewrite ltNye_eq fin_num_measure.
- move/cvg_lim => limoo.
have := @npeseries_le0 _ (fun n => maxe (z_ (v n) * 2^-1%:E) (- 1%E)) xpredT 0.
by rewrite limoo// leNgt => /(_ (fun n _ => max_le0 n))/negP; apply.
by rewrite limoo// leNgt => /(_ (fun n _ _ => max_le0 n))/negP; exact.
move/fine_cvgP => [Hfin cvgl].
have : cvg (series (fun n => fine (maxe (z_ (v n) * 2^-1%:E) (- 1%E))) n @[n --> \oo]).
apply/cvg_ex; exists l; move: cvgl.
Expand Down
13 changes: 8 additions & 5 deletions theories/esum.v
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ Lemma lee_sum_fset_lim (R : realType) (f : (\bar R)^nat) (F : {fset nat})
\sum_(i <- F | P i) f i <= \sum_(i <oo | P i) f i.
Proof.
move=> f0; pose n := (\max_(k <- F) k).+1.
rewrite (le_trans (lee_sum_fset_nat F n _ _ _))//; last exact: nneseries_lim_ge.
rewrite (le_trans (lee_sum_fset_nat F n _ _ _))//; last first.
by apply: nneseries_lim_ge => i _; exact: f0.
move=> k /= kF; rewrite /n big_seq_fsetE/=.
by rewrite -[k]/(val [`kF]%fset) ltnS leq_bigmax.
Qed.
Expand All @@ -311,7 +312,7 @@ Lemma nneseries_esum (R : realType) (a : nat -> \bar R) (P : pred nat) :
\sum_(i <oo | P i) a i = \esum_(i in [set x | P x]) a i.
Proof.
move=> a0; apply/eqP; rewrite eq_le; apply/andP; split.
apply: (lime_le (is_cvg_nneseries_cond a0)); apply: nearW => n.
apply: (lime_le (is_cvg_nneseries_cond (fun n _ => a0 n))); apply: nearW => n.
apply: ereal_sup_ubound; exists [set` [fset val i | i in 'I_n & P i]%fset].
split; first exact: finite_fset.
by move=> /= k /imfsetP[/= i]; rewrite inE => + ->.
Expand Down Expand Up @@ -536,7 +537,7 @@ Lemma summable_cvg (P : pred nat) (f : (\bar R)^nat) :
cvg ((fun n => \sum_(0 <= k < n | P k) fine (f k))%R @ \oo).
Proof.
move=> f0 Pf; apply: nondecreasing_is_cvgn.
by apply: nondecreasing_series => n Pn; exact/fine_ge0/f0.
by apply: nondecreasing_series => n _ Pn; exact/fine_ge0/f0.
exists (fine (\sum_(i <oo | P i) `|f i|)) => x /= [n _ <-].
rewrite summable_fine_sum// -lee_fin fineK//; last first.
by apply/sum_fin_numP => i ni Pi; rewrite fin_num_abs (summable_pinfty Pf).
Expand Down Expand Up @@ -627,7 +628,8 @@ Lemma esumB D f g : summable D f -> summable D g ->
\esum_(i in D) f i - \esum_(i in D) g i.
Proof.
move=> Df Dg f0 g0.
have /eqP : esum D (f \- g)^\+ + esum_posneg D g = esum D (f \- g)^\- + esum_posneg D f.
have /eqP : esum D (f \- g)^\+ + esum_posneg D g =
esum D (f \- g)^\- + esum_posneg D f.
rewrite !ge0_esum_posneg// -!esumD//.
apply eq_esum => i Di; rewrite funeposE funenegE.
have [fg|fg] := leP 0 (f i - g i).
Expand All @@ -648,7 +650,8 @@ rewrite [X in _ == X -> _]addeC -sube_eq; last 2 first.
rewrite (@eq_esum _ _ _ _ (abse \o f))// -?summableE// => i Di.
by rewrite /= gee0_abs// f0.
rewrite -addeA addeCA eq_sym [X in _ == X -> _]addeC -sube_eq; last 2 first.
- rewrite ge0_esum_posneg// (@eq_esum _ _ _ _ (abse \o f))// -?summableE// => i Di.
- rewrite ge0_esum_posneg//.
rewrite (@eq_esum _ _ _ _ (abse \o f))// -?summableE// => i Di.
by rewrite /= gee0_abs// f0.
- rewrite fin_num_adde_defl// ge0_esum_posneg//.
rewrite (@eq_esum _ _ _ _ (abse \o g))// -?summableE// => i Di.
Expand Down
2 changes: 1 addition & 1 deletion theories/kernel.v
Original file line number Diff line number Diff line change
Expand Up @@ -823,7 +823,7 @@ move=> U mU tU mUU; rewrite [X in _ --> X](_ : _ =
apply: eq_integral => V _.
by apply/esym/cvg_lim => //; exact/measure_semi_sigma_additive.
apply/cvg_closeP; split.
by apply: is_cvg_nneseries => n _; exact: integral_ge0.
by apply: is_cvg_nneseries => n _ _; exact: integral_ge0.
rewrite closeE// integral_nneseries// => n.
exact: measurableT_comp (measurable_kernel k _ (mU n)) _.
Qed.
Expand Down
4 changes: 2 additions & 2 deletions theories/lebesgue_integral.v
Original file line number Diff line number Diff line change
Expand Up @@ -1966,7 +1966,7 @@ rewrite [X in measurable_fun _ X](_ : _ =
rewrite [X in measurable_fun _ X](_ : _ =
(fun x => limn_esup (fun n => \sum_(0 <= i < n | P i) (h i) \_ D x))); last first.
apply/funext=> x; rewrite is_cvg_limn_esupE//.
apply: is_cvg_nneseries_cond => n Pn; rewrite patchE.
apply: is_cvg_nneseries_cond => n _ Pn; rewrite patchE.
by case: ifPn => // xD; rewrite h0//; exact/set_mem.
apply: measurable_fun_limn_esup => k.
under eq_fun do rewrite big_mkcond.
Expand Down Expand Up @@ -2926,7 +2926,7 @@ apply/eqP; rewrite eq_le; apply/andP; split; last first.
by apply: leeDl; exact: integral_ge0.
rewrite ge0_integralE//=; apply: ub_ereal_sup => /= _ [g /= gf] <-.
rewrite -integralT_nnsfun (integral_measure_series_nnsfun _ mD).
apply: lee_nneseries => n _.
apply: lee_nneseries => [n _ _|n _].
by apply: integral_ge0 => // x _; rewrite lee_fin.
rewrite [leRHS]integral_mkcond; apply: ge0_le_integral => //.
- by move=> x _; rewrite lee_fin.
Expand Down
2 changes: 1 addition & 1 deletion theories/lebesgue_measure.v
Original file line number Diff line number Diff line change
Expand Up @@ -2920,7 +2920,7 @@ have [N F5e] : exists N, \sum_(N <= n <oo) \esum_(i in F n) mu (closure (B i)) <
apply: le_lt_trans foo.
by rewrite (nneseries_split _ N)// leeDr//; exact: sume_ge0.
rewrite fineK ?ge0_fin_numE//; last exact: nneseries_ge0.
apply: lee_nneseries => //; first by move=> i _; exact: esum_ge0.
apply: lee_nneseries => //; first by move=> i *; exact: esum_ge0.
move=> n Nn; rewrite measure_bigcup//=.
- by rewrite nneseries_esum// set_mem_set.
- by move=> i _; exact: measurable_closure.
Expand Down
15 changes: 8 additions & 7 deletions theories/measure.v
Original file line number Diff line number Diff line change
Expand Up @@ -3021,7 +3021,7 @@ apply: (@le_trans _ _
move=> XD; have Xm := decomp_measurable Dm XD.
by apply: muS => // [i|]; [exact: mfD|exact: DXsub].
apply: lee_lim => /=; do ?apply: is_cvg_nneseries=> //.
by move=> n _; exact: sume_ge0.
by move=> n _ _; exact: sume_ge0.
near=> n; rewrite [n in _ <= n]big_mkcond; apply: lee_sum => i _.
rewrite ifT ?inE//.
under eq_big_seq.
Expand Down Expand Up @@ -4230,7 +4230,7 @@ have := outer_measure_sigma_subadditive mu
(fun n => if n \in ~` `I_N then F n else set0).
move/le_trans; apply.
rewrite [in leRHS]eseries_cond [in leRHS]eseries_mkcondr; apply: lee_nneseries.
- by move=> k _; exact: outer_measure_ge0.
- by move=> k _ _; exact: outer_measure_ge0.
- move=> k _; rewrite fun_if; case: ifPn => Nk; first by rewrite mem_not_I Nk.
by rewrite mem_not_I (negbTE Nk) outer_measure0.
Qed.
Expand Down Expand Up @@ -4510,7 +4510,8 @@ suff : forall X, mu X = \sum_(k <oo) mu (X `&` A k) + mu (X `&` ~` B).
rewrite (_ : (fun n => _) = fun n => \sum_(k < n) mu (A k)); last first.
rewrite funeqE => n; rewrite big_mkord; apply: eq_bigr => i _; congr (mu _).
by rewrite setIC; apply/setIidPl; exact: bigcup_sup.
move=> ->; have := fun n (_ : xpredT n) => outer_measure_ge0 mu (A n).
move=> ->.
have := fun n (_ : xpredT n) (_ : xpredT n) => outer_measure_ge0 mu (A n).
move/(@is_cvg_nneseries _ _ _ 0) => /cvg_ex[l] hl.
under [in X in _ --> X]eq_fun do rewrite -(big_mkord xpredT (mu \o A)).
by move/cvg_lim : (hl) => ->.
Expand Down Expand Up @@ -4687,9 +4688,9 @@ rewrite (_ : esum _ _ = \sum_(i <oo) \sum_(j <oo ) mu (G i j)); last first.
by move=> ? ? _ _; exact: (@can_inj _ _ _ snd).
by congr esum; rewrite predeqE => -[a b]; split; move=> [i _ <-]; exists i.
apply: lee_lim.
- apply: is_cvg_nneseries => n _.
by apply: nneseries_ge0 => m _; exact: (muG_ge0 (n, m)).
- by apply: is_cvg_nneseries => n _; apply: adde_ge0 => //; exact: mu_ext_ge0.
- apply: is_cvg_nneseries => n *.
by apply: nneseries_ge0 => m *; exact: (muG_ge0 (n, m)).
- by apply: is_cvg_nneseries => n *; apply: adde_ge0 => //; exact: mu_ext_ge0.
- by near=> n; apply: lee_sum => i _; exact: (PG i).2.
Unshelve. all: by end_near. Qed.

Expand Down Expand Up @@ -4923,7 +4924,7 @@ rewrite -(limeD cBA cBNA) // (_ : (fun _ => _) =
eseries (fun k => Rmu (B k `&` A) + Rmu (B k `&` ~` A))); last first.
by rewrite funeqE => n; rewrite -big_split /=; exact: eq_bigr.
apply/lee_lim => //.
by apply/is_cvg_nneseries => // n _; exact: adde_ge0.
by apply/is_cvg_nneseries => // n *; exact: adde_ge0.
near=> n; apply: lee_sum => i _; rewrite -measure_semi_additive2.
- apply: le_measure; rewrite /mkset ?inE//; [|by rewrite -setIUr setUCr setIT].
by apply: measurableU; [exact:measurableI|rewrite -setDE; exact:measurableD].
Expand Down
Loading
Loading