Theorem: AnalyticOn.is_constant_or_isOpen
File: Mathlib/Analysis/Complex/OpenMapping.lean

tactic: by_cases h : ∃ z₀ ∈ U, ∀ᶠ z in 𝓝 z₀, g z = g z₀
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)
state_after: case pos
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∃ z₀ ∈ U, ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)

case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ¬∃ z₀ ∈ U, ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)

tactic: obtain ⟨z₀, hz₀, h⟩ := h
state_before: case pos
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∃ z₀ ∈ U, ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)
state_after: case pos.intro.intro
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀✝ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
z₀ : E
hz₀ : z₀ ∈ U
h : ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)

tactic: exact Or.inl ⟨g z₀, hg.eqOn_of_preconnected_of_eventuallyEq analyticOn_const hU hz₀ h⟩
state_before: case pos.intro.intro
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀✝ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
z₀ : E
hz₀ : z₀ ∈ U
h : ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)
state_after: no goals

tactic: push_neg at h
state_before: case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ¬∃ z₀ ∈ U, ∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)
state_after: case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)

tactic: refine Or.inr fun s hs1 hs2 => isOpen_iff_mem_nhds.mpr ?_
state_before: case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
⊢ (∃ w, ∀ z ∈ U, g z = w) ∨ ∀ s ⊆ U, IsOpen s → IsOpen (g '' s)
state_after: case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
s : Set E
hs1 : s ⊆ U
hs2 : IsOpen s
⊢ ∀ x ∈ g '' s, g '' s ∈ 𝓝 x

tactic: rintro z ⟨w, hw1, rfl⟩
state_before: case neg
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
s : Set E
hs1 : s ⊆ U
hs2 : IsOpen s
⊢ ∀ x ∈ g '' s, g '' s ∈ 𝓝 x
state_after: case neg.intro.intro
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w✝ : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
s : Set E
hs1 : s ⊆ U
hs2 : IsOpen s
w : E
hw1 : w ∈ s
⊢ g '' s ∈ 𝓝 (g w)

tactic: exact (hg w (hs1 hw1)).eventually_constant_or_nhds_le_map_nhds.resolve_left (h w (hs1 hw1))
    (image_mem_map (hs2.mem_nhds hw1))
state_before: case neg.intro.intro
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
U : Set E
f : ℂ → ℂ
g : E → ℂ
z₀ w✝ : ℂ
ε r m : ℝ
hg : AnalyticOn ℂ g U
hU : IsPreconnected U
h : ∀ z₀ ∈ U, ¬∀ᶠ (z : E) in 𝓝 z₀, g z = g z₀
s : Set E
hs1 : s ⊆ U
hs2 : IsOpen s
w : E
hw1 : w ∈ s
⊢ g '' s ∈ 𝓝 (g w)
state_after: no goals