Theorem: MeasureTheory.Content.innerContent_pos_of_is_mul_left_invariant
File: Mathlib/MeasureTheory/Measure/Content.lean

tactic: have : (interior (U : Set G)).Nonempty
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
⊢ 0 < innerContent μ U

tactic: rwa [U.isOpen.interior_eq]
state_before: case this
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
⊢ Set.Nonempty (interior ↑U)

G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this : Set.Nonempty (interior ↑U)
⊢ 0 < innerContent μ U

tactic: rcases compact_covered_by_mul_left_translates K.2 this with ⟨s, hs⟩
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this : Set.Nonempty (interior ↑U)
⊢ 0 < innerContent μ U

tactic: suffices μ K ≤ s.card * μ.innerContent U by
  exact (ENNReal.mul_pos_iff.mp <| hK.bot_lt.trans_le this).2
state_before: case intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
⊢ 0 < innerContent μ U

tactic: have : (K : Set G) ⊆ ↑(⨆ g ∈ s, Opens.comap (Homeomorph.mulLeft g).toContinuousMap U) := by
  simpa only [Opens.iSup_def, Opens.coe_comap, Subtype.coe_mk]
state_before: case intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
⊢ (fun s => ↑(toFun μ s)) K ≤ ↑(Finset.card s) * innerContent μ U

tactic: refine' (μ.le_innerContent _ _ this).trans _
state_before: case intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this✝ : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ (g : G) (_ : g ∈ s), ↑(Opens.comap (Homeomorph.toContinuousMap (Homeomorph.mulLeft g))) U)
⊢ (fun s => ↑(toFun μ s)) K ≤ ↑(Finset.card s) * innerContent μ U

tactic: simp only [μ.is_mul_left_invariant_innerContent h3, Finset.sum_const, nsmul_eq_mul, le_refl]
state_before: case intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this✝ : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ (g : G) (_ : g ∈ s), ↑(Opens.comap (Homeomorph.toContinuousMap (Homeomorph.mulLeft g))) U)
⊢ (Finset.sum s fun d => innerContent μ (↑(Opens.comap (Homeomorph.toContinuousMap (Homeomorph.mulLeft d))) U)) ≤
    ↑(Finset.card s) * innerContent μ U

tactic: exact (ENNReal.mul_pos_iff.mp <| hK.bot_lt.trans_le this).2
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this✝ : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
this : (fun s => ↑(toFun μ s)) K ≤ ↑(Finset.card s) * innerContent μ U
⊢ 0 < innerContent μ U

tactic: simpa only [Opens.iSup_def, Opens.coe_comap, Subtype.coe_mk]
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : T2Space G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 :
  ∀ (g : G) {K : Compacts G},
    (fun s => ↑(toFun μ s)) (Compacts.map (fun b => g * b) (_ : Continuous fun b => g * b) K) =
      (fun s => ↑(toFun μ s)) K
K : Compacts G
hK : (fun s => ↑(toFun μ s)) K ≠ 0
U : Opens G
hU : Set.Nonempty ↑U
this : Set.Nonempty (interior ↑U)
s : Finset G
hs : K.carrier ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' ↑U
⊢ ↑K ⊆ ↑(⨆ (g : G) (_ : g ∈ s), ↑(Opens.comap (Homeomorph.toContinuousMap (Homeomorph.mulLeft g))) U)