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

tactic: let n := ⌊1 - s.re⌋₊ + 1
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
⊢ DifferentiableAt ℂ Gamma s
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
⊢ DifferentiableAt ℂ Gamma s

tactic: have hn : 1 - s.re < n := mod_cast Nat.lt_floor_add_one (1 - s.re)
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
⊢ DifferentiableAt ℂ Gamma s
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
⊢ DifferentiableAt ℂ Gamma s

tactic: apply (differentiableAt_GammaAux s n hn hs).congr_of_eventuallyEq
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
⊢ DifferentiableAt ℂ Gamma s
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
⊢ Gamma =ᶠ[𝓝 s] GammaAux n

tactic: let S := {t : ℂ | 1 - t.re < n}
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
⊢ Gamma =ᶠ[𝓝 s] GammaAux n
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ Gamma =ᶠ[𝓝 s] GammaAux n

tactic: have : S ∈ 𝓝 s := by
  rw [mem_nhds_iff]; use S
  refine ⟨Subset.rfl, ?_, hn⟩
  have : S = re ⁻¹' Ioi (1 - n : ℝ) := by
    ext; rw [preimage, Ioi, mem_setOf_eq, mem_setOf_eq, mem_setOf_eq]; exact sub_lt_comm
  rw [this]
  exact Continuous.isOpen_preimage continuous_re _ isOpen_Ioi
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ Gamma =ᶠ[𝓝 s] GammaAux n
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
⊢ Gamma =ᶠ[𝓝 s] GammaAux n

tactic: apply eventuallyEq_of_mem this
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
⊢ Gamma =ᶠ[𝓝 s] GammaAux n
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
⊢ EqOn Gamma (GammaAux n) S

tactic: intro t ht
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
⊢ EqOn Gamma (GammaAux n) S
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : t ∈ S
⊢ Gamma t = GammaAux n t

tactic: rw [mem_setOf_eq] at ht
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : t ∈ S
⊢ Gamma t = GammaAux n t
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : 1 - t.re < ↑n
⊢ Gamma t = GammaAux n t

tactic: apply Gamma_eq_GammaAux
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : 1 - t.re < ↑n
⊢ Gamma t = GammaAux n t
state_after: case h1
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : 1 - t.re < ↑n
⊢ -t.re < ↑n

tactic: linarith
state_before: case h1
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S ∈ 𝓝 s
t : ℂ
ht : 1 - t.re < ↑n
⊢ -t.re < ↑n
state_after: no goals

tactic: rw [mem_nhds_iff]
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ S ∈ 𝓝 s
state_after: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ ∃ t ⊆ S, IsOpen t ∧ s ∈ t

tactic: use S
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ ∃ t ⊆ S, IsOpen t ∧ s ∈ t
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ S ⊆ S ∧ IsOpen S ∧ s ∈ S

tactic: refine ⟨Subset.rfl, ?_, hn⟩
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ S ⊆ S ∧ IsOpen S ∧ s ∈ S
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ IsOpen S

tactic: have : S = re ⁻¹' Ioi (1 - n : ℝ) := by
  ext; rw [preimage, Ioi, mem_setOf_eq, mem_setOf_eq, mem_setOf_eq]; exact sub_lt_comm
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ IsOpen S
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S = re ⁻¹' Ioi (1 - ↑n)
⊢ IsOpen S

tactic: rw [this]
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S = re ⁻¹' Ioi (1 - ↑n)
⊢ IsOpen S
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S = re ⁻¹' Ioi (1 - ↑n)
⊢ IsOpen (re ⁻¹' Ioi (1 - ↑n))

tactic: exact Continuous.isOpen_preimage continuous_re _ isOpen_Ioi
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
this : S = re ⁻¹' Ioi (1 - ↑n)
⊢ IsOpen (re ⁻¹' Ioi (1 - ↑n))
state_after: no goals

tactic: ext
state_before: s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
⊢ S = re ⁻¹' Ioi (1 - ↑n)
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
x✝ : ℂ
⊢ x✝ ∈ S ↔ x✝ ∈ re ⁻¹' Ioi (1 - ↑n)

tactic: rw [preimage, Ioi, mem_setOf_eq, mem_setOf_eq, mem_setOf_eq]
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
x✝ : ℂ
⊢ x✝ ∈ S ↔ x✝ ∈ re ⁻¹' Ioi (1 - ↑n)
state_after: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
x✝ : ℂ
⊢ 1 - x✝.re < ↑n ↔ 1 - ↑n < x✝.re

tactic: exact sub_lt_comm
state_before: case h
s : ℂ
hs : ∀ (m : ℕ), s ≠ -↑m
n : ℕ := ⌊1 - s.re⌋₊ + 1
hn : 1 - s.re < ↑n
S : Set ℂ := {t | 1 - t.re < ↑n}
x✝ : ℂ
⊢ 1 - x✝.re < ↑n ↔ 1 - ↑n < x✝.re
state_after: no goals