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.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)

tactic: rw [intervalIntegrable_iff'] at hf ⊢
state_before: case inr
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c ≠ 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)

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

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.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ IntegrableOn (fun x => f (c * x)) [[a / c, b / c]]

tactic: convert hf using 1
state_before: case inr
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
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]])

tactic: rw [hc]
state_before: case inl
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)

tactic: simp
state_before: case inl
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
hc : c = 0
⊢ IntervalIntegrable (fun x => f (0 * x)) volume (a / 0) (b / 0)

tactic: simpa
state_before: ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ ENNReal.ofReal (Abs.abs c⁻¹) ≠ 0

tactic: ext
state_before: case h.e'_5
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ ((fun x => f (c * x)) ∘ fun x => x * c⁻¹) = f

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

tactic: congr 1
state_before: case h.e'_5.h
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ f (c * (x✝ * c⁻¹)) = f x✝

tactic: field_simp
state_before: case h.e'_5.h.e_a
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ c * (x✝ * c⁻¹) = x✝

tactic: ring
state_before: case h.e'_5.h.e_a
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
x✝ : ℝ
⊢ c * x✝ = x✝ * c

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

tactic: field_simp [hc]
state_before: case h.e'_6
ι : Type ?u.6953593
𝕜 : Type ?u.6953596
E : Type u_1
F : Type ?u.6953602
A✝ : Type ?u.6953605
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A✝
f g : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
hf : IntegrableOn f [[a, b]]
c : ℝ
hc : c ≠ 0
A : MeasurableEmbedding fun x => x * c⁻¹
⊢ [[a / c / c⁻¹, b / c / c⁻¹]] = [[a, b]]