Theorem: Complex.GammaIntegral_convergent
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: constructor
state_before: s : ℂ
hs : 0 < s.re
⊢ IntegrableOn (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (Ioi 0) volume
state_after: case left
s : ℂ
hs : 0 < s.re
⊢ AEStronglyMeasurable (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (volume.restrict (Ioi 0))

case right
s : ℂ
hs : 0 < s.re
⊢ HasFiniteIntegral (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (volume.restrict (Ioi 0))

tactic: refine ContinuousOn.aestronglyMeasurable ?_ measurableSet_Ioi
state_before: case left
s : ℂ
hs : 0 < s.re
⊢ AEStronglyMeasurable (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (volume.restrict (Ioi 0))
state_after: case left
s : ℂ
hs : 0 < s.re
⊢ ContinuousOn (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (Ioi 0)

tactic: apply (continuous_ofReal.comp continuous_neg.rexp).continuousOn.mul
state_before: case left
s : ℂ
hs : 0 < s.re
⊢ ContinuousOn (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (Ioi 0)
state_after: case left
s : ℂ
hs : 0 < s.re
⊢ ContinuousOn (fun x => ↑x ^ (s - 1)) (Ioi 0)

tactic: apply ContinuousAt.continuousOn
state_before: case left
s : ℂ
hs : 0 < s.re
⊢ ContinuousOn (fun x => ↑x ^ (s - 1)) (Ioi 0)
state_after: case left.hcont
s : ℂ
hs : 0 < s.re
⊢ ∀ x ∈ Ioi 0, ContinuousAt (fun x => ↑x ^ (s - 1)) x

tactic: intro x hx
state_before: case left.hcont
s : ℂ
hs : 0 < s.re
⊢ ∀ x ∈ Ioi 0, ContinuousAt (fun x => ↑x ^ (s - 1)) x
state_after: case left.hcont
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ ContinuousAt (fun x => ↑x ^ (s - 1)) x

tactic: have : ContinuousAt (fun x : ℂ => x ^ (s - 1)) ↑x :=
  continuousAt_cpow_const <| ofReal_mem_slitPlane.2 hx
state_before: case left.hcont
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ ContinuousAt (fun x => ↑x ^ (s - 1)) x
state_after: case left.hcont
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
this : ContinuousAt (fun x => x ^ (s - 1)) ↑x
⊢ ContinuousAt (fun x => ↑x ^ (s - 1)) x

tactic: exact ContinuousAt.comp this continuous_ofReal.continuousAt
state_before: case left.hcont
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
this : ContinuousAt (fun x => x ^ (s - 1)) ↑x
⊢ ContinuousAt (fun x => ↑x ^ (s - 1)) x
state_after: no goals

tactic: rw [← hasFiniteIntegral_norm_iff]
state_before: case right
s : ℂ
hs : 0 < s.re
⊢ HasFiniteIntegral (fun x => ↑(rexp (-x)) * ↑x ^ (s - 1)) (volume.restrict (Ioi 0))
state_after: case right
s : ℂ
hs : 0 < s.re
⊢ HasFiniteIntegral (fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖) (volume.restrict (Ioi 0))

tactic: refine HasFiniteIntegral.congr (Real.GammaIntegral_convergent hs).2 ?_
state_before: case right
s : ℂ
hs : 0 < s.re
⊢ HasFiniteIntegral (fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖) (volume.restrict (Ioi 0))
state_after: case right
s : ℂ
hs : 0 < s.re
⊢ (fun x => rexp (-x) * x ^ (s.re - 1)) =ᶠ[ae (volume.restrict (Ioi 0))] fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖

tactic: apply (ae_restrict_iff' measurableSet_Ioi).mpr
state_before: case right
s : ℂ
hs : 0 < s.re
⊢ (fun x => rexp (-x) * x ^ (s.re - 1)) =ᶠ[ae (volume.restrict (Ioi 0))] fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖
state_after: case right
s : ℂ
hs : 0 < s.re
⊢ ∀ᵐ (x : ℝ), x ∈ Ioi 0 → (fun x => rexp (-x) * x ^ (s.re - 1)) x = (fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖) x

tactic: filter_upwards with x hx
state_before: case right
s : ℂ
hs : 0 < s.re
⊢ ∀ᵐ (x : ℝ), x ∈ Ioi 0 → (fun x => rexp (-x) * x ^ (s.re - 1)) x = (fun a => ‖↑(rexp (-a)) * ↑a ^ (s - 1)‖) x
state_after: case right.h
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ rexp (-x) * x ^ (s.re - 1) = ‖↑(rexp (-x)) * ↑x ^ (s - 1)‖

tactic: rw [norm_eq_abs, map_mul, abs_of_nonneg <| le_of_lt <| exp_pos <| -x,
  abs_cpow_eq_rpow_re_of_pos hx _]
state_before: case right.h
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ rexp (-x) * x ^ (s.re - 1) = ‖↑(rexp (-x)) * ↑x ^ (s - 1)‖
state_after: case right.h
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ rexp (-x) * x ^ (s.re - 1) = rexp (-x) * x ^ (s - 1).re

tactic: simp
state_before: case right.h
s : ℂ
hs : 0 < s.re
x : ℝ
hx : x ∈ Ioi 0
⊢ rexp (-x) * x ^ (s.re - 1) = rexp (-x) * x ^ (s - 1).re
state_after: no goals