Theorem: integral_mul_rpow_one_add_sq
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: have : ∀ x s : ℝ, (((↑1 + x ^ 2) ^ s : ℝ) : ℂ) = (1 + (x : ℂ) ^ 2) ^ (s:ℂ) := by
  intro x s
  norm_cast
  rw [ofReal_cpow, ofReal_add, ofReal_pow, ofReal_one]
  exact add_nonneg zero_le_one (sq_nonneg x)
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
⊢ (∫ (x : ℝ) in a..b, x * (1 + x ^ 2) ^ t) =
    (1 + b ^ 2) ^ (t + 1) / (2 * (t + 1)) - (1 + a ^ 2) ^ (t + 1) / (2 * (t + 1))

tactic: rw [← ofReal_inj]
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ (∫ (x : ℝ) in a..b, x * (1 + x ^ 2) ^ t) =
    (1 + b ^ 2) ^ (t + 1) / (2 * (t + 1)) - (1 + a ^ 2) ^ (t + 1) / (2 * (t + 1))

tactic: convert integral_mul_cpow_one_add_sq (_ : (t : ℂ) ≠ -1)
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ↑(∫ (x : ℝ) in a..b, x * (1 + x ^ 2) ^ t) =
    ↑((1 + b ^ 2) ^ (t + 1) / (2 * (t + 1)) - (1 + a ^ 2) ^ (t + 1) / (2 * (t + 1)))

tactic: intro x s
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
⊢ ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s

tactic: norm_cast
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
x s : ℝ
⊢ ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s

tactic: rw [ofReal_cpow, ofReal_add, ofReal_pow, ofReal_one]
state_before: a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
x s : ℝ
⊢ ↑((1 + x ^ 2) ^ s) = ↑(1 + x ^ 2) ^ ↑s

tactic: exact add_nonneg zero_le_one (sq_nonneg x)
state_before: case hx
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
x s : ℝ
⊢ 0 ≤ 1 + x ^ 2

tactic: rw [← intervalIntegral.integral_ofReal]
state_before: case h.e'_2
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ↑(∫ (x : ℝ) in a..b, x * (1 + x ^ 2) ^ t) = ∫ (x : ℝ) in ?convert_1..?convert_2, ↑x * (1 + ↑x ^ 2) ^ ↑t

tactic: congr with x : 1
state_before: case h.e'_2
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ (∫ (x : ℝ) in a..b, ↑(x * (1 + x ^ 2) ^ t)) = ∫ (x : ℝ) in ?convert_1..?convert_2, ↑x * (1 + ↑x ^ 2) ^ ↑t

case convert_1
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ℝ

case convert_2
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ℝ

tactic: rw [ofReal_mul, this x t]
state_before: case h.e'_2.e_f.h
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
x : ℝ
⊢ ↑(x * (1 + x ^ 2) ^ t) = ↑x * (1 + ↑x ^ 2) ^ ↑t

tactic: norm_cast
state_before: case h.e'_2.e_f.h
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
x : ℝ
⊢ ↑x * (↑1 + ↑x ^ 2) ^ ↑t = ↑x * (1 + ↑x ^ 2) ^ ↑t

tactic: simp_rw [ofReal_sub, ofReal_div, this a (t + 1), this b (t + 1)]
state_before: case h.e'_3
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ↑((1 + b ^ 2) ^ (t + 1) / (2 * (t + 1)) - (1 + a ^ 2) ^ (t + 1) / (2 * (t + 1))) =
    (1 + ↑b ^ 2) ^ (↑t + 1) / (↑2 * (↑t + 1)) - (1 + ↑a ^ 2) ^ (↑t + 1) / (2 * (↑t + 1))

tactic: push_cast
state_before: case h.e'_3
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ (↑1 + ↑b ^ 2) ^ ↑(t + 1) / ↑(2 * (t + 1)) - (↑1 + ↑a ^ 2) ^ ↑(t + 1) / ↑(2 * (t + 1)) =
    (1 + ↑b ^ 2) ^ (↑t + 1) / (↑2 * (↑t + 1)) - (1 + ↑a ^ 2) ^ (↑t + 1) / (2 * (↑t + 1))

tactic: rfl
state_before: case h.e'_3
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ (1 + ↑b ^ 2) ^ (↑t + 1) / (2 * (↑t + 1)) - (1 + ↑a ^ 2) ^ (↑t + 1) / (2 * (↑t + 1)) =
    (1 + ↑b ^ 2) ^ (↑t + 1) / (2 * (↑t + 1)) - (1 + ↑a ^ 2) ^ (↑t + 1) / (2 * (↑t + 1))

tactic: rw [← ofReal_one, ← ofReal_neg, Ne.def, ofReal_inj]
state_before: case convert_3
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ↑t ≠ -1

tactic: exact ht
state_before: case convert_3
a b : ℝ
n : ℕ
t : ℝ
ht : t ≠ -1
this : ∀ (x s : ℝ), ↑((1 + x ^ 2) ^ s) = (↑1 + ↑x ^ 2) ^ ↑s
⊢ ¬t = -1