Theorem: SimpleGraph.induce_sUnion_connected_of_pairwise_not_disjoint
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: obtain ⟨s, sS⟩ := Sn
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Sn : S.Nonempty
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
⊢ (induce (⋃₀ S) G).Connected
state_after: case intro
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
⊢ (induce (⋃₀ S) G).Connected

tactic: obtain ⟨v, vs⟩ := (Sc sS).nonempty
state_before: case intro
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
⊢ (induce (⋃₀ S) G).Connected
state_after: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
⊢ (induce (⋃₀ S) G).Connected

tactic: apply G.induce_connected_of_patches _ (Set.subset_sUnion_of_mem sS vs)
state_before: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
⊢ (induce (⋃₀ S) G).Connected
state_after: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
⊢ ∀ {v_1 : V}, v_1 ∈ ⋃₀ S → ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : v_1 ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨v_1, hv'⟩

tactic: rintro w hw
state_before: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
⊢ ∀ {v_1 : V}, v_1 ∈ ⋃₀ S → ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : v_1 ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨v_1, hv'⟩
state_after: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
hw : w ∈ ⋃₀ S
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩

tactic: simp only [Set.mem_sUnion, exists_prop] at hw
state_before: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
hw : w ∈ ⋃₀ S
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩
state_after: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
hw : ∃ t ∈ S, w ∈ t
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩

tactic: obtain ⟨t, tS, wt⟩ := hw
state_before: case intro.intro.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
hw : ∃ t ∈ S, w ∈ t
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩
state_after: case intro.intro.mk.intro.intro
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
t : Set V
tS : t ∈ S
wt : w ∈ t
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩

tactic: refine ⟨s ∪ t, Set.union_subset (Set.subset_sUnion_of_mem sS) (Set.subset_sUnion_of_mem tS),
        Or.inl vs, Or.inr wt, induce_union_connected (Sc sS) (Sc tS) (Snd sS tS) _ _⟩
state_before: case intro.intro.mk.intro.intro
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
S : Set (Set V)
Snd : ∀ {s t : Set V}, s ∈ S → t ∈ S → (s ∩ t).Nonempty
Sc : ∀ {s : Set V}, s ∈ S → (induce s G).Connected
s : Set V
sS : s ∈ S
v : V
vs : v ∈ s
w : V
t : Set V
tS : t ∈ S
wt : w ∈ t
⊢ ∃ s' ⊆ ⋃₀ S, ∃ (hu' : v ∈ s') (hv' : w ∈ s'), (induce s' G).Reachable ⟨v, hu'⟩ ⟨w, hv'⟩
state_after: no goals