Theorem: IsPreconnected.preimage_of_open_map
File: Mathlib/Topology/Connected.lean

tactic: replace hsf : f '' (f ⁻¹' s) = s := image_preimage_eq_of_subset hsf
state_before: α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
hsf : s ⊆ range f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
⊢ Set.Nonempty (f ⁻¹' s ∩ (u ∩ v))

tactic: obtain ⟨_, has, ⟨a, hau, rfl⟩, hav⟩ : (s ∩ (f '' u ∩ f '' v)).Nonempty
state_before: α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
⊢ Set.Nonempty (f ⁻¹' s ∩ (u ∩ v))

tactic: refine hs (f '' u) (f '' v) (hf u hu) (hf v hv) ?_ ?_ ?_
state_before: α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
⊢ Set.Nonempty (s ∩ (f '' u ∩ f '' v))

tactic: simpa only [hsf, image_union] using image_subset f hsuv
state_before: case refine_1
α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
⊢ s ⊆ f '' u ∪ f '' v

tactic: simpa only [image_preimage_inter] using hsu.image f
state_before: case refine_2
α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
⊢ Set.Nonempty (s ∩ f '' u)

tactic: simpa only [image_preimage_inter] using hsv.image f
state_before: case refine_3
α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
⊢ Set.Nonempty (s ∩ f '' v)

tactic: exact ⟨a, has, hau, hinj.mem_set_image.1 hav⟩
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.25326
π : ι → Type ?u.25331
inst✝¹ : TopologicalSpace α
s✝ t u✝ v✝ : Set α
inst✝ : TopologicalSpace β
s : Set β
hs : IsPreconnected s
f : α → β
hinj : Injective f
hf : IsOpenMap f
u v : Set α
hu : IsOpen u
hv : IsOpen v
hsuv : f ⁻¹' s ⊆ u ∪ v
hsu : Set.Nonempty (f ⁻¹' s ∩ u)
hsv : Set.Nonempty (f ⁻¹' s ∩ v)
hsf : f '' (f ⁻¹' s) = s
a : α
hau : a ∈ u
has : f a ∈ s
hav : f a ∈ f '' v
⊢ Set.Nonempty (f ⁻¹' s ∩ (u ∩ v))