Documentation

Mathlib.MeasureTheory.Covering.VitaliFamily

Vitali families #

On a metric space X with a measure μ, consider for each x : X a family of measurable sets with nonempty interiors, called setsAt x. This family is a Vitali family if it satisfies the following property: consider a (possibly non-measurable) set s, and for any x in s a subfamily f x of setsAt x containing sets of arbitrarily small diameter. Then one can extract a disjoint subfamily covering almost all s.

Vitali families are provided by covering theorems such as the Besicovitch covering theorem or the Vitali covering theorem. They make it possible to formulate general versions of theorems on differentiations of measure that apply in both contexts.

This file gives the basic definition of Vitali families. More interesting developments of this notion are deferred to other files:

Main definitions #

Let v be such a Vitali family.

References #

structure VitaliFamily {X : Type u_1} [PseudoMetricSpace X] {m : MeasurableSpace X} (μ : MeasureTheory.Measure X) :
Type u_1

On a metric space X with a measure μ, consider for each x : X a family of measurable sets with nonempty interiors, called setsAt x. This family is a Vitali family if it satisfies the following property: consider a (possibly non-measurable) set s, and for any x in s a subfamily f x of setsAt x containing sets of arbitrarily small diameter. Then one can extract a disjoint subfamily covering almost all s.

Vitali families are provided by covering theorems such as the Besicovitch covering theorem or the Vitali covering theorem. They make it possible to formulate general versions of theorems on differentiations of measure that apply in both contexts.

  • setsAt : XSet (Set X)

    Sets of the family "centered" at a given point.

  • measurableSet : ∀ (x : X), sself.setsAt x, MeasurableSet s

    All sets of the family are measurable.

  • nonempty_interior : ∀ (x : X), sself.setsAt x, (interior s).Nonempty

    All sets of the family have nonempty interior.

  • nontrivial : ∀ (x : X), ε > 0, sself.setsAt x, s Metric.closedBall x ε

    For any closed ball around x, there exists a set of the family contained in this ball.

  • covering : ∀ (s : Set X) (f : XSet (Set X)), (∀ xs, f x self.setsAt x)(∀ xs, ε > 0, tf x, t Metric.closedBall x ε)∃ (t : Set (X × Set X)), (∀ pt, p.1 s) (t.PairwiseDisjoint fun (p : X × Set X) => p.2) (∀ pt, p.2 f p.1) μ (s \ pt, p.2) = 0

    Consider a (possibly non-measurable) set s, and for any x in s a subfamily f x of setsAt x containing sets of arbitrarily small diameter. Then one can extract a disjoint subfamily covering almost all s.

Instances For
    theorem VitaliFamily.measurableSet {X : Type u_1} [PseudoMetricSpace X] {m : MeasurableSpace X} {μ : MeasureTheory.Measure X} (self : VitaliFamily μ) (x : X) (s : Set X) :
    s self.setsAt xMeasurableSet s

    All sets of the family are measurable.

    theorem VitaliFamily.nonempty_interior {X : Type u_1} [PseudoMetricSpace X] {m : MeasurableSpace X} {μ : MeasureTheory.Measure X} (self : VitaliFamily μ) (x : X) (s : Set X) :
    s self.setsAt x(interior s).Nonempty

    All sets of the family have nonempty interior.

    theorem VitaliFamily.nontrivial {X : Type u_1} [PseudoMetricSpace X] {m : MeasurableSpace X} {μ : MeasureTheory.Measure X} (self : VitaliFamily μ) (x : X) (ε : ) :
    ε > 0sself.setsAt x, s Metric.closedBall x ε

    For any closed ball around x, there exists a set of the family contained in this ball.

    theorem VitaliFamily.covering {X : Type u_1} [PseudoMetricSpace X] {m : MeasurableSpace X} {μ : MeasureTheory.Measure X} (self : VitaliFamily μ) (s : Set X) (f : XSet (Set X)) :
    (∀ xs, f x self.setsAt x)(∀ xs, ε > 0, tf x, t Metric.closedBall x ε)∃ (t : Set (X × Set X)), (∀ pt, p.1 s) (t.PairwiseDisjoint fun (p : X × Set X) => p.2) (∀ pt, p.2 f p.1) μ (s \ pt, p.2) = 0

    Consider a (possibly non-measurable) set s, and for any x in s a subfamily f x of setsAt x containing sets of arbitrarily small diameter. Then one can extract a disjoint subfamily covering almost all s.

    def VitaliFamily.mono {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (ν : MeasureTheory.Measure X) (hν : ν.AbsolutelyContinuous μ) :

    A Vitali family for a measure μ is also a Vitali family for any measure absolutely continuous with respect to μ.

    Equations
    • v.mono ν = { setsAt := v.setsAt, measurableSet := , nonempty_interior := , nontrivial := , covering := }
    Instances For
      def VitaliFamily.FineSubfamilyOn {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (f : XSet (Set X)) (s : Set X) :

      Given a Vitali family v for a measure μ, a family f is a fine subfamily on a set s if every point x in s belongs to arbitrarily small sets in v.setsAt x ∩ f x. This is precisely the subfamilies for which the Vitali family definition ensures that one can extract a disjoint covering of almost all s.

      Equations
      Instances For
        theorem VitaliFamily.FineSubfamilyOn.exists_disjoint_covering_ae {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) :
        ∃ (t : Set (X × Set X)), (∀ pt, p.1 s) (t.PairwiseDisjoint fun (p : X × Set X) => p.2) (∀ pt, p.2 v.setsAt p.1 f p.1) μ (s \ pt, p.2) = 0
        def VitaliFamily.FineSubfamilyOn.index {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) :
        Set (X × Set X)

        Given h : v.FineSubfamilyOn f s, then h.index is a set parametrizing a disjoint covering of almost every s.

        Equations
        • h.index = .choose
        Instances For
          def VitaliFamily.FineSubfamilyOn.covering {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (_h : v.FineSubfamilyOn f s) :
          X × Set XSet X

          Given h : v.FineSubfamilyOn f s, then h.covering p is a set in the family, for p ∈ h.index, such that these sets form a disjoint covering of almost every s.

          Equations
          • _h.covering p = p.2
          Instances For
            theorem VitaliFamily.FineSubfamilyOn.index_subset {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) (p : X × Set X) :
            p h.indexp.1 s
            theorem VitaliFamily.FineSubfamilyOn.covering_disjoint {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) :
            h.index.PairwiseDisjoint h.covering
            theorem VitaliFamily.FineSubfamilyOn.covering_disjoint_subtype {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) :
            Pairwise (Disjoint on fun (x : h.index) => h.covering x)
            theorem VitaliFamily.FineSubfamilyOn.covering_mem {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) {p : X × Set X} (hp : p h.index) :
            h.covering p f p.1
            theorem VitaliFamily.FineSubfamilyOn.covering_mem_family {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) {p : X × Set X} (hp : p h.index) :
            h.covering p v.setsAt p.1
            theorem VitaliFamily.FineSubfamilyOn.measure_diff_biUnion {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) :
            μ (s \ ph.index, h.covering p) = 0
            theorem VitaliFamily.FineSubfamilyOn.index_countable {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) [SecondCountableTopology X] :
            h.index.Countable
            theorem VitaliFamily.FineSubfamilyOn.measurableSet_u {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) {p : X × Set X} (hp : p h.index) :
            MeasurableSet (h.covering p)
            theorem VitaliFamily.FineSubfamilyOn.measure_le_tsum_of_absolutelyContinuous {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) [SecondCountableTopology X] {ρ : MeasureTheory.Measure X} (hρ : ρ.AbsolutelyContinuous μ) :
            ρ s ∑' (p : h.index), ρ (h.covering p)
            theorem VitaliFamily.FineSubfamilyOn.measure_le_tsum {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} {v : VitaliFamily μ} {f : XSet (Set X)} {s : Set X} (h : v.FineSubfamilyOn f s) [SecondCountableTopology X] :
            μ s ∑' (x : h.index), μ (h.covering x)
            def VitaliFamily.enlarge {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (δ : ) (δpos : 0 < δ) :

            One can enlarge a Vitali family by adding to the sets f x at x all sets which are not contained in a δ-neighborhood on x. This does not change the local filter at a point, but it can be convenient to get a nicer global behavior.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Given a vitali family v, then v.filterAt x is the filter on Set X made of those families that contain all sets of v.setsAt x of a sufficiently small diameter. This filter makes it possible to express limiting behavior when sets in v.setsAt x shrink to x.

              Equations
              Instances For
                theorem Filter.HasBasis.vitaliFamily {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {ι : Sort u_2} {p : ιProp} {s : ιSet X} {x : X} (h : (nhds x).HasBasis p s) :
                (v.filterAt x).HasBasis p fun (i : ι) => {t : Set X | t v.setsAt x t s i}
                theorem VitaliFamily.filterAt_basis_closedBall {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (x : X) :
                (v.filterAt x).HasBasis (fun (x : ) => 0 < x) fun (x_1 : ) => {t : Set X | t v.setsAt x t Metric.closedBall x x_1}
                theorem VitaliFamily.mem_filterAt_iff {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {x : X} {s : Set (Set X)} :
                s v.filterAt x ε > 0, tv.setsAt x, t Metric.closedBall x εt s
                instance VitaliFamily.filterAt_neBot {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (x : X) :
                (v.filterAt x).NeBot
                Equations
                • =
                theorem VitaliFamily.eventually_filterAt_iff {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {x : X} {P : Set XProp} :
                (∀ᶠ (t : Set X) in v.filterAt x, P t) ε > 0, tv.setsAt x, t Metric.closedBall x εP t
                theorem VitaliFamily.tendsto_filterAt_iff {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {ι : Type u_2} {l : Filter ι} {f : ιSet X} {x : X} :
                Filter.Tendsto f l (v.filterAt x) (∀ᶠ (i : ι) in l, f i v.setsAt x) ε > 0, ∀ᶠ (i : ι) in l, f i Metric.closedBall x ε
                theorem VitaliFamily.eventually_filterAt_mem_setsAt {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (x : X) :
                ∀ᶠ (t : Set X) in v.filterAt x, t v.setsAt x
                theorem VitaliFamily.eventually_filterAt_subset_closedBall {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (x : X) {ε : } (hε : 0 < ε) :
                ∀ᶠ (t : Set X) in v.filterAt x, t Metric.closedBall x ε
                theorem VitaliFamily.eventually_filterAt_measurableSet {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (x : X) :
                ∀ᶠ (t : Set X) in v.filterAt x, MeasurableSet t
                theorem VitaliFamily.frequently_filterAt_iff {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {x : X} {P : Set XProp} :
                (∃ᶠ (t : Set X) in v.filterAt x, P t) ε > 0, tv.setsAt x, t Metric.closedBall x ε P t
                theorem VitaliFamily.eventually_filterAt_subset_of_nhds {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) {x : X} {o : Set X} (hx : o nhds x) :
                ∀ᶠ (t : Set X) in v.filterAt x, t o
                theorem VitaliFamily.fineSubfamilyOn_of_frequently {X : Type u_1} [PseudoMetricSpace X] {m0 : MeasurableSpace X} {μ : MeasureTheory.Measure X} (v : VitaliFamily μ) (f : XSet (Set X)) (s : Set X) (h : xs, ∃ᶠ (t : Set X) in v.filterAt x, t f x) :
                v.FineSubfamilyOn f s