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

tactic: have : (interior (U : Set G)).Nonempty := by rwa [U.isOpen.interior_eq]
state_before: G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
⊢ 0 < μ.innerContent U
state_after: G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
⊢ 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✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
⊢ 0 < μ.innerContent U
state_after: case intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑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✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
⊢ 0 < μ.innerContent U
state_after: case intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
⊢ (fun s => ↑(μ.toFun s)) K ≤ ↑s.card * μ.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✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
⊢ (fun s => ↑(μ.toFun s)) K ≤ ↑s.card * μ.innerContent U
state_after: case intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this✝ : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ g ∈ s, (Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U)
⊢ (fun s => ↑(μ.toFun s)) K ≤ ↑s.card * μ.innerContent U

tactic: refine (μ.le_innerContent _ _ this).trans ?_
state_before: case intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this✝ : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ g ∈ s, (Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U)
⊢ (fun s => ↑(μ.toFun s)) K ≤ ↑s.card * μ.innerContent U
state_after: case intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this✝ : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ g ∈ s, (Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U)
⊢ μ.innerContent (⨆ g ∈ s, (Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U) ≤ ↑s.card * μ.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✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this✝ : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
this : ↑K ⊆ ↑(⨆ g ∈ s, (Opens.comap (Homeomorph.mulLeft g).toContinuousMap) U)
⊢ ∑ d ∈ s, μ.innerContent ((Opens.comap (Homeomorph.mulLeft d).toContinuousMap) U) ≤ ↑s.card * μ.innerContent U
state_after: no goals

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

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✝¹ : Group G
inst✝ : TopologicalGroup G
h3 : ∀ (g : G) {K : Compacts G}, (fun s => ↑(μ.toFun s)) (Compacts.map (fun b => g * b) ⋯ K) = (fun s => ↑(μ.toFun s)) K
K : Compacts G
hK : (fun s => ↑(μ.toFun s)) K ≠ 0
U : Opens G
hU : (↑U).Nonempty
this✝ : (interior ↑U).Nonempty
s : Finset G
hs : K.carrier ⊆ ⋃ g ∈ s, (fun x => g * x) ⁻¹' ↑U
this : (fun s => ↑(μ.toFun s)) K ≤ ↑s.card * μ.innerContent U
⊢ 0 < μ.innerContent U
state_after: no goals

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