Theorem: Function.Periodic.intervalIntegral_add_zsmul_eq
File: Mathlib/MeasureTheory/Integral/Periodic.lean

tactic: suffices (∫ x in (0)..(n • T), f x) = n • ∫ x in (0)..T, f x by
  simp only [hf.intervalIntegral_add_eq t 0, (hf.zsmul n).intervalIntegral_add_eq t 0, zero_add,
    this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
⊢ ∫ (x : ℝ) in t..t + n • T, f x = n • ∫ (x : ℝ) in t..t + T, f x
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
⊢ ∫ (x : ℝ) in 0 ..n • T, f x = n • ∫ (x : ℝ) in 0 ..T, f x

tactic: cases' n with n n
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
⊢ ∫ (x : ℝ) in 0 ..n • T, f x = n • ∫ (x : ℝ) in 0 ..T, f x
state_after: case ofNat
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.ofNat n • T, f x = Int.ofNat n • ∫ (x : ℝ) in 0 ..T, f x

case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = Int.negSucc n • ∫ (x : ℝ) in 0 ..T, f x

tactic: simp only [hf.intervalIntegral_add_eq t 0, (hf.zsmul n).intervalIntegral_add_eq t 0, zero_add,
  this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∫ (x : ℝ) in 0 ..n • T, f x = n • ∫ (x : ℝ) in 0 ..T, f x
⊢ ∫ (x : ℝ) in t..t + n • T, f x = n • ∫ (x : ℝ) in t..t + T, f x
state_after: no goals

tactic: induction' m with m ih
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
m : ℕ
⊢ ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
state_after: case zero
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
⊢ ∫ (x : ℝ) in 0 ..0 • T, f x = 0 • ∫ (x : ℝ) in 0 ..T, f x

case succ
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
m : ℕ
ih : ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
⊢ ∫ (x : ℝ) in 0 ..(m + 1) • T, f x = (m + 1) • ∫ (x : ℝ) in 0 ..T, f x

tactic: simp
state_before: case zero
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
⊢ ∫ (x : ℝ) in 0 ..0 • T, f x = 0 • ∫ (x : ℝ) in 0 ..T, f x
state_after: no goals

tactic: simp only [succ_nsmul, hf.intervalIntegral_add_eq_add 0 (m • T) h_int, ih, zero_add]
state_before: case succ
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
n : ℤ
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
m : ℕ
ih : ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
⊢ ∫ (x : ℝ) in 0 ..(m + 1) • T, f x = (m + 1) • ∫ (x : ℝ) in 0 ..T, f x
state_after: no goals

tactic: simp [← this n]
state_before: case ofNat
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.ofNat n • T, f x = Int.ofNat n • ∫ (x : ℝ) in 0 ..T, f x
state_after: no goals

tactic: conv_rhs => rw [negSucc_zsmul]
state_before: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = Int.negSucc n • ∫ (x : ℝ) in 0 ..T, f x
state_after: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = -((n + 1) • ∫ (x : ℝ) in 0 ..T, f x)

tactic: have h₀ : Int.negSucc n • T + (n + 1) • T = 0 := by simp; linarith
state_before: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = -((n + 1) • ∫ (x : ℝ) in 0 ..T, f x)
state_after: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
h₀ : Int.negSucc n • T + (n + 1) • T = 0
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = -((n + 1) • ∫ (x : ℝ) in 0 ..T, f x)

tactic: rw [integral_symm, ← (hf.nsmul (n + 1)).funext, neg_inj]
state_before: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
h₀ : Int.negSucc n • T + (n + 1) • T = 0
⊢ ∫ (x : ℝ) in 0 ..Int.negSucc n • T, f x = -((n + 1) • ∫ (x : ℝ) in 0 ..T, f x)
state_after: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
h₀ : Int.negSucc n • T + (n + 1) • T = 0
⊢ ∫ (x : ℝ) in Int.negSucc n • T..0, (fun x => f (x + (n + 1) • T)) x =
    (n + 1) • ∫ (x : ℝ) in 0 ..T, (fun x => f (x + (n + 1) • T)) x

tactic: simp_rw [integral_comp_add_right, h₀, zero_add, this (n + 1), add_comm T,
  hf.intervalIntegral_add_eq ((n + 1) • T) 0, zero_add]
state_before: case negSucc
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
h₀ : Int.negSucc n • T + (n + 1) • T = 0
⊢ ∫ (x : ℝ) in Int.negSucc n • T..0, (fun x => f (x + (n + 1) • T)) x =
    (n + 1) • ∫ (x : ℝ) in 0 ..T, (fun x => f (x + (n + 1) • T)) x
state_after: no goals

tactic: simp
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ Int.negSucc n • T + (n + 1) • T = 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ (-1 + -↑n) * T + (↑n + 1) * T = 0

tactic: linarith
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
T : ℝ
hf : Periodic f T
t : ℝ
h_int : ∀ (t₁ t₂ : ℝ), IntervalIntegrable f volume t₁ t₂
this : ∀ (m : ℕ), ∫ (x : ℝ) in 0 ..m • T, f x = m • ∫ (x : ℝ) in 0 ..T, f x
n : ℕ
⊢ (-1 + -↑n) * T + (↑n + 1) * T = 0
state_after: no goals