Theorem: IntervalIntegrable.comp_mul_left
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rcases eq_or_ne c 0 with (hc | hc)
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)
state_after: case inl
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)

case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c ≠ 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)

tactic: rw [intervalIntegrable_iff'] at hf ⊢
state_before: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c ≠ 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)
state_after: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
⊢ IntegrableOn (fun x => f (c * x)) [[a / c, b / c]] volume

tactic: have A : MeasurableEmbedding fun x => x * c⁻¹ :=
  (Homeomorph.mulRight₀ _ (inv_ne_zero hc)).closedEmbedding.measurableEmbedding
state_before: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
⊢ IntegrableOn (fun x => f (c * x)) [[a / c, b / c]] volume
state_after: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ IntegrableOn (fun x => f (c * x)) [[a / c, b / c]] volume

tactic: rw [← Real.smul_map_volume_mul_right (inv_ne_zero hc), IntegrableOn, Measure.restrict_smul,
  integrable_smul_measure (by simpa : ENNReal.ofReal |c⁻¹| ≠ 0) ENNReal.ofReal_ne_top,
  ← IntegrableOn, MeasurableEmbedding.integrableOn_map_iff A]
state_before: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ IntegrableOn (fun x => f (c * x)) [[a / c, b / c]] volume
state_after: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ IntegrableOn ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) ((fun x => x * c⁻¹) ⁻¹' [[a / c, b / c]]) volume

tactic: convert hf using 1
state_before: case inr
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ IntegrableOn ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) ((fun x => x * c⁻¹) ⁻¹' [[a / c, b / c]]) volume
state_after: case h.e'_5
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) = f

case h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ (fun x => x * c⁻¹) ⁻¹' [[a / c, b / c]] = [[a, b]]

tactic: rw [hc]
state_before: case inl
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)
state_after: case inl
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (0 * x)) volume (a / 0) (b / 0)

tactic: simp
state_before: case inl
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (0 * x)) volume (a / 0) (b / 0)
state_after: no goals

tactic: simpa
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ ENNReal.ofReal |c⁻¹| ≠ 0
state_after: no goals

tactic: ext
state_before: case h.e'_5
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) = f
state_after: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) x✝ = f x✝

tactic: simp only [comp_apply]
state_before: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) x✝ = f x✝
state_after: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ f (c * (x✝ * c⁻¹)) = f x✝

tactic: congr 1
state_before: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ f (c * (x✝ * c⁻¹)) = f x✝
state_after: case h.e'_5.h.e_a
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ c * (x✝ * c⁻¹) = x✝

tactic: field_simp
state_before: case h.e'_5.h.e_a
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ c * (x✝ * c⁻¹) = x✝
state_after: no goals

tactic: rw [preimage_mul_const_uIcc (inv_ne_zero hc)]
state_before: case h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ (fun x => x * c⁻¹) ⁻¹' [[a / c, b / c]] = [[a, b]]
state_after: case h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ [[a / c / c⁻¹, b / c / c⁻¹]] = [[a, b]]

tactic: field_simp [hc]
state_before: case h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A✝ : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntegrableOn f [[a, b]] volume
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ [[a / c / c⁻¹, b / c / c⁻¹]] = [[a, b]]
state_after: no goals