Theorem: MeasureTheory.measure_mul_measure_eq
File: Mathlib/MeasureTheory/Group/Prod.lean

Proof steps:
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s t : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
⊢ μ' s * ν' t = ν' s * μ' t
state_after: case inr
G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s t : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
this : ∀ (s : Set G), ν' s ≠ 0 → ν' s ≠ ⊤ → MeasurableSet s → μ' s * ν' t = ν' s * μ' t
hs : ¬MeasurableSet s
⊢ μ' s * ν' t = ν' s * μ' t

G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
t s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
⊢ μ' s * ν' t = ν' s * μ' t
tactic: wlog hs : MeasurableSet s generalizing s
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
t s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
⊢ μ' s * ν' t = ν' s * μ' t
state_after: case inr
G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
t s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
this : ∀ (t : Set G), MeasurableSet t → μ' s * ν' t = ν' s * μ' t
ht : ¬MeasurableSet t
⊢ μ' s * ν' t = ν' s * μ' t

G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
⊢ μ' s * ν' t = ν' s * μ' t
tactic: wlog ht : MeasurableSet t generalizing t
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
⊢ μ' s * ν' t = ν' s * μ' t
state_after: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 :
  ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂ν'
⊢ μ' s * ν' t = ν' s * μ' t
tactic: have h1 := measure_lintegral_div_measure ν' ν' hs h2s h3s (t.indicator fun _ => 1)
    (measurable_const.indicator ht)
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 :
  ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂ν'
⊢ μ' s * ν' t = ν' s * μ' t
state_after: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 :
  ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂ν'
h2 :
  μ' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂μ'
⊢ μ' s * ν' t = ν' s * μ' t
tactic: have h2 := measure_lintegral_div_measure μ' ν' hs h2s h3s (t.indicator fun _ => 1)
    (measurable_const.indicator ht)
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 :
  ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂ν'
h2 :
  μ' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' =
    ∫⁻ (x : G), t.indicator (fun x => 1) x ∂μ'
⊢ μ' s * ν' t = ν' s * μ' t
state_after: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 : ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' = ν' t
h2 : μ' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' = μ' t
⊢ μ' s * ν' t = ν' s * μ' t
tactic: rw [lintegral_indicator _ ht, setLIntegral_one] at h1 h2
state_before: G : Type u_1
inst✝¹⁰ : MeasurableSpace G
inst✝⁹ : Group G
inst✝⁸ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁷ : SFinite ν
inst✝⁶ : SFinite μ
s✝ : Set G
inst✝⁵ : MeasurableInv G
inst✝⁴ : μ.IsMulLeftInvariant
μ' ν' : Measure G
inst✝³ : SigmaFinite μ'
inst✝² : SigmaFinite ν'
inst✝¹ : μ'.IsMulLeftInvariant
inst✝ : ν'.IsMulLeftInvariant
s : Set G
h2s : ν' s ≠ 0
h3s : ν' s ≠ ⊤
hs : MeasurableSet s
t : Set G
ht : MeasurableSet t
h1 : ν' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' = ν' t
h2 : μ' s * ∫⁻ (y : G), t.indicator (fun x => 1) y⁻¹ / ν' ((fun x => x * y⁻¹) ⁻¹' s) ∂ν' = μ' t
⊢ μ' s * ν' t = ν' s * μ' t
state_after: no goals
tactic: rw [← h1, mul_left_comm, h2]