case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t

case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
⊢ (∃ i t, IsPreconnected t ∧ s = mk i '' t) → IsPreconnected s
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
⊢ IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = mk i '' t
refine' ⟨fun hs => _, _⟩
case refine'_1.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
hs : IsPreconnected ∅
⊢ ∃ i t, IsPreconnected t ∧ ∅ = mk i '' t

case refine'_1.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
h : Set.Nonempty s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t
case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t
obtain rfl | h := s.eq_empty_or_nonempty
no goals
case refine'_1.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
hs : IsPreconnected ∅
⊢ ∃ i t, IsPreconnected t ∧ ∅ = mk i '' t
exact ⟨Classical.choice hι, ∅, isPreconnected_empty, (Set.image_empty _).symm⟩
case refine'_1.inr.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsConnected t
hs : IsPreconnected (mk a '' t)
h : Set.Nonempty (mk a '' t)
⊢ ∃ i t_1, IsPreconnected t_1 ∧ mk a '' t = mk i '' t_1
case refine'_1.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
h : Set.Nonempty s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t
obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
no goals
case refine'_1.inr.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsConnected t
hs : IsPreconnected (mk a '' t)
h : Set.Nonempty (mk a '' t)
⊢ ∃ i t_1, IsPreconnected t_1 ∧ mk a '' t = mk i '' t_1
refine' ⟨a, t, ht.isPreconnected, rfl⟩
case refine'_2.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsPreconnected t
⊢ IsPreconnected (mk a '' t)
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
⊢ (∃ i t, IsPreconnected t ∧ s = mk i '' t) → IsPreconnected s
rintro ⟨a, t, ht, rfl⟩
no goals
case refine'_2.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsPreconnected t
⊢ IsPreconnected (mk a '' t)
exact ht.image _ continuous_sigmaMk.continuousOn