Theorem: Real.hasDerivAt_Gamma_one_half
File: Mathlib/NumberTheory/Harmonic/GammaDeriv.lean

tactic: have h_diff {s : ℝ} (hs : 0 < s) : DifferentiableAt ℝ Gamma s :=
  differentiableAt_Gamma fun m ↦ ((neg_nonpos.mpr m.cast_nonneg).trans_lt hs).ne'
state_before: ⊢ HasDerivAt Gamma (-√π * (γ + 2 * log 2)) (1 / 2)
state_after: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
⊢ HasDerivAt Gamma (-√π * (γ + 2 * log 2)) (1 / 2)

tactic: have h_diff' {s : ℝ} (hs : 0 < s) : DifferentiableAt ℝ (fun s ↦ Gamma (2 * s)) s :=
  .comp (g := Gamma) _ (h_diff <| mul_pos two_pos hs) (differentiableAt_id.const_mul _)
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
⊢ HasDerivAt Gamma (-√π * (γ + 2 * log 2)) (1 / 2)
state_after: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt Gamma (-√π * (γ + 2 * log 2)) (1 / 2)

tactic: refine (h_diff one_half_pos).hasDerivAt.congr_deriv ?_
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt Gamma (-√π * (γ + 2 * log 2)) (1 / 2)
state_after: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma (1 / 2) = -√π * (γ + 2 * log 2)

tactic: rw [deriv_mul, Gamma_one_half_eq,
  add_assoc, ← mul_add, deriv_comp_add_const,
  (by norm_num : 1/2 + 1/2 = (1 : ℝ)), Gamma_one, mul_one,
  eulerMascheroniConstant_eq_neg_deriv, add_neg_self, mul_zero, add_zero]
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma (1 / 2) = deriv (fun s => Gamma s * Gamma (s + 1 / 2)) (1 / 2) + √π * γ
state_after: case hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (1 / 2 + 1 / 2)

case hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (1 / 2)

case hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (s + 1 / 2)) (1 / 2)

tactic: norm_num
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 1 / 2 + 1 / 2 = 1
state_after: no goals

tactic: apply h_diff
state_before: case hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (1 / 2 + 1 / 2)
state_after: case hh.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 1 / 2 + 1 / 2

tactic: norm_num
state_before: case hh.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 1 / 2 + 1 / 2
state_after: no goals

tactic: apply h_diff
state_before: case hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (1 / 2)
state_after: case hc.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 1 / 2

tactic: norm_num
state_before: case hc.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 1 / 2
state_after: no goals

tactic: exact ((h_diff (by norm_num)).hasDerivAt.comp_add_const).differentiableAt
state_before: case hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (s + 1 / 2)) (1 / 2)
state_after: no goals

tactic: norm_num
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 1 / 2 + 1 / 2
state_after: no goals

tactic: rw [funext Gamma_mul_Gamma_add_half]
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma s * Gamma (s + 1 / 2)) (1 / 2) + √π * γ =
    deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s) * √π) (1 / 2) + √π * γ
state_after: no goals

tactic: rw [mul_comm √π, mul_comm √π, deriv_mul_const, add_mul]
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s) * √π) (1 / 2) + √π * γ =
    √π * (deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2) + γ)
state_after: case hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2)

tactic: apply DifferentiableAt.mul
state_before: case hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2)
state_after: case hc.ha
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun y => Gamma (2 * y)) (1 / 2)

case hc.hb
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun y => 2 ^ (1 - 2 * y)) (1 / 2)

tactic: exact .comp (g := Gamma) _ (by apply h_diff; norm_num) (differentiableAt_id.const_mul _)
state_before: case hc.ha
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun y => Gamma (2 * y)) (1 / 2)
state_after: no goals

tactic: apply h_diff
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))
state_after: case hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 2 * (1 / 2)

tactic: norm_num
state_before: case hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 2 * (1 / 2)
state_after: no goals

tactic: exact (differentiableAt_const _).rpow (by fun_prop) two_ne_zero
state_before: case hc.hb
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun y => 2 ^ (1 - 2 * y)) (1 / 2)
state_after: no goals

tactic: fun_prop
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun y => 1 - 2 * y) (1 / 2)
state_after: no goals

tactic: congr 2
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ √π * (deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2) + γ) =
    √π * (deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) + γ)
state_after: case e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2) =
    deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2)

tactic: rw [deriv_mul]
state_before: case e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s) * 2 ^ (1 - 2 * s)) (1 / 2) =
    deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2)
state_after: case e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s)) (1 / 2) * 2 ^ (1 - 2 * (1 / 2)) +
      Gamma (2 * (1 / 2)) * deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) =
    deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2)

case e_a.e_a.hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (2 * s)) (1 / 2)

case e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 ^ (1 - 2 * s)) (1 / 2)

tactic: congr 1 <;> norm_num
state_before: case e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s)) (1 / 2) * 2 ^ (1 - 2 * (1 / 2)) +
      Gamma (2 * (1 / 2)) * deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) =
    deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2)
state_after: no goals

tactic: exact h_diff' one_half_pos
state_before: case e_a.e_a.hc
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => Gamma (2 * s)) (1 / 2)
state_after: no goals

tactic: exact DifferentiableAt.rpow (by fun_prop) (by fun_prop) two_ne_zero
state_before: case e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 ^ (1 - 2 * s)) (1 / 2)
state_after: no goals

tactic: fun_prop
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2) (1 / 2)
state_after: no goals

tactic: fun_prop
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 1 - 2 * s) (1 / 2)
state_after: no goals

tactic: congr 3
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ √π * (deriv (fun s => Gamma (2 * s)) (1 / 2) + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) + γ) =
    √π * (-2 * γ + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) + γ)
state_after: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s)) (1 / 2) = -2 * γ

tactic: change deriv (Gamma ∘ fun s ↦ 2 * s) _ = _
state_before: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => Gamma (2 * s)) (1 / 2) = -2 * γ
state_after: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (Gamma ∘ fun s => 2 * s) (1 / 2) = -2 * γ

tactic: rw [deriv.comp, deriv_const_mul, mul_one_div, div_self two_ne_zero, deriv_id'']
state_before: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (Gamma ∘ fun s => 2 * s) (1 / 2) = -2 * γ
state_after: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma 1 * (2 * (fun x => 1) (1 / 2)) = -2 * γ

case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)

case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))

case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)

tactic: dsimp only
state_before: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma 1 * (2 * (fun x => 1) (1 / 2)) = -2 * γ

case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)

case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))

case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)
state_after: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma 1 * (2 * 1) = -2 * γ

case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)

case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))

case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)

tactic: rw [mul_one, mul_comm, hasDerivAt_Gamma_one.deriv, mul_neg, neg_mul]
state_before: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv Gamma 1 * (2 * 1) = -2 * γ

case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)

case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))

case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)
state_after: case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)

case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))

case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)

tactic: fun_prop
state_before: case e_a.e_a.e_a.hd
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => s) (1 / 2)
state_after: no goals

tactic: apply h_diff
state_before: case e_a.e_a.e_a.hh₂
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ Gamma (2 * (1 / 2))
state_after: case e_a.e_a.e_a.hh₂.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 2 * (1 / 2)

tactic: norm_num
state_before: case e_a.e_a.e_a.hh₂.hs
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ 0 < 2 * (1 / 2)
state_after: no goals

tactic: fun_prop
state_before: case e_a.e_a.e_a.hh
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ DifferentiableAt ℝ (fun s => 2 * s) (1 / 2)
state_after: no goals

tactic: congr 3
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ √π * (-2 * γ + deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) + γ) = √π * (-2 * γ + -(2 * log 2) + γ)
state_after: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) = -(2 * log 2)

tactic: apply HasDerivAt.deriv
state_before: case e_a.e_a.e_a
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ deriv (fun s => 2 ^ (1 - 2 * s)) (1 / 2) = -(2 * log 2)
state_after: case e_a.e_a.e_a.h
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)

tactic: have := HasDerivAt.rpow (hasDerivAt_const (1 / 2 : ℝ) (2 : ℝ))
  (?_ : HasDerivAt (fun s : ℝ ↦ 1 - 2 * s) (-2) (1 / 2)) two_pos
state_before: case e_a.e_a.e_a.h
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)
state_after: case e_a.e_a.e_a.h.refine_2
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
this :
  HasDerivAt (fun x => 2 ^ (1 - 2 * x))
    (0 * (1 - 2 * (1 / 2)) * 2 ^ (1 - 2 * (1 / 2) - 1) + -2 * 2 ^ (1 - 2 * (1 / 2)) * log 2) (1 / 2)
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)

case e_a.e_a.e_a.h.refine_1
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 1 - 2 * s) (-2) (1 / 2)

tactic: simp_rw [mul_comm (2 : ℝ) _]
state_before: case e_a.e_a.e_a.h.refine_1
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 1 - 2 * s) (-2) (1 / 2)
state_after: case e_a.e_a.e_a.h.refine_1
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 1 - s * 2) (-2) (1 / 2)

tactic: apply HasDerivAt.const_sub
state_before: case e_a.e_a.e_a.h.refine_1
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun s => 1 - s * 2) (-2) (1 / 2)
state_after: case e_a.e_a.e_a.h.refine_1.hf
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun x => x * 2) 2 (1 / 2)

tactic: exact hasDerivAt_mul_const (2 : ℝ)
state_before: case e_a.e_a.e_a.h.refine_1.hf
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ HasDerivAt (fun x => x * 2) 2 (1 / 2)
state_after: no goals

tactic: norm_num at this
state_before: case e_a.e_a.e_a.h.refine_2
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
this :
  HasDerivAt (fun x => 2 ^ (1 - 2 * x))
    (0 * (1 - 2 * (1 / 2)) * 2 ^ (1 - 2 * (1 / 2) - 1) + -2 * 2 ^ (1 - 2 * (1 / 2)) * log 2) (1 / 2)
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)
state_after: case e_a.e_a.e_a.h.refine_2
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
this : HasDerivAt (fun x => 2 ^ (1 - 2 * x)) (-(2 * log 2)) (1 / 2)
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)

tactic: exact this
state_before: case e_a.e_a.e_a.h.refine_2
h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
this : HasDerivAt (fun x => 2 ^ (1 - 2 * x)) (-(2 * log 2)) (1 / 2)
⊢ HasDerivAt (fun s => 2 ^ (1 - 2 * s)) (-(2 * log 2)) (1 / 2)
state_after: no goals

tactic: ring
state_before: h_diff : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ Gamma s
h_diff' : ∀ {s : ℝ}, 0 < s → DifferentiableAt ℝ (fun s => Gamma (2 * s)) s
⊢ √π * (-2 * γ + -(2 * log 2) + γ) = -√π * (γ + 2 * log 2)
state_after: no goals