File: Mathlib/MeasureTheory/Measure/Content.lean

full_name: MeasureTheory.Content.mono'
code: /-- A content is an additive function on compact sets taking values in `ℝ≥0`. It is a device
from which one can define a measure. -/
structure Content (G : Type w) [TopologicalSpace G] where
  toFun : Compacts G → ℝ≥0
  mono' : ∀ K₁ K₂ : Compacts G, (K₁ : Set G) ⊆ K₂ → toFun K₁ ≤ toFun K₂
  sup_disjoint' :
    ∀ K₁ K₂ : Compacts G, Disjoint (K₁ : Set G) K₂ → IsClosed (K₁ : Set G) → IsClosed (K₂ : Set G)
      → toFun (K₁ ⊔ K₂) = toFun K₁ + toFun K₂
  sup_le' : ∀ K₁ K₂ : Compacts G, toFun (K₁ ⊔ K₂) ≤ toFun K₁ + toFun K₂
goal: ↑K₁ ⊆ ↑K₂ → self.toFun K₁ ≤ self.toFun K₂

full_name: MeasureTheory.Content.sup_le'
code: /-- A content is an additive function on compact sets taking values in `ℝ≥0`. It is a device
from which one can define a measure. -/
structure Content (G : Type w) [TopologicalSpace G] where
  toFun : Compacts G → ℝ≥0
  mono' : ∀ K₁ K₂ : Compacts G, (K₁ : Set G) ⊆ K₂ → toFun K₁ ≤ toFun K₂
  sup_disjoint' :
    ∀ K₁ K₂ : Compacts G, Disjoint (K₁ : Set G) K₂ → IsClosed (K₁ : Set G) → IsClosed (K₂ : Set G)
      → toFun (K₁ ⊔ K₂) = toFun K₁ + toFun K₂
  sup_le' : ∀ K₁ K₂ : Compacts G, toFun (K₁ ⊔ K₂) ≤ toFun K₁ + toFun K₂
goal: self.toFun (K₁ ⊔ K₂) ≤ self.toFun K₁ + self.toFun K₂

full_name: MeasureTheory.Content.toFun
code: /-- A content is an additive function on compact sets taking values in `ℝ≥0`. It is a device
from which one can define a measure. -/
structure Content (G : Type w) [TopologicalSpace G] where
  toFun : Compacts G → ℝ≥0
  mono' : ∀ K₁ K₂ : Compacts G, (K₁ : Set G) ⊆ K₂ → toFun K₁ ≤ toFun K₂
  sup_disjoint' :
    ∀ K₁ K₂ : Compacts G, Disjoint (K₁ : Set G) K₂ → IsClosed (K₁ : Set G) → IsClosed (K₂ : Set G)
      → toFun (K₁ ⊔ K₂) = toFun K₁ + toFun K₂
  sup_le' : ∀ K₁ K₂ : Compacts G, toFun (K₁ ⊔ K₂) ≤ toFun K₁ + toFun K₂
goal: TopologicalSpace.Compacts G → ℝ≥0

full_name: MeasureTheory.Content.sup_disjoint'
code: /-- A content is an additive function on compact sets taking values in `ℝ≥0`. It is a device
from which one can define a measure. -/
structure Content (G : Type w) [TopologicalSpace G] where
  toFun : Compacts G → ℝ≥0
  mono' : ∀ K₁ K₂ : Compacts G, (K₁ : Set G) ⊆ K₂ → toFun K₁ ≤ toFun K₂
  sup_disjoint' :
    ∀ K₁ K₂ : Compacts G, Disjoint (K₁ : Set G) K₂ → IsClosed (K₁ : Set G) → IsClosed (K₂ : Set G)
      → toFun (K₁ ⊔ K₂) = toFun K₁ + toFun K₂
  sup_le' : ∀ K₁ K₂ : Compacts G, toFun (K₁ ⊔ K₂) ≤ toFun K₁ + toFun K₂
goal: Disjoint ↑K₁ ↑K₂ → IsClosed ↑K₁ → IsClosed ↑K₂ → self.toFun (K₁ ⊔ K₂) = self.toFun K₁ + self.toFun K₂

full_name: MeasureTheory.Content
code: /-- A content is an additive function on compact sets taking values in `ℝ≥0`. It is a device
from which one can define a measure. -/
structure Content (G : Type w) [TopologicalSpace G] where
  toFun : Compacts G → ℝ≥0
  mono' : ∀ K₁ K₂ : Compacts G, (K₁ : Set G) ⊆ K₂ → toFun K₁ ≤ toFun K₂
  sup_disjoint' :
    ∀ K₁ K₂ : Compacts G, Disjoint (K₁ : Set G) K₂ → IsClosed (K₁ : Set G) → IsClosed (K₂ : Set G)
      → toFun (K₁ ⊔ K₂) = toFun K₁ + toFun K₂
  sup_le' : ∀ K₁ K₂ : Compacts G, toFun (K₁ ⊔ K₂) ≤ toFun K₁ + toFun K₂
goal: Type w

full_name: MeasureTheory.instInhabitedContent
code: instance : Inhabited (Content G) 
goal: Inhabited (MeasureTheory.Content G)

full_name: MeasureTheory.instCoeFunContentForallCompactsENNReal
code: /-- Although the `toFun` field of a content takes values in `ℝ≥0`, we register a coercion to
functions taking values in `ℝ≥0∞` as most constructions below rely on taking iSups and iInfs, which
is more convenient in a complete lattice, and aim at constructing a measure. -/
instance : CoeFun (Content G) fun _ => Compacts G → ℝ≥0∞ 
goal: CoeFun (MeasureTheory.Content G) fun x => TopologicalSpace.Compacts G → ℝ≥0∞

full_name: MeasureTheory.Content.apply_eq_coe_toFun
code: theorem apply_eq_coe_toFun (K : Compacts G) : μ K = μ.toFun K 
goal: (fun s => ↑(μ.toFun s)) K = ↑(μ.toFun K)

full_name: MeasureTheory.Content.mono
code: theorem mono (K₁ K₂ : Compacts G) (h : (K₁ : Set G) ⊆ K₂) : μ K₁ ≤ μ K₂ 
goal: (fun s => ↑(μ.toFun s)) K₁ ≤ (fun s => ↑(μ.toFun s)) K₂

full_name: MeasureTheory.Content.sup_disjoint
code: theorem sup_disjoint (K₁ K₂ : Compacts G) (h : Disjoint (K₁ : Set G) K₂)
    (h₁ : IsClosed (K₁ : Set G)) (h₂ : IsClosed (K₂ : Set G)) :
    μ (K₁ ⊔ K₂) = μ K₁ + μ K₂ 
goal: (fun s => ↑(μ.toFun s)) (K₁ ⊔ K₂) = (fun s => ↑(μ.toFun s)) K₁ + (fun s => ↑(μ.toFun s)) K₂

full_name: MeasureTheory.Content.sup_le
code: theorem sup_le (K₁ K₂ : Compacts G) : μ (K₁ ⊔ K₂) ≤ μ K₁ + μ K₂ 
goal: (fun s => ↑(μ.toFun s)) (K₁ ⊔ K₂) ≤ (fun s => ↑(μ.toFun s)) K₁ + (fun s => ↑(μ.toFun s)) K₂

full_name: MeasureTheory.Content.lt_top
code: theorem lt_top (K : Compacts G) : μ K < ∞ 
goal: (fun s => ↑(μ.toFun s)) K < ⊤

full_name: MeasureTheory.Content.empty
code: theorem empty : μ ⊥ = 0 
goal: (fun s => ↑(μ.toFun s)) ⊥ = 0

full_name: MeasureTheory.Content.innerContent
code: /-- Constructing the inner content of a content. From a content defined on the compact sets, we
  obtain a function defined on all open sets, by taking the supremum of the content of all compact
  subsets. -/
def innerContent (U : Opens G) : ℝ≥0∞ 
goal: ℝ≥0∞

full_name: MeasureTheory.Content.le_innerContent
code: theorem le_innerContent (K : Compacts G) (U : Opens G) (h2 : (K : Set G) ⊆ U) :
    μ K ≤ μ.innerContent U 
goal: (fun s => ↑(μ.toFun s)) K ≤ μ.innerContent U

full_name: MeasureTheory.Content.innerContent_le
code: theorem innerContent_le (U : Opens G) (K : Compacts G) (h2 : (U : Set G) ⊆ K) :
    μ.innerContent U ≤ μ K 
goal: μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K

full_name: MeasureTheory.Content.innerContent_of_isCompact
code: theorem innerContent_of_isCompact {K : Set G} (h1K : IsCompact K) (h2K : IsOpen K) :
    μ.innerContent ⟨K, h2K⟩ = μ ⟨K, h1K⟩ 
goal: μ.innerContent { carrier := K, is_open' := h2K } = (fun s => ↑(μ.toFun s)) { carrier := K, isCompact' := h1K }

full_name: MeasureTheory.Content.innerContent_bot
code: theorem innerContent_bot : μ.innerContent ⊥ = 0 
goal: μ.innerContent ⊥ = 0

full_name: MeasureTheory.Content.innerContent_mono
code: /-- This is "unbundled", because that is required for the API of `inducedOuterMeasure`. -/
theorem innerContent_mono ⦃U V : Set G⦄ (hU : IsOpen U) (hV : IsOpen V) (h2 : U ⊆ V) :
    μ.innerContent ⟨U, hU⟩ ≤ μ.innerContent ⟨V, hV⟩ 
goal: μ.innerContent { carrier := U, is_open' := hU } ≤ μ.innerContent { carrier := V, is_open' := hV }

full_name: MeasureTheory.Content.innerContent_exists_compact
code: theorem innerContent_exists_compact {U : Opens G} (hU : μ.innerContent U ≠ ∞) {ε : ℝ≥0}
    (hε : ε ≠ 0) : ∃ K : Compacts G, (K : Set G) ⊆ U ∧ μ.innerContent U ≤ μ K + ε 
goal: ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

full_name: MeasureTheory.Content.innerContent_iSup_nat
code: /-- The inner content of a supremum of opens is at most the sum of the individual inner contents. -/
theorem innerContent_iSup_nat [R1Space G] (U : ℕ → Opens G) :
    μ.innerContent (⨆ i : ℕ, U i) ≤ ∑' i : ℕ, μ.innerContent (U i) 
goal: μ.innerContent (⨆ i, U i) ≤ ∑' (i : ℕ), μ.innerContent (U i)

full_name: MeasureTheory.Content.innerContent_iUnion_nat
code: /-- The inner content of a union of sets is at most the sum of the individual inner contents.
  This is the "unbundled" version of `innerContent_iSup_nat`.
  It is required for the API of `inducedOuterMeasure`. -/
theorem innerContent_iUnion_nat [R1Space G] ⦃U : ℕ → Set G⦄
    (hU : ∀ i : ℕ, IsOpen (U i)) :
    μ.innerContent ⟨⋃ i : ℕ, U i, isOpen_iUnion hU⟩ ≤ ∑' i : ℕ, μ.innerContent ⟨U i, hU i⟩ 
goal: μ.innerContent { carrier := ⋃ i, U i, is_open' := ⋯ } ≤ ∑' (i : ℕ), μ.innerContent { carrier := U i, is_open' := ⋯ }

full_name: MeasureTheory.Content.innerContent_comap
code: theorem innerContent_comap (f : G ≃ₜ G) (h : ∀ ⦃K : Compacts G⦄, μ (K.map f f.continuous) = μ K)
    (U : Opens G) : μ.innerContent (Opens.comap f.toContinuousMap U) = μ.innerContent U 
goal: μ.innerContent ((TopologicalSpace.Opens.comap f.toContinuousMap) U) = μ.innerContent U

full_name: MeasureTheory.Content.is_add_left_invariant_innerContent
code: @[to_additive]
theorem is_mul_left_invariant_innerContent [Group G] [TopologicalGroup G]
    (h : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (g : G)
    (U : Opens G) :
    μ.innerContent (Opens.comap (Homeomorph.mulLeft g).toContinuousMap U) = μ.innerContent U 
goal: μ.innerContent ((TopologicalSpace.Opens.comap (Homeomorph.addLeft g).toContinuousMap) U) = μ.innerContent U

full_name: MeasureTheory.Content.is_mul_left_invariant_innerContent
code: @[to_additive]
theorem is_mul_left_invariant_innerContent [Group G] [TopologicalGroup G]
    (h : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (g : G)
    (U : Opens G) :
    μ.innerContent (Opens.comap (Homeomorph.mulLeft g).toContinuousMap U) = μ.innerContent U 
goal: μ.innerContent ((TopologicalSpace.Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U) = μ.innerContent U

full_name: MeasureTheory.Content.innerContent_pos_of_is_mul_left_invariant
code: @[to_additive]
theorem innerContent_pos_of_is_mul_left_invariant [Group G] [TopologicalGroup G]
    (h3 : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (K : Compacts G)
    (hK : μ K ≠ 0) (U : Opens G) (hU : (U : Set G).Nonempty) : 0 < μ.innerContent U 
goal: 0 < μ.innerContent U

full_name: MeasureTheory.Content.innerContent_pos_of_is_add_left_invariant
code: @[to_additive]
theorem innerContent_pos_of_is_mul_left_invariant [Group G] [TopologicalGroup G]
    (h3 : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (K : Compacts G)
    (hK : μ K ≠ 0) (U : Opens G) (hU : (U : Set G).Nonempty) : 0 < μ.innerContent U 
goal: 0 < μ.innerContent U

full_name: MeasureTheory.Content.innerContent_mono'
code: theorem innerContent_mono' ⦃U V : Set G⦄ (hU : IsOpen U) (hV : IsOpen V) (h2 : U ⊆ V) :
    μ.innerContent ⟨U, hU⟩ ≤ μ.innerContent ⟨V, hV⟩ 
goal: μ.innerContent { carrier := U, is_open' := hU } ≤ μ.innerContent { carrier := V, is_open' := hV }

full_name: MeasureTheory.Content.outerMeasure
code: /-- Extending a content on compact sets to an outer measure on all sets. -/
protected def outerMeasure : OuterMeasure G 
goal: MeasureTheory.OuterMeasure G

full_name: MeasureTheory.Content.outerMeasure_opens
code: theorem outerMeasure_opens (U : Opens G) : μ.outerMeasure U = μ.innerContent U 
goal: μ.outerMeasure ↑U = μ.innerContent U

full_name: MeasureTheory.Content.outerMeasure_of_isOpen
code: theorem outerMeasure_of_isOpen (U : Set G) (hU : IsOpen U) :
    μ.outerMeasure U = μ.innerContent ⟨U, hU⟩ 
goal: μ.outerMeasure U = μ.innerContent { carrier := U, is_open' := hU }

full_name: MeasureTheory.Content.outerMeasure_le
code: theorem outerMeasure_le (U : Opens G) (K : Compacts G) (hUK : (U : Set G) ⊆ K) :
    μ.outerMeasure U ≤ μ K 
goal: μ.outerMeasure ↑U ≤ (fun s => ↑(μ.toFun s)) K

full_name: MeasureTheory.Content.le_outerMeasure_compacts
code: theorem le_outerMeasure_compacts (K : Compacts G) : μ K ≤ μ.outerMeasure K 
goal: (fun s => ↑(μ.toFun s)) K ≤ μ.outerMeasure ↑K

full_name: MeasureTheory.Content.outerMeasure_eq_iInf
code: theorem outerMeasure_eq_iInf (A : Set G) :
    μ.outerMeasure A = ⨅ (U : Set G) (hU : IsOpen U) (_ : A ⊆ U), μ.innerContent ⟨U, hU⟩ 
goal: μ.outerMeasure A = ⨅ U, ⨅ (hU : IsOpen U), ⨅ (_ : A ⊆ U), μ.innerContent { carrier := U, is_open' := hU }

full_name: MeasureTheory.Content.outerMeasure_interior_compacts
code: theorem outerMeasure_interior_compacts (K : Compacts G) : μ.outerMeasure (interior K) ≤ μ K 
goal: μ.outerMeasure (interior ↑K) ≤ (fun s => ↑(μ.toFun s)) K

full_name: MeasureTheory.Content.outerMeasure_exists_compact
code: theorem outerMeasure_exists_compact {U : Opens G} (hU : μ.outerMeasure U ≠ ∞) {ε : ℝ≥0}
    (hε : ε ≠ 0) : ∃ K : Compacts G, (K : Set G) ⊆ U ∧ μ.outerMeasure U ≤ μ.outerMeasure K + ε 
goal: ∃ K, ↑K ⊆ ↑U ∧ μ.outerMeasure ↑U ≤ μ.outerMeasure ↑K + ↑ε

full_name: MeasureTheory.Content.outerMeasure_exists_open
code: theorem outerMeasure_exists_open {A : Set G} (hA : μ.outerMeasure A ≠ ∞) {ε : ℝ≥0} (hε : ε ≠ 0) :
    ∃ U : Opens G, A ⊆ U ∧ μ.outerMeasure U ≤ μ.outerMeasure A + ε 
goal: ∃ U, A ⊆ ↑U ∧ μ.outerMeasure ↑U ≤ μ.outerMeasure A + ↑ε

full_name: MeasureTheory.Content.outerMeasure_preimage
code: theorem outerMeasure_preimage (f : G ≃ₜ G) (h : ∀ ⦃K : Compacts G⦄, μ (K.map f f.continuous) = μ K)
    (A : Set G) : μ.outerMeasure (f ⁻¹' A) = μ.outerMeasure A 
goal: μ.outerMeasure (⇑f ⁻¹' A) = μ.outerMeasure A

full_name: MeasureTheory.Content.outerMeasure_lt_top_of_isCompact
code: theorem outerMeasure_lt_top_of_isCompact [WeaklyLocallyCompactSpace G]
    {K : Set G} (hK : IsCompact K) :
    μ.outerMeasure K < ∞ 
goal: μ.outerMeasure K < ⊤

full_name: MeasureTheory.Content.is_add_left_invariant_outerMeasure
code: @[to_additive]
theorem is_mul_left_invariant_outerMeasure [Group G] [TopologicalGroup G]
    (h : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (g : G)
    (A : Set G) : μ.outerMeasure ((g * ·) ⁻¹' A) = μ.outerMeasure A 
goal: μ.outerMeasure ((fun x => g + x) ⁻¹' A) = μ.outerMeasure A

full_name: MeasureTheory.Content.is_mul_left_invariant_outerMeasure
code: @[to_additive]
theorem is_mul_left_invariant_outerMeasure [Group G] [TopologicalGroup G]
    (h : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (g : G)
    (A : Set G) : μ.outerMeasure ((g * ·) ⁻¹' A) = μ.outerMeasure A 
goal: μ.outerMeasure ((fun x => g * x) ⁻¹' A) = μ.outerMeasure A

full_name: MeasureTheory.Content.outerMeasure_caratheodory
code: theorem outerMeasure_caratheodory (A : Set G) :
    MeasurableSet[μ.outerMeasure.caratheodory] A ↔
      ∀ U : Opens G, μ.outerMeasure (U ∩ A) + μ.outerMeasure (U \ A) ≤ μ.outerMeasure U 
goal: MeasurableSet A ↔
  ∀ (U : TopologicalSpace.Opens G), μ.outerMeasure (↑U ∩ A) + μ.outerMeasure (↑U \ A) ≤ μ.outerMeasure ↑U

full_name: MeasureTheory.Content.outerMeasure_pos_of_is_mul_left_invariant
code: @[to_additive]
theorem outerMeasure_pos_of_is_mul_left_invariant [Group G] [TopologicalGroup G]
    (h3 : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (K : Compacts G)
    (hK : μ K ≠ 0) {U : Set G} (h1U : IsOpen U) (h2U : U.Nonempty) : 0 < μ.outerMeasure U 
goal: 0 < μ.outerMeasure U

full_name: MeasureTheory.Content.outerMeasure_pos_of_is_add_left_invariant
code: @[to_additive]
theorem outerMeasure_pos_of_is_mul_left_invariant [Group G] [TopologicalGroup G]
    (h3 : ∀ (g : G) {K : Compacts G}, μ (K.map _ <| continuous_mul_left g) = μ K) (K : Compacts G)
    (hK : μ K ≠ 0) {U : Set G} (h1U : IsOpen U) (h2U : U.Nonempty) : 0 < μ.outerMeasure U 
goal: 0 < μ.outerMeasure U

full_name: MeasureTheory.Content.borel_le_caratheodory
code: /-- For the outer measure coming from a content, all Borel sets are measurable. -/
theorem borel_le_caratheodory : S ≤ μ.outerMeasure.caratheodory 
goal: S ≤ μ.outerMeasure.caratheodory

full_name: MeasureTheory.Content.measure
code: /-- The measure induced by the outer measure coming from a content, on the Borel sigma-algebra. -/
protected def measure : Measure G 
goal: MeasureTheory.Measure G

full_name: MeasureTheory.Content.measure_apply
code: theorem measure_apply {s : Set G} (hs : MeasurableSet s) : μ.measure s = μ.outerMeasure s 
goal: μ.measure s = μ.outerMeasure s

full_name: MeasureTheory.Content.outerRegular
code: instance outerRegular : μ.measure.OuterRegular 
goal: μ.measure.OuterRegular

full_name: MeasureTheory.Content.regular
code: /-- In a locally compact space, any measure constructed from a content is regular. -/
instance regular [WeaklyLocallyCompactSpace G] : μ.measure.Regular 
goal: μ.measure.Regular

full_name: MeasureTheory.Content.ContentRegular
code: /-- A content `μ` is called regular if for every compact set `K`,
  `μ(K) = inf {μ(K') : K ⊂ int K' ⊂ K'}`. See Paul Halmos (1950), Measure Theory, §54-/
def ContentRegular 
goal: Prop

full_name: MeasureTheory.Content.contentRegular_exists_compact
code: theorem contentRegular_exists_compact (H : ContentRegular μ) (K : TopologicalSpace.Compacts G)
    {ε : NNReal} (hε : ε ≠ 0) :
    ∃ K' : TopologicalSpace.Compacts G, K.carrier ⊆ interior K'.carrier ∧ μ K' ≤ μ K + ε 
goal: ∃ K', K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(μ.toFun s)) K' ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

full_name: MeasureTheory.Content.measure_eq_content_of_regular
code: /-- If `μ` is a regular content, then the measure induced by `μ` will agree with `μ`
  on compact sets. -/
theorem measure_eq_content_of_regular (H : MeasureTheory.Content.ContentRegular μ)
    (K : TopologicalSpace.Compacts G) : μ.measure ↑K = μ K 
goal: μ.measure ↑K = (fun s => ↑(μ.toFun s)) K