Skip to content

Commit e3d4701

Browse files
authored
generalize setUitv1, setU1itv, setDitv1{l,r}, and add similar lemmas (#1864)
* generalize setUitv1, setU1itv, setDitv1{l|r}; add similar lemmas * add lteifS to mathcomp_extra and use it instead of ltrW_lteif
1 parent 7c8cd3f commit e3d4701

12 files changed

Lines changed: 164 additions & 110 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
## [Unreleased]
44

55
### Added
6+
- in set_interval.v
7+
+ lemmas `setUitv_set2`, `setDitv_set2`, `setDitvoo`, `setDitvoy`, `setDitvNyo`,
8+
`setDccitv`, `setD_cbnd_bndy`, `setD_bndc_Nybnd`
9+
610
- in `topology_structure.v`
711
+ lemma `interiorS`
812

@@ -67,6 +71,9 @@
6771
+ lemmas `compact_EVT_max`, `compact_EVT_min`, `EVT_max_rV`, `EVT_min_rV`
6872

6973
### Changed
74+
- in set_interval.v
75+
+ `setUitv1`, `setU1itv`, `setDitv1l`, `setDitv1r` (generalized)
76+
7077
- in `set_interval.v`
7178
+ `itv_is_closed_unbounded` (fix the definition)
7279

classical/mathcomp_extra.v

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ Lemma card_fset_sum1 (T : choiceType) (A : {fset T}) :
8484
#|` A| = (\sum_(i <- A) 1)%N.
8585
Proof. by rewrite big_seq_fsetE/= sum1_card cardfE. Qed.
8686

87+
Lemma lteifS {disp : Order.disp_t} {T : porderType disp}
88+
[x y : T] (C : bool) : (x < y)%O -> (x < y ?<= if C)%O.
89+
Proof. by case: C => //= /ltW. Qed.
90+
8791
(**************************)
8892
(* MathComp 2.6 additions *)
8993
(**************************)

classical/set_interval.v

Lines changed: 110 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,38 +182,58 @@ Definition set_itvE := (set_itv1, set_itvoo0, set_itvoc0, set_itvco0, set_itvoo,
182182
Lemma set_itvxx a : [set` Interval a a] = set0.
183183
Proof. by move: a => [[|] a |[|]]; rewrite !set_itvE. Qed.
184184

185-
Lemma setUitv1 a x : (a <= BLeft x)%O ->
186-
[set` Interval a (BLeft x)] `|` [set x] = [set` Interval a (BRight x)].
185+
Lemma setUitv1 a x b : (a <= BLeft x)%O ->
186+
[set` Interval a (BSide b x)] `|` [set x] = [set` Interval a (BRight x)].
187187
Proof.
188-
move=> ax; apply/predeqP => z /=; rewrite itv_splitU1// [in X in _ <-> X]inE.
188+
move=> ax; case: b; last first.
189+
by apply: setUidl => ? /= ->; rewrite itv_boundlr ax lexx.
190+
apply/predeqP => z /=; rewrite itv_splitU1// [in X in _ <-> X]inE.
189191
by rewrite (rwP eqP) (rwP orP) orbC.
190192
Qed.
191193

192-
Lemma setU1itv a x : (BRight x <= a)%O ->
193-
x |` [set` Interval (BRight x) a] = [set` Interval (BLeft x) a].
194+
Lemma setU1itv a x b : (BRight x <= a)%O ->
195+
x |` [set` Interval (BSide b x) a] = [set` Interval (BLeft x) a].
194196
Proof.
195-
move=> ax; apply/predeqP => z /=; rewrite itv_split1U// [in X in _ <-> X]inE.
197+
move=> ax; case: b.
198+
by apply: setUidr => ? /= ->; rewrite itv_boundlr ax lexx.
199+
apply/predeqP => z /=; rewrite itv_split1U// [in X in _ <-> X]inE.
196200
by rewrite (rwP eqP) (rwP orP) orbC.
197201
Qed.
198202

199-
Lemma setDitv1r a x :
200-
[set` Interval a (BRight x)] `\ x = [set` Interval a (BLeft x)].
203+
Lemma setUitv_set2 x y b1 b2 :
204+
(x <= y)%O ->
205+
[set` Interval (BSide b1 x) (BSide b2 y)] `|` [set x; y] = `[x, y]%classic.
201206
Proof.
207+
rewrite le_eqVlt => /orP [/eqP->|xy].
208+
by case: b1; case: b2; rewrite !set_itvE !setUid // set0U.
209+
rewrite setUCA setUitv1; last by case: b1; rewrite bnd_simp// ltW.
210+
by rewrite setU1itv// bnd_simp ltW.
211+
Qed.
212+
213+
Lemma setDitv1r a x b :
214+
[set` Interval a (BSide b x)] `\ x = [set` Interval a (BLeft x)].
215+
Proof.
216+
case: b; first by apply: not_setD1; rewrite /= in_itv/= ltxx andbF.
202217
apply/seteqP; split => [z|z] /=; rewrite !in_itv/=.
203218
by move=> [/andP[-> /= zx] /eqP xz]; rewrite lt_neqAle xz.
204219
by rewrite lt_neqAle => /andP[-> /andP[/eqP ? ->]].
205220
Qed.
206221

207-
Lemma setDitv1l a x :
208-
[set` Interval (BLeft x) a] `\ x = [set` Interval (BRight x) a].
222+
Lemma setDitv1l a x b :
223+
[set` Interval (BSide b x) a] `\ x = [set` Interval (BRight x) a].
209224
Proof.
225+
case: b; last by apply: not_setD1; rewrite /= in_itv/= ltxx.
210226
apply/seteqP; split => [z|z] /=; rewrite !in_itv/=.
211227
move=> [/andP[xz ->]]; rewrite andbT => /eqP.
212228
by rewrite lt_neqAle eq_sym => ->.
213229
move=> /andP[]; rewrite lt_neqAle => /andP[xz zx ->].
214230
by rewrite andbT; split => //; exact/nesym/eqP.
215231
Qed.
216232

233+
Lemma setDitv_set2 x y b1 b2 :
234+
[set` Interval (BSide b1 x) (BSide b2 y)] `\` [set x; y] = `]x, y[%classic.
235+
Proof. by rewrite -setDDl setDitv1l setDitv1r. Qed.
236+
217237
End set_itv_porderType.
218238
Arguments neitv {disp T} _.
219239
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvNyy`")]
@@ -314,6 +334,86 @@ move=> cab; apply/seteqP; split => [x /= [xab /eqP]|x[|]]/=.
314334
by apply/eqP; rewrite gt_eqF.
315335
Qed.
316336

337+
Lemma setDitvoo (x y : T) (b1 b2 : bool) :
338+
neitv (Interval (BSide b1 x) (BSide b2 y)) ->
339+
[set` Interval (BSide b1 x) (BSide b2 y)] `\` `]x, y[ =
340+
(if b1 then [set x] else set0) `|` (if b2 then set0 else [set y]).
341+
Proof.
342+
move=> /neitv_lt_bnd/= xy.
343+
apply/seteqP; split => z/=; rewrite !in_itv/=; last first.
344+
move: b1 b2 xy.
345+
by move=> [] [] /[!bnd_simp]/= + []// -> => ->; rewrite ?(lexx,ltxx,andbF).
346+
case=> /[swap] /negP; rewrite negb_and.
347+
move: b1 b2 {xy} => [] [] /= + /andP[]; rewrite ?ltNge !negbK.
348+
- by move=> /orP[*|->//]; left; exact/le_anti/andP.
349+
- by case/orP => *; [left|right]; exact/le_anti/andP.
350+
- by case/orP => ->.
351+
- by move=> /orP[->//|*]; right; exact/le_anti/andP.
352+
Qed.
353+
354+
Lemma setDccitv (x y : T) (b1 b2 : bool) :
355+
neitv `[x, y] ->
356+
`[x, y] `\` [set` Interval (BSide b1 x) (BSide b2 y)] =
357+
(if b1 then set0 else [set x]) `|` (if b2 then [set y] else set0).
358+
Proof.
359+
move=> /neitv_lt_bnd/= xy.
360+
apply/seteqP; split => z/=; rewrite !in_itv/=; last first.
361+
move: b1 b2 xy.
362+
by move=> [] [] /[!bnd_simp]/= + []// -> => ->; rewrite ?(lexx,ltxx,andbF).
363+
case=> /[swap] /negP; rewrite negb_and.
364+
move: b1 b2 {xy} => [] [] /= + /andP[]; rewrite -?leNgt.
365+
- by move=> /orP[/negPf ->//|*]; right; exact/le_anti/andP.
366+
- by case/orP => /negPf ->.
367+
- by case/orP => *; [left|right]; exact/le_anti/andP.
368+
- by move=> /orP[*|/negPf ->//]; left; exact/le_anti/andP.
369+
Qed.
370+
371+
Lemma setDitvoy a (x : T) (b : bool) :
372+
neitv (Interval (BSide b x) a) ->
373+
[set` Interval (BSide b x) a] `\` `]x, +oo[ = if b then [set x] else set0.
374+
Proof.
375+
move/neitv_lt_bnd => /= bxa; apply/seteqP; split => z/=; rewrite !in_itv/=.
376+
- case: b {bxa}; rewrite /= andbT; last by case=> /andP[->].
377+
by case=> /andP[? _] /negP; rewrite -leNgt => ?; exact/le_anti/andP.
378+
- case: b bxa => //= /[swap] <-.
379+
by move: a => [[] ?|[]]; rewrite !bnd_simp.
380+
Qed.
381+
382+
Lemma setDitvNyo a (x : T) (b : bool) :
383+
neitv (Interval a (BSide b x)) ->
384+
[set` Interval a (BSide b x)] `\` `]-oo, x[ = if b then set0 else [set x].
385+
Proof.
386+
move/neitv_lt_bnd => /= abx; apply/seteqP; split => z/=; rewrite !in_itv/=.
387+
- case: b {abx} => /=; first by case=> /andP[_ ->].
388+
by case=> /andP[_ ?] /negP; rewrite -leNgt => ?; exact/le_anti/andP.
389+
- case: b abx => //= /[swap] <-.
390+
by move: a => [[] ?|[]]; rewrite !bnd_simp// andbT.
391+
Qed.
392+
393+
Lemma setD_cbnd_bndy a (x : T) (b : bool) :
394+
neitv (Interval (BLeft x) a) ->
395+
[set` Interval (BLeft x) a] `\` [set` Interval (BSide b x) +oo%O] =
396+
(if b then set0 else [set x]).
397+
Proof.
398+
move/neitv_lt_bnd => /= xa; apply/seteqP; split => z/=; rewrite !in_itv/=.
399+
- case: b {xa}; rewrite /= andbT; first by case=> /andP[->].
400+
by case=> /andP[? _] /negP; rewrite -leNgt => ?; exact/le_anti/andP.
401+
- case: b xa => //= /[swap] <-.
402+
by move: a => [[] ?|[]]; rewrite /= !bnd_simp.
403+
Qed.
404+
405+
Lemma setD_bndc_Nybnd a (x : T) (b : bool) :
406+
neitv (Interval a (BRight x)) ->
407+
[set` Interval a (BRight x)] `\` [set` Interval -oo%O (BSide b x)] =
408+
(if b then [set x] else set0).
409+
Proof.
410+
move/neitv_lt_bnd => /= ax; apply/seteqP; split => z/=; rewrite !in_itv/=.
411+
- case: b {ax} => /=; last by case=> /andP[_ ->].
412+
by case=> /andP[_ ?] /negP; rewrite -leNgt => ?; exact/le_anti/andP.
413+
- case: b ax => //= /[swap] <-.
414+
by move: a => [[] ?|[]]; rewrite /= !bnd_simp// andbT.
415+
Qed.
416+
317417
End set_itv_orderType.
318418

319419
Lemma set_itv_ge disp [T : porderType disp] [b1 b2 : itv_bound T] :

reals/real_interval.v

Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -56,70 +56,32 @@ Implicit Types x y : R.
5656

5757
Let sup_itv_infty_bnd x b : sup [set` Interval -oo%O (BSide b x)] = x.
5858
Proof.
59-
case: b; last first.
60-
by rewrite -setUitv1// sup_setU ?sup1// => ? ? ? ->; exact/ltW.
6159
set s := sup _; apply/eqP; rewrite eq_le; apply/andP; split.
62-
- apply: ge_sup; last by move=> ? /ltW.
63-
by exists (x - 1); rewrite !set_itvE/= ltrBlDr ltrDl.
60+
- apply: ge_sup; last by move=> ? /lteifW.
61+
by exists (x - 1); apply: lteifS; rewrite ltrBlDr ltrDl.
6462
- rewrite leNgt; apply/negP => sx; pose p := (s + x) / 2.
65-
suff /andP[?]: (p < x) && (s < p) by apply/negP; rewrite -leNgt ub_le_sup.
63+
suff /andP[?]: (p < x) && (s < p)
64+
by apply/negP; rewrite -leNgt ub_le_sup//= in_itv lteifS.
6665
by rewrite !midf_lt.
6766
Qed.
6867

69-
Let inf_itv_bnd_infty x b : inf [set` Interval (BSide b x) +oo%O] = x.
70-
Proof.
71-
case: b; last by rewrite /inf opp_itv_bndy sup_itv_infty_bnd opprK.
72-
rewrite -setU1itv// inf_setU ?inf1// => _ b ->.
73-
by rewrite !set_itvE => /ltW.
74-
Qed.
75-
76-
Let sup_itv_o_bnd x y b : x < y ->
77-
sup [set` Interval (BRight x) (BSide b y)] = y.
78-
Proof.
79-
case: b => xy; last first.
80-
by rewrite -setUitv1// sup_setU ?sup1// => ? ? /andP[? /ltW ?] ->.
81-
set B := [set` _]; set A := `]-oo, x]%classic.
82-
rewrite -(@sup_setU _ A B) //.
83-
- rewrite -(sup_itv_infty_bnd y true); congr sup.
84-
rewrite predeqE => u; split=> [[|/andP[]//]|yu].
85-
by rewrite /A !set_itvE => /le_lt_trans; apply.
86-
by have [xu|ux] := ltP x u; [right; rewrite /B !set_itvE/= xu| left].
87-
- by move=> u v; rewrite /A /B => ? /andP[xv _]; rewrite (le_trans _ (ltW xv)).
88-
Qed.
89-
90-
Let sup_itv_bounded x y a b : (BSide a x < BSide b y)%O ->
91-
sup [set` Interval (BSide a x) (BSide b y)] = y.
92-
Proof.
93-
case: a => xy; last exact: sup_itv_o_bnd.
94-
case: b in xy *.
95-
by rewrite -setU1itv// sup_setU ?sup_itv_o_bnd// => ? ? -> /andP[/ltW].
96-
by rewrite -setUitv1// sup_setU ?sup1// => ? ? /andP[_ /ltW ? ->].
97-
Qed.
98-
99-
Let inf_itv_bnd_o x y b : (BSide b x < BLeft y)%O ->
100-
inf [set` Interval (BSide b x) (BLeft y)] = x.
101-
Proof.
102-
case: b => xy.
103-
by rewrite -setU1itv// inf_setU ?inf1// => _ ? -> /andP[/ltW].
104-
by rewrite /inf opp_itv_bnd_bnd sup_itv_o_bnd ?opprK // ltrNl opprK.
105-
Qed.
106-
107-
Let inf_itv_bounded x y a b : (BSide a x < BSide b y)%O ->
108-
inf [set` Interval (BSide a x) (BSide b y)] = x.
109-
Proof.
110-
case: b => xy; first exact: inf_itv_bnd_o.
111-
case: a in xy *.
112-
by rewrite -setU1itv// inf_setU ?inf1// => ? ? -> /andP[/ltW].
113-
by rewrite -setUitv1// inf_setU ?inf_itv_bnd_o// => ? ? /andP[? /ltW ?] ->.
114-
Qed.
115-
11668
Lemma sup_itv a b x : (a < BSide b x)%O ->
11769
sup [set` Interval a (BSide b x)] = x.
118-
Proof. by case: a => [b' y|[]]; rewrite ?bnd_simp//= => /sup_itv_bounded->. Qed.
70+
Proof.
71+
move=> xy; have /itv_bndbnd_setU : (-oo <= a)%O by rewrite bnd_simp.
72+
have /[swap]-> := sup_itv_infty_bnd x b; last exact/ltW.
73+
rewrite sup_setU// => ? ? /= /[!itv_boundlr]/= +/andP[] => /le_trans/[apply].
74+
by rewrite !bnd_simp => /ltW.
75+
Qed.
11976

12077
Lemma inf_itv a b x : (BSide b x < a)%O ->
12178
inf [set` Interval (BSide b x) a] = x.
122-
Proof. by case: a => [b' y|[]]; rewrite ?bnd_simp//= => /inf_itv_bounded->. Qed.
79+
Proof.
80+
case: a => [b' ?|[]]//; rewrite /inf => xa.
81+
rewrite opp_itv_bnd_bnd sup_itv// ?opprK//.
82+
by move: xa; case: b; case: b'; rewrite !bnd_simp ?lerN2 ?ltrN2.
83+
by rewrite ?opp_itv_bndy sup_itv// opprK.
84+
Qed.
12385

12486
Lemma sup_itvcc x y : x <= y -> sup `[x, y] = y.
12587
Proof. by move=> *; rewrite sup_itv. Qed.

theories/ftc.v

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,10 +1400,7 @@ rewrite integration_by_substitution_decreasing.
14001400
apply/measurable_EFinP.
14011401
by apply: measurable_funS (mGFNF' n) => //; exact: subset_itv_oo_co.
14021402
rewrite integral_itv_obnd_cbnd//.
1403-
apply/measurable_EFinP.
1404-
rewrite -setUitv1; last by rewrite bnd_simp ltrDl.
1405-
rewrite measurable_funU//; split; last exact: measurable_fun_set1.
1406-
by apply: measurable_funS (mGFNF' n) => //; exact: subset_itv_oo_co.
1403+
by apply/measurable_EFinP; have /measurable_fun_itv_oc := mGFNF' n.
14071404
- by rewrite lerDl.
14081405
- move=> x y /= xaa yaa yx.
14091406
by apply: decrF; rewrite ?in_itv ?andbT/= ?(itvP xaa) ?(itvP yaa).

theories/lebesgue_integral_theory/lebesgue_integral_differentiation.v

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,7 @@ Lemma lebesgue_differentiation_continuous (f : R -> rT^o) (A : set R) (x : R) :
194194
Proof.
195195
have ball_itvr r : 0 < r -> `[x - r, x + r] `\` ball x r = [set x + r; x - r].
196196
move: r => _/posnumP[r].
197-
rewrite -setU1itv ?bnd_simp ?lerBlDr -?addrA ?ler_wpDr//.
198-
rewrite -setUitv1 ?bnd_simp ?ltrBlDr -?addrA ?ltr_pwDr//.
199-
rewrite setUA setUC setUA setDUl !ballE setDv setU0 setDidl// -subset0.
200-
by move=> z /= [[]] ->; rewrite in_itv/= ltxx// andbF.
197+
by rewrite ballE setDitvoo 1?setUC// neitvE bnd_simp lerD2l// ge0_cp.
201198
have ball_itv2 r : 0 < r -> ball x r = `[x - r, x + r] `\` [set x + r; x - r].
202199
move: r => _/posnumP[r].
203200
rewrite -ball_itvr // setDD setIC; apply/esym/setIidPl.

theories/lebesgue_measure.v

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -657,9 +657,8 @@ suff : (lebesgue_measure (`]a - 1, a]%classic%R : set R) =
657657
rewrite wlength_itv lte_fin ltrBlDr ltrDl ltr01.
658658
rewrite [in X in X == _]/= EFinN EFinB fin_num_oppeB// addeA subee// add0e.
659659
by rewrite addeC -sube_eq ?fin_num_adde_defl// subee// => /eqP.
660-
rewrite -setUitv1// ?bnd_simp; last by rewrite ltrBlDr ltrDl.
661-
rewrite measureU //; apply/seteqP; split => // x []/=.
662-
by rewrite in_itv/= => + xa; rewrite xa ltxx andbF.
660+
rewrite -(setUitv1 true) ?bnd_simp; last by rewrite ltrBlDr ltrDl.
661+
by rewrite measureU// -(setDitv1r _ a true) setDKI.
663662
Qed.
664663

665664
Lemma countable_lebesgue_measure0 (A : set R) :
@@ -687,7 +686,7 @@ Let lebesgue_measure_itvoo (a b : R) :
687686
Proof.
688687
have [ab|ba] := ltP a b; last by rewrite set_itv_ge ?measure0// -leNgt.
689688
have := lebesgue_measure_itvoc a b.
690-
rewrite 2!wlength_itv => <-; rewrite -setUitv1// measureU//.
689+
rewrite 2!wlength_itv => <-; rewrite -(setUitv1 true)// measureU//.
691690
- by have /= -> := lebesgue_measure_set1 b; rewrite adde0.
692691
- by apply/seteqP; split => // x [/= + xb]; rewrite in_itv/= xb ltxx andbF.
693692
Qed.
@@ -697,7 +696,7 @@ Let lebesgue_measure_itvcc (a b : R) :
697696
Proof.
698697
have [ab|ba] := leP a b; last by rewrite set_itv_ge ?measure0// -leNgt.
699698
have := lebesgue_measure_itvoc a b.
700-
rewrite 2!wlength_itv => <-; rewrite -setU1itv// measureU//.
699+
rewrite 2!wlength_itv => <-; rewrite -(setU1itv false)// measureU//.
701700
- by have /= -> := lebesgue_measure_set1 a; rewrite add0e.
702701
- by apply/seteqP; split => // x [/= ->]; rewrite in_itv/= ltxx.
703702
Qed.
@@ -707,7 +706,7 @@ Let lebesgue_measure_itvco (a b : R) :
707706
Proof.
708707
have [ab|ba] := ltP a b; last by rewrite set_itv_ge ?measure0// -leNgt.
709708
have := lebesgue_measure_itvoo a b.
710-
rewrite 2!wlength_itv => <-; rewrite -setU1itv// measureU//.
709+
rewrite 2!wlength_itv => <-; rewrite -(setU1itv false)// measureU//.
711710
- by have /= -> := lebesgue_measure_set1 a; rewrite add0e.
712711
- by apply/seteqP; split => // x [/= ->]; rewrite in_itv/= ltxx.
713712
Qed.

theories/lebesgue_stieltjes_measure.v

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -576,20 +576,19 @@ have mopoo (x : R) : measurable `]x, +oo[.
576576
have mnooc (x : R) : measurable `]-oo, x].
577577
by rewrite -setCitvr; exact/measurableC.
578578
have ooE (a b : R) : `]a, b[%classic = `]a, b] `\ b.
579-
case: (boolP (a < b)) => ab; last by rewrite !set_itv_ge ?set0D.
580-
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx andbF.
579+
by rewrite setDitv1r.
581580
have moo (a b : R) : measurable `]a, b[.
582581
by rewrite ooE; exact: measurableD.
583582
have mcc (a b : R) : measurable `[a, b].
584583
case: (boolP (a <= b)) => ab; last by rewrite set_itv_ge.
585-
by rewrite -setU1itv//; apply/measurableU.
584+
by rewrite -(setU1itv false)//; apply/measurableU.
586585
have mco (a b : R) : measurable `[a, b[.
587586
case: (boolP (a < b)) => ab; last by rewrite set_itv_ge.
588-
by rewrite -setU1itv//; apply/measurableU.
587+
by rewrite -(setU1itv false)//; apply/measurableU.
589588
have oooE (b : R) : `]-oo, b[%classic = `]-oo, b] `\ b.
590-
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx.
589+
by rewrite setDitv1r.
591590
case: i => [[[] a|[]] [[] b|[]]] => //; do ?by rewrite set_itv_ge.
592-
- by rewrite -setU1itv//; exact/measurableU.
591+
- by rewrite -(setU1itv false)//; exact/measurableU.
593592
- by rewrite oooE; exact/measurableD.
594593
- by rewrite set_itvNyy.
595594
Qed.

theories/measurable_realfun.v

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,14 +1399,10 @@ Lemma emeasurable_fun_itv_obnd_cbndP (a : R) (b : itv_bound R) (f : R -> \bar R)
13991399
measurable_fun [set` Interval (BRight a) b] f <->
14001400
measurable_fun [set` Interval (BLeft a) b] f.
14011401
Proof.
1402-
split; [have [ab mf|ab _] := leP (BRight a) b|
1403-
have [ab _|ab] := leP b (BRight a)].
1404-
- rewrite -setU1itv//; apply/measurable_funU => //; split => //.
1405-
exact: measurable_fun_set1.
1406-
- rewrite set_itv_ge; first exact: measurable_fun_set0.
1407-
by rewrite -leNgt; case: b ab => -[].
1408-
- by rewrite set_itv_ge// -?leNgt//; exact: measurable_fun_set0.
1409-
- by rewrite -setU1itv ?ltW// => /measurable_funU[].
1402+
have [ab|ba] := leP (BRight a) b; last first.
1403+
by rewrite !set_itv_ge// -leNgt ?(ltW ba)// -ltBRight_leBLeft.
1404+
rewrite -(setU1itv false)// measurable_funU// (propT (measurable_fun_set1 _)).
1405+
by split => // -[].
14101406
Qed.
14111407

14121408
Lemma measurable_fun_itv_obnd_cbndP (a : R) (b : itv_bound R) (f : R -> R) :
@@ -1420,12 +1416,10 @@ Lemma emeasurable_fun_itv_bndo_bndcP (a : itv_bound R) (b : R) (f : R -> \bar R)
14201416
measurable_fun [set` Interval a (BLeft b)] f <->
14211417
measurable_fun [set` Interval a (BRight b)] f.
14221418
Proof.
1423-
split; [have [ab ?|ab _] := leP a (BLeft b) |have [ab _|ab] := leP (BLeft b) a].
1424-
- rewrite -setUitv1//; apply/measurable_funU => //; split => //.
1425-
exact: measurable_fun_set1.
1426-
- by rewrite set_itv_ge -?leNgt//; exact: measurable_fun_set0.
1427-
- by rewrite set_itv_ge -?leNgt//; exact: measurable_fun_set0.
1428-
- by rewrite -setUitv1 ?ltW// => /measurable_funU[].
1419+
have [ab|ba] := leP a (BLeft b); last first.
1420+
by rewrite !set_itv_ge// -leNgt// ltW.
1421+
rewrite -(setUitv1 true)// measurable_funU// (propT (measurable_fun_set1 _)).
1422+
by split => // -[].
14291423
Qed.
14301424

14311425
Lemma measurable_fun_itv_bndo_bndcP (a : itv_bound R) (b : R) (f : R -> R) :

0 commit comments

Comments
 (0)