Skip to content

Commit 6700d2c

Browse files
committed
tentative formalization of Vitali's theorem
1 parent 371a5a2 commit 6700d2c

File tree

7 files changed

+489
-2
lines changed

7 files changed

+489
-2
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,86 @@
103103
`measurable_closed_ball`, `lebesgue_measure_closed_ball`,
104104
`measurable_scale_cball`
105105

106+
- in `nomedtype.v`:
107+
+ lemmas `ball0`, `ball_itv`,
108+
+ lemmas `closed_ball0`, `closed_ball_itv`
109+
110+
- in `mathcomp_extra.v`:
111+
+ lemma `leq_ltn_expn`
112+
113+
- in `classical_sets.v`:
114+
+ lemma `set_cons1`, `trivIset_bigcup`
115+
+ definition `maximal_disjoint_subcollection`
116+
+ lemma `ex_maximal_disjoint_subcollection`
117+
118+
- in `topology.v`:
119+
+ lemma `separated_open_countable`
120+
121+
- in `normedtype.v`:
122+
+ definitions `scale_ball`, `scale_cball`
123+
+ lemmas `scale_ball1`, `scale_ball_neq0`, `sub_scale_ball`
124+
+ lemmas `scale_cball1`, `scale_cball_neq0`, `scale_cball_itv`
125+
+ lemmas `separated_open_countable`, `separated_closed_ball_countable`
126+
+ lemmas `vitali_lemma_finite`, `vitali_lemma_finite_cover`
127+
+ definition `vitali_collection_partition`
128+
+ lemmas `vitali_collection_partition_ub_gt0`,
129+
`ex_vitali_collection_partition`, `cover_vitali_collection_partition`,
130+
`disjoint_vitali_collection_partition`
131+
+ lemma `separated_closed_ball_countable`
132+
+ lemmas `vitali_lemma`, `vitali_lemma_cover`
133+
134+
- in `lebesgue_measure.v`:
135+
+ lemmas `measurable_ball`, `lebesgue_measure_ball`,
136+
`measurable_closed_ball`, `lebesgue_measure_closed_ball`,
137+
`measurable_scale_cball`
138+
139+
- in `nomedtype.v`:
140+
+ lemmas `ball0`, `ball_itv`,
141+
+ lemmas `closed_ball0`, `closed_ball_itv`
142+
143+
- in `mathcomp_extra.v`:
144+
+ lemma `leq_ltn_expn`
145+
146+
- in `classical_sets.v`:
147+
+ lemma `set_cons1`, `trivIset_bigcup`
148+
+ definition `maximal_disjoint_subcollection`
149+
+ lemma `ex_maximal_disjoint_subcollection`
150+
151+
- in `topology.v`:
152+
+ lemma `separated_open_countable`
153+
154+
- in `normedtype.v`:
155+
+ definitions `scale_ball`, `scale_cball`
156+
+ lemmas `scale_ball1`, `scale_ball_neq0`, `sub_scale_ball`
157+
+ lemmas `scale_cball1`, `scale_cball_neq0`, `scale_cball_itv`
158+
+ lemmas `separated_open_countable`, `separated_closed_ball_countable`
159+
+ lemmas `vitali_lemma_finite`, `vitali_lemma_finite_cover`
160+
+ definition `vitali_collection_partition`
161+
+ lemmas `vitali_collection_partition_ub_gt0`,
162+
`ex_vitali_collection_partition`, `cover_vitali_collection_partition`,
163+
`disjoint_vitali_collection_partition`
164+
+ lemma `separated_closed_ball_countable`
165+
+ lemmas `vitali_lemma`, `vitali_lemma_cover`
166+
167+
- in `lebesgue_measure.v`:
168+
+ lemmas `measurable_ball`, `lebesgue_measure_ball`,
169+
`measurable_closed_ball`, `lebesgue_measure_closed_ball`,
170+
`measurable_scale_cball`
171+
172+
- in `classical_sets.v`:
173+
+ lemmas `trivIsetT_bigcup`, `mem_not_I`
174+
175+
- in `sequences.v`:
176+
+ lemma `nneseries_tail_cvg`
177+
178+
- in `normedtype.v`:
179+
+ lemmas `open_subball`, `closed_disjoint_closed_ball`
180+
181+
- in `lebesgue_measure.v`:
182+
+ lemmas `measure_sigma_sub_additive_tail`, `outer_measure_sigma_subadditive_tail`
183+
+ definition `vitali_cover`
184+
+ lemma `vitali_theorem`
185+
106186
### Changed
107187

108188
- `mnormalize` moved from `kernel.v` to `measure.v` and generalized
@@ -136,6 +216,27 @@
136216

137217
### Generalized
138218

219+
- in `exp.v`:
220+
+ lemmas `convex_expR`, `ler_power_pos` (now `ler_powR`)
221+
- in `exp.v`:
222+
+ lemma `ln_power_pos` (now `ln_powR`)
223+
+ lemma `ln_power_pos`
224+
- in file `lebesgue_integral.v`, updated `le_approx`.
225+
226+
- in `sequences.v`:
227+
+ lemmas `is_cvg_nneseries_cond`, `is_cvg_npeseries_cond`
228+
+ lemmas `is_cvg_nneseries`, `is_cvg_npeseries`
229+
+ lemmas `nneseries_ge0`, `npeseries_le0`
230+
231+
- in `measure.v`:
232+
+ lemmas `measureDI`, `measureD`, `measureUfinl`, `measureUfinr`,
233+
`null_set_setU`, `measureU0`
234+
(from measure to content)
235+
+ lemma `subset_measure0` (from `realType` to `realFieldType`)
236+
237+
- in `classical_sets.v`:
238+
+ `set_nil` from `choiceType` to `eqType`
239+
139240
- in `classical_sets.v`:
140241
+ `set_nil` from `choiceType` to `eqType`
141242

classical/classical_sets.v

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,9 @@ Proof. by move=> k; apply/val_inj. Qed.
11241124
Lemma IIordK {n} : cancel (@IIord n) ordII.
11251125
Proof. by move=> k; apply/val_inj. Qed.
11261126

1127+
Lemma mem_not_I N n : (n \in ~` `I_N) = (N <= n).
1128+
Proof. by rewrite in_setC /mkset /in_mem /mem /= /in_set asboolb -leqNgt. Qed.
1129+
11271130
End InitialSegment.
11281131

11291132
Lemma setT_unit : [set: unit] = [set tt].
@@ -2567,6 +2570,17 @@ have [nm|nm] := eqVneq n m; first by apply: (tB m) => //; rewrite -nm.
25672570
exact: (H _ _ _ _ nm).
25682571
Qed.
25692572

2573+
Lemma trivIsetT_bigcup T1 T2 (I : eqType) (D : I -> set T1) (F : T1 -> set T2) :
2574+
trivIset setT D ->
2575+
trivIset (\bigcup_i D i) F ->
2576+
trivIset setT (fun i => \bigcup_(t in D i) F t).
2577+
Proof.
2578+
move=> D0 h i j _ _ [t [[m Dim Fmt] [n Djn Fnt]]].
2579+
have mn : m = n by apply: h => //; [exists i|exists j|exists t].
2580+
rewrite {}mn {m} in Dim Fmt *.
2581+
by apply: D0 => //; exists n.
2582+
Qed.
2583+
25702584
Definition cover T I D (F : I -> set T) := \bigcup_(i in D) F i.
25712585

25722586
Lemma coverE T I D (F : I -> set T) : cover D F = \bigcup_(i in D) F i.

0 commit comments

Comments
 (0)