@@ -96,11 +96,6 @@ sources only allow coverings by balls and use `r ^ d` instead of `(diam s) ^ d`.
9696construction lead to different Hausdorff measures, they lead to the same notion of the Hausdorff
9797dimension.
9898
99- ## TODO
100-
101- * prove that `1`-dimensional Hausdorff measure on `ℝ` equals `volume`;
102- * prove a similar statement for `ℝ × ℝ`.
103-
10499## References
105100
106101* [ Herbert Federer, Geometric Measure Theory, Chapter 2.10 ] [Federer1996 ]
@@ -693,108 +688,6 @@ end
693688
694689end measure
695690
696- open_locale measure_theory
697- open measure
698-
699- /-!
700- ### Hausdorff measure and Lebesgue measure
701- -/
702-
703- /-- In the space `ι → ℝ`, Hausdorff measure coincides exactly with Lebesgue measure. -/
704- @[simp] theorem hausdorff_measure_pi_real {ι : Type *} [fintype ι] :
705- (μH[fintype.card ι] : measure (ι → ℝ)) = volume :=
706- begin
707- classical,
708- -- it suffices to check that the two measures coincide on products of rational intervals
709- refine (pi_eq_generate_from (λ i, real.borel_eq_generate_from_Ioo_rat.symm)
710- (λ i, real.is_pi_system_Ioo_rat) (λ i, real.finite_spanning_sets_in_Ioo_rat _)
711- _).symm,
712- simp only [mem_Union, mem_singleton_iff],
713- -- fix such a product `s` of rational intervals, of the form `Π (a i, b i)`.
714- intros s hs,
715- choose a b H using hs,
716- obtain rfl : s = λ i, Ioo (a i) (b i), from funext (λ i, (H i).2 ), replace H := λ i, (H i).1 ,
717- apply le_antisymm _,
718- -- first check that `volume s ≤ μH s`
719- { have Hle : volume ≤ (μH[fintype.card ι] : measure (ι → ℝ)),
720- { refine le_hausdorff_measure _ _ ∞ ennreal.coe_lt_top (λ s _, _),
721- rw [ennreal.rpow_nat_cast],
722- exact real.volume_pi_le_diam_pow s },
723- rw [← volume_pi_pi (λ i, Ioo (a i : ℝ) (b i))],
724- exact measure.le_iff'.1 Hle _ },
725- /- For the other inequality `μH s ≤ volume s`, we use a covering of `s` by sets of small diameter
726- `1/n`, namely cubes with left-most point of the form `a i + f i / n` with `f i` ranging between
727- `0` and `⌈(b i - a i) * n⌉`. Their number is asymptotic to `n^d * Π (b i - a i)`. -/
728- have I : ∀ i, 0 ≤ (b i : ℝ) - a i := λ i, by simpa only [sub_nonneg, rat.cast_le] using (H i).le,
729- let γ := λ (n : ℕ), (Π (i : ι), fin ⌈((b i : ℝ) - a i) * n⌉₊),
730- let t : Π (n : ℕ), γ n → set (ι → ℝ) :=
731- λ n f, set.pi univ (λ i, Icc (a i + f i / n) (a i + (f i + 1 ) / n)),
732- have A : tendsto (λ (n : ℕ), 1 /(n : ℝ≥0 ∞)) at_top (𝓝 0 ),
733- by simp only [one_div, ennreal.tendsto_inv_nat_nhds_zero],
734- have B : ∀ᶠ n in at_top, ∀ (i : γ n), diam (t n i) ≤ 1 / n,
735- { apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
736- assume f,
737- apply diam_pi_le_of_le (λ b, _),
738- simp only [real.ediam_Icc, add_div, ennreal.of_real_div_of_pos (nat.cast_pos.mpr hn), le_refl,
739- add_sub_add_left_eq_sub, add_sub_cancel', ennreal.of_real_one, ennreal.of_real_coe_nat] },
740- have C : ∀ᶠ n in at_top, set.pi univ (λ (i : ι), Ioo (a i : ℝ) (b i)) ⊆ ⋃ (i : γ n), t n i,
741- { apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
742- have npos : (0 : ℝ) < n := nat.cast_pos.2 hn,
743- assume x hx,
744- simp only [mem_Ioo, mem_univ_pi] at hx,
745- simp only [mem_Union, mem_Ioo, mem_univ_pi, coe_coe],
746- let f : γ n := λ i, ⟨⌊(x i - a i) * n⌋₊,
747- begin
748- apply nat.floor_lt_ceil_of_lt_of_pos,
749- { refine (mul_lt_mul_right npos).2 _,
750- simp only [(hx i).right, sub_lt_sub_iff_right] },
751- { refine mul_pos _ npos,
752- simpa only [rat.cast_lt, sub_pos] using H i }
753- end ⟩,
754- refine ⟨f, λ i, ⟨_, _⟩⟩,
755- { calc (a i : ℝ) + ⌊(x i - a i) * n⌋₊ / n
756- ≤ (a i : ℝ) + ((x i - a i) * n) / n :
757- begin
758- refine add_le_add le_rfl ((div_le_div_right npos).2 _),
759- exact nat.floor_le (mul_nonneg (sub_nonneg.2 (hx i).1 .le) npos.le),
760- end
761- ... = x i : by field_simp [npos.ne'] },
762- { calc x i
763- = (a i : ℝ) + ((x i - a i) * n) / n : by field_simp [npos.ne']
764- ... ≤ (a i : ℝ) + (⌊(x i - a i) * n⌋₊ + 1 ) / n :
765- add_le_add le_rfl ((div_le_div_right npos).2 (nat.lt_floor_add_one _).le) } },
766- calc μH[fintype.card ι] (set.pi univ (λ (i : ι), Ioo (a i : ℝ) (b i)))
767- ≤ liminf (λ (n : ℕ), ∑ (i : γ n), diam (t n i) ^ ↑(fintype.card ι)) at_top :
768- hausdorff_measure_le_liminf_sum _ (set.pi univ (λ i, Ioo (a i : ℝ) (b i)))
769- (λ (n : ℕ), 1 /(n : ℝ≥0 ∞)) A t B C
770- ... ≤ liminf (λ (n : ℕ), ∑ (i : γ n), (1 /n) ^ (fintype.card ι)) at_top :
771- begin
772- refine liminf_le_liminf _ (by is_bounded_default),
773- filter_upwards [B] with _ hn,
774- apply finset.sum_le_sum (λ i _, _),
775- rw ennreal.rpow_nat_cast,
776- exact pow_le_pow_of_le_left' (hn i) _,
777- end
778- ... = liminf (λ (n : ℕ), ∏ (i : ι), (⌈((b i : ℝ) - a i) * n⌉₊ : ℝ≥0 ∞) / n) at_top :
779- begin
780- simp only [finset.card_univ, nat.cast_prod, one_mul, fintype.card_fin,
781- finset.sum_const, nsmul_eq_mul, fintype.card_pi, div_eq_mul_inv, finset.prod_mul_distrib,
782- finset.prod_const]
783- end
784- ... = ∏ (i : ι), volume (Ioo (a i : ℝ) (b i)) :
785- begin
786- simp only [real.volume_Ioo],
787- apply tendsto.liminf_eq,
788- refine ennreal.tendsto_finset_prod_of_ne_top _ (λ i hi, _) (λ i hi, _),
789- { apply tendsto.congr' _ ((ennreal.continuous_of_real.tendsto _).comp
790- ((tendsto_nat_ceil_mul_div_at_top (I i)).comp tendsto_coe_nat_at_top_at_top)),
791- apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
792- simp only [ennreal.of_real_div_of_pos (nat.cast_pos.mpr hn), comp_app,
793- ennreal.of_real_coe_nat] },
794- { simp only [ennreal.of_real_ne_top, ne.def, not_false_iff] }
795- end
796- end
797-
798691end measure_theory
799692
800693/-!
@@ -964,4 +857,139 @@ e.isometry.hausdorff_measure_image (or.inr e.surjective) s
964857 μH[d] (e ⁻¹' s) = μH[d] s :=
965858by rw [← e.image_symm, e.symm.hausdorff_measure_image]
966859
860+ @[simp] lemma map_hausdorff_measure (e : X ≃ᵢ Y) (d : ℝ) : measure.map e μH[d] = μH[d] :=
861+ by rw [e.isometry.map_hausdorff_measure (or.inr e.surjective), e.surjective.range_eq, restrict_univ]
862+
863+ lemma measure_preserving_hausdorff_measure (e : X ≃ᵢ Y) (d : ℝ) :
864+ measure_preserving e μH[d] μH[d] :=
865+ ⟨e.continuous.measurable, map_hausdorff_measure _ _⟩
866+
967867end isometry_equiv
868+
869+ namespace measure_theory
870+
871+ /-!
872+ ### Hausdorff measure and Lebesgue measure
873+ -/
874+
875+ /-- In the space `ι → ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
876+ @[simp] theorem hausdorff_measure_pi_real {ι : Type *} [fintype ι] :
877+ (μH[fintype.card ι] : measure (ι → ℝ)) = volume :=
878+ begin
879+ classical,
880+ -- it suffices to check that the two measures coincide on products of rational intervals
881+ refine (pi_eq_generate_from (λ i, real.borel_eq_generate_from_Ioo_rat.symm)
882+ (λ i, real.is_pi_system_Ioo_rat) (λ i, real.finite_spanning_sets_in_Ioo_rat _)
883+ _).symm,
884+ simp only [mem_Union, mem_singleton_iff],
885+ -- fix such a product `s` of rational intervals, of the form `Π (a i, b i)`.
886+ intros s hs,
887+ choose a b H using hs,
888+ obtain rfl : s = λ i, Ioo (a i) (b i), from funext (λ i, (H i).2 ), replace H := λ i, (H i).1 ,
889+ apply le_antisymm _,
890+ -- first check that `volume s ≤ μH s`
891+ { have Hle : volume ≤ (μH[fintype.card ι] : measure (ι → ℝ)),
892+ { refine le_hausdorff_measure _ _ ∞ ennreal.coe_lt_top (λ s _, _),
893+ rw [ennreal.rpow_nat_cast],
894+ exact real.volume_pi_le_diam_pow s },
895+ rw [← volume_pi_pi (λ i, Ioo (a i : ℝ) (b i))],
896+ exact measure.le_iff'.1 Hle _ },
897+ /- For the other inequality `μH s ≤ volume s`, we use a covering of `s` by sets of small diameter
898+ `1/n`, namely cubes with left-most point of the form `a i + f i / n` with `f i` ranging between
899+ `0` and `⌈(b i - a i) * n⌉`. Their number is asymptotic to `n^d * Π (b i - a i)`. -/
900+ have I : ∀ i, 0 ≤ (b i : ℝ) - a i := λ i, by simpa only [sub_nonneg, rat.cast_le] using (H i).le,
901+ let γ := λ (n : ℕ), (Π (i : ι), fin ⌈((b i : ℝ) - a i) * n⌉₊),
902+ let t : Π (n : ℕ), γ n → set (ι → ℝ) :=
903+ λ n f, set.pi univ (λ i, Icc (a i + f i / n) (a i + (f i + 1 ) / n)),
904+ have A : tendsto (λ (n : ℕ), 1 /(n : ℝ≥0 ∞)) at_top (𝓝 0 ),
905+ by simp only [one_div, ennreal.tendsto_inv_nat_nhds_zero],
906+ have B : ∀ᶠ n in at_top, ∀ (i : γ n), diam (t n i) ≤ 1 / n,
907+ { apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
908+ assume f,
909+ apply diam_pi_le_of_le (λ b, _),
910+ simp only [real.ediam_Icc, add_div, ennreal.of_real_div_of_pos (nat.cast_pos.mpr hn), le_refl,
911+ add_sub_add_left_eq_sub, add_sub_cancel', ennreal.of_real_one, ennreal.of_real_coe_nat] },
912+ have C : ∀ᶠ n in at_top, set.pi univ (λ (i : ι), Ioo (a i : ℝ) (b i)) ⊆ ⋃ (i : γ n), t n i,
913+ { apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
914+ have npos : (0 : ℝ) < n := nat.cast_pos.2 hn,
915+ assume x hx,
916+ simp only [mem_Ioo, mem_univ_pi] at hx,
917+ simp only [mem_Union, mem_Ioo, mem_univ_pi, coe_coe],
918+ let f : γ n := λ i, ⟨⌊(x i - a i) * n⌋₊,
919+ begin
920+ apply nat.floor_lt_ceil_of_lt_of_pos,
921+ { refine (mul_lt_mul_right npos).2 _,
922+ simp only [(hx i).right, sub_lt_sub_iff_right] },
923+ { refine mul_pos _ npos,
924+ simpa only [rat.cast_lt, sub_pos] using H i }
925+ end ⟩,
926+ refine ⟨f, λ i, ⟨_, _⟩⟩,
927+ { calc (a i : ℝ) + ⌊(x i - a i) * n⌋₊ / n
928+ ≤ (a i : ℝ) + ((x i - a i) * n) / n :
929+ begin
930+ refine add_le_add le_rfl ((div_le_div_right npos).2 _),
931+ exact nat.floor_le (mul_nonneg (sub_nonneg.2 (hx i).1 .le) npos.le),
932+ end
933+ ... = x i : by field_simp [npos.ne'] },
934+ { calc x i
935+ = (a i : ℝ) + ((x i - a i) * n) / n : by field_simp [npos.ne']
936+ ... ≤ (a i : ℝ) + (⌊(x i - a i) * n⌋₊ + 1 ) / n :
937+ add_le_add le_rfl ((div_le_div_right npos).2 (nat.lt_floor_add_one _).le) } },
938+ calc μH[fintype.card ι] (set.pi univ (λ (i : ι), Ioo (a i : ℝ) (b i)))
939+ ≤ liminf (λ (n : ℕ), ∑ (i : γ n), diam (t n i) ^ ↑(fintype.card ι)) at_top :
940+ hausdorff_measure_le_liminf_sum _ (set.pi univ (λ i, Ioo (a i : ℝ) (b i)))
941+ (λ (n : ℕ), 1 /(n : ℝ≥0 ∞)) A t B C
942+ ... ≤ liminf (λ (n : ℕ), ∑ (i : γ n), (1 /n) ^ (fintype.card ι)) at_top :
943+ begin
944+ refine liminf_le_liminf _ (by is_bounded_default),
945+ filter_upwards [B] with _ hn,
946+ apply finset.sum_le_sum (λ i _, _),
947+ rw ennreal.rpow_nat_cast,
948+ exact pow_le_pow_of_le_left' (hn i) _,
949+ end
950+ ... = liminf (λ (n : ℕ), ∏ (i : ι), (⌈((b i : ℝ) - a i) * n⌉₊ : ℝ≥0 ∞) / n) at_top :
951+ begin
952+ simp only [finset.card_univ, nat.cast_prod, one_mul, fintype.card_fin,
953+ finset.sum_const, nsmul_eq_mul, fintype.card_pi, div_eq_mul_inv, finset.prod_mul_distrib,
954+ finset.prod_const]
955+ end
956+ ... = ∏ (i : ι), volume (Ioo (a i : ℝ) (b i)) :
957+ begin
958+ simp only [real.volume_Ioo],
959+ apply tendsto.liminf_eq,
960+ refine ennreal.tendsto_finset_prod_of_ne_top _ (λ i hi, _) (λ i hi, _),
961+ { apply tendsto.congr' _ ((ennreal.continuous_of_real.tendsto _).comp
962+ ((tendsto_nat_ceil_mul_div_at_top (I i)).comp tendsto_coe_nat_at_top_at_top)),
963+ apply eventually_at_top.2 ⟨1 , λ n hn, _⟩,
964+ simp only [ennreal.of_real_div_of_pos (nat.cast_pos.mpr hn), comp_app,
965+ ennreal.of_real_coe_nat] },
966+ { simp only [ennreal.of_real_ne_top, ne.def, not_false_iff] }
967+ end
968+ end
969+
970+ variables (ι X)
971+
972+ theorem hausdorff_measure_measure_preserving_fun_unique [unique ι]
973+ [topological_space.second_countable_topology X] (d : ℝ) :
974+ measure_preserving (measurable_equiv.fun_unique ι X) μH[d] μH[d] :=
975+ (isometry_equiv.fun_unique ι X).measure_preserving_hausdorff_measure _
976+
977+ theorem hausdorff_measure_measure_preserving_pi_fin_two (α : fin 2 → Type *)
978+ [Π i, measurable_space (α i)] [Π i, emetric_space (α i)] [Π i, borel_space (α i)]
979+ [Π i, topological_space.second_countable_topology (α i)] (d : ℝ) :
980+ measure_preserving (measurable_equiv.pi_fin_two α) μH[d] μH[d] :=
981+ (isometry_equiv.pi_fin_two α).measure_preserving_hausdorff_measure _
982+
983+ /-- In the space `ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
984+ @[simp] theorem hausdorff_measure_real : (μH[1 ] : measure ℝ) = volume :=
985+ by rw [←(volume_preserving_fun_unique unit ℝ).map_eq,
986+ ←(hausdorff_measure_measure_preserving_fun_unique unit ℝ 1 ).map_eq,
987+ ←hausdorff_measure_pi_real, fintype.card_unit, nat.cast_one]
988+
989+ /-- In the space `ℝ × ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
990+ @[simp] theorem hausdorff_measure_prod_real : (μH[2 ] : measure (ℝ × ℝ)) = volume :=
991+ by rw [←(volume_preserving_pi_fin_two (λ i, ℝ)).map_eq,
992+ ←(hausdorff_measure_measure_preserving_pi_fin_two (λ i, ℝ) _).map_eq,
993+ ←hausdorff_measure_pi_real, fintype.card_fin, nat.cast_two]
994+
995+ end measure_theory
0 commit comments