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

tactic: suffices
  Measurable fun y =>
    μ ((fun x => (x, y)) ⁻¹' ((fun z : G × G => ((1 : G), z.1 * z.2)) ⁻¹' univ ×ˢ s))
  by convert this using 1; ext1 x; congr 1 with y : 1; simp
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun x => μ ((fun y => y * x) ⁻¹' s)
state_after: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))

tactic: apply measurable_measure_prod_mk_right
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
state_after: case hs
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSet ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)

tactic: apply measurable_const.prod_mk measurable_mul (MeasurableSet.univ.prod hs)
state_before: case hs
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSet ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)
state_after: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSpace G

tactic: infer_instance
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSpace G
state_after: no goals

tactic: convert this using 1
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
⊢ Measurable fun x => μ ((fun y => y * x) ⁻¹' s)
state_after: case h.e'_5
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
⊢ (fun x => μ ((fun y => y * x) ⁻¹' s)) = fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))

tactic: ext1 x
state_before: case h.e'_5
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
⊢ (fun x => μ ((fun y => y * x) ⁻¹' s)) = fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
state_after: case h.e'_5.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
x : G
⊢ μ ((fun y => y * x) ⁻¹' s) = μ ((fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))

tactic: congr 1 with y : 1
state_before: case h.e'_5.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
x : G
⊢ μ ((fun y => y * x) ⁻¹' s) = μ ((fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
state_after: case h.e'_5.h.h.e_6.h.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
x y : G
⊢ y ∈ (fun y => y * x) ⁻¹' s ↔ y ∈ (fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)

tactic: simp
state_before: case h.e'_5.h.h.e_6.h.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
x y : G
⊢ y ∈ (fun y => y * x) ⁻¹' s ↔ y ∈ (fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)
state_after: no goals