Theorem: Directed.exists_mem_subset_of_finset_subset_biUnion
File: Mathlib/Data/Finset/Basic.lean

tactic: revert hs
state_before: α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t t₁ t₂ u v : Finset α✝
a b : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
hs : ↑s ⊆ ⋃ (i : ι), f i
⊢ ∃ i, ↑s ⊆ f i

tactic: refine' s.induction_on _ _
state_before: α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t t₁ t₂ u v : Finset α✝
a b : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
⊢ (↑s ⊆ ⋃ (i : ι), f i) → ∃ i, ↑s ⊆ f i

tactic: refine' fun _ => ⟨hn.some, _⟩
state_before: case refine'_1
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t t₁ t₂ u v : Finset α✝
a b : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
⊢ (↑∅ ⊆ ⋃ (i : ι), f i) → ∃ i, ↑∅ ⊆ f i

tactic: simp only [coe_empty, Set.empty_subset]
state_before: case refine'_1
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t t₁ t₂ u v : Finset α✝
a b : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
x✝ : ↑∅ ⊆ ⋃ (i : ι), f i
⊢ ↑∅ ⊆ f (Nonempty.some hn)

tactic: intro b t _hbt htc hbtc
state_before: case refine'_2
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t t₁ t₂ u v : Finset α✝
a b : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
⊢ ∀ ⦃a : α⦄ {s : Finset α},
    ¬a ∈ s → ((↑s ⊆ ⋃ (i : ι), f i) → ∃ i, ↑s ⊆ f i) → (↑(insert a s) ⊆ ⋃ (i : ι), f i) → ∃ i, ↑(insert a s) ⊆ f i

tactic: obtain ⟨i : ι, hti : (t : Set α) ⊆ f i⟩ := htc (Set.Subset.trans (t.subset_insert b) hbtc)
state_before: case refine'_2
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
⊢ ∃ i, ↑(insert b t) ⊆ f i

tactic: obtain ⟨j, hbj⟩ : ∃ j, b ∈ f j := by simpa [Set.mem_iUnion₂] using hbtc (t.mem_insert_self b)
state_before: case refine'_2.intro
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
⊢ ∃ i, ↑(insert b t) ⊆ f i

tactic: rcases h j i with ⟨k, hk, hk'⟩
state_before: case refine'_2.intro.intro
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
j : ι
hbj : b ∈ f j
⊢ ∃ i, ↑(insert b t) ⊆ f i

tactic: use k
state_before: case refine'_2.intro.intro.intro.intro
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
j : ι
hbj : b ∈ f j
k : ι
hk : f j ⊆ f k
hk' : f i ⊆ f k
⊢ ∃ i, ↑(insert b t) ⊆ f i

tactic: rw [coe_insert, Set.insert_subset]
state_before: case refine'_2.intro.intro.intro.intro
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
j : ι
hbj : b ∈ f j
k : ι
hk : f j ⊆ f k
hk' : f i ⊆ f k
⊢ ↑(insert b t) ⊆ f k

tactic: exact ⟨hk hbj, _root_.trans hti hk'⟩
state_before: case refine'_2.intro.intro.intro.intro
α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
j : ι
hbj : b ∈ f j
k : ι
hk : f j ⊆ f k
hk' : f i ⊆ f k
⊢ b ∈ f k ∧ ↑t ⊆ f k

tactic: simpa [Set.mem_iUnion₂] using hbtc (t.mem_insert_self b)
state_before: α✝ : Type ?u.168635
β : Type ?u.168638
γ : Type ?u.168641
inst✝ : DecidableEq α✝
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α✝
a b✝ : α✝
α : Type u_1
ι : Type u_2
hn : Nonempty ι
f : ι → Set α
h : Directed (fun x x_1 => x ⊆ x_1) f
s : Finset α
b : α
t : Finset α
_hbt : ¬b ∈ t
htc : (↑t ⊆ ⋃ (i : ι), f i) → ∃ i, ↑t ⊆ f i
hbtc : ↑(insert b t) ⊆ ⋃ (i : ι), f i
i : ι
hti : ↑t ⊆ f i
⊢ ∃ j, b ∈ f j