Theorem: Part.mem_ωSup
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: simp [OmegaCompletePartialOrder.ωSup, Part.ωSup]
state_before: α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
⊢ x ∈ ωSup c ↔ some x ∈ c

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
⊢ (x ∈ if h : ∃ a, some a ∈ c then some (choose h) else none) ↔ some x ∈ c

tactic: split_ifs with h
state_before: case mp
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
⊢ (x ∈ if h : ∃ a, some a ∈ c then some (choose h) else none) → some x ∈ c

tactic: swap
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (choose h) → some x ∈ c

case mp.inr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c

tactic: rintro ⟨⟨⟩⟩
state_before: case mp.inr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c

case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (choose h) → some x ∈ c

tactic: intro h'
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (choose h) → some x ∈ c

tactic: have hh := Classical.choose_spec h
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
h' : x ∈ some (choose h)
⊢ some x ∈ c

tactic: simp at h'
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
h' : x ∈ some (choose h)
hh : some (choose h) ∈ c
⊢ some x ∈ c

tactic: subst x
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (choose h) ∈ c
h' : x = choose h
⊢ some x ∈ c

tactic: exact hh
state_before: case mp.inl
α : Type u
β : Type v
γ : Type ?u.16890
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (choose h) ∈ c
⊢ some (choose h) ∈ c

tactic: intro h
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
⊢ some x ∈ c → x ∈ if h : ∃ a, some a ∈ c then some (choose h) else none

tactic: have h' : ∃ a : α, some a ∈ c := ⟨_, h⟩
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : some x ∈ c
⊢ x ∈ if h : ∃ a, some a ∈ c then some (choose h) else none

tactic: rw [dif_pos h']
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : some x ∈ c
h' : ∃ a, some a ∈ c
⊢ x ∈ if h : ∃ a, some a ∈ c then some (choose h) else none

tactic: have hh := Classical.choose_spec h'
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : some x ∈ c
h' : ∃ a, some a ∈ c
⊢ x ∈ some (choose h')

tactic: rw [eq_of_chain hh h]
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : some x ∈ c
h' : ∃ a, some a ∈ c
hh : some (choose h') ∈ c
⊢ x ∈ some (choose h')

tactic: simp
state_before: case mpr
α : Type u
β : Type v
γ : Type ?u.16890
x : α
c : Chain (Part α)
h : some x ∈ c
h' : ∃ a, some a ∈ c
hh : some (choose h') ∈ c
⊢ x ∈ some x