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

tactic: simp only [ωSup, Part.ωSup]
state_before: α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
⊢ x ∈ ωSup c ↔ some x ∈ c
state_after: α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
⊢ (x ∈ if h : ∃ a, some a ∈ c then some (Classical.choose h) else none) ↔ some x ∈ c

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
⊢ (x ∈ if h : ∃ a, some a ∈ c then some (Classical.choose h) else none) ↔ some x ∈ c
state_after: case mp
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
⊢ (x ∈ if h : ∃ a, some a ∈ c then some (Classical.choose h) else none) → some x ∈ c

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

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

case neg
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c

tactic: swap
state_before: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (Classical.choose h) → some x ∈ c

case neg
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c
state_after: case neg
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c

case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (Classical.choose h) → some x ∈ c

tactic: intro h'
state_before: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
⊢ x ∈ some (Classical.choose h) → some x ∈ c
state_after: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
h' : x ∈ some (Classical.choose h)
⊢ some x ∈ c

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

tactic: simp only [mem_some_iff] at h'
state_before: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
h' : x ∈ some (Classical.choose h)
hh : some (Classical.choose h) ∈ c
⊢ some x ∈ c
state_after: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (Classical.choose h) ∈ c
h' : x = Classical.choose h
⊢ some x ∈ c

tactic: subst x
state_before: case pos
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (Classical.choose h) ∈ c
h' : x = Classical.choose h
⊢ some x ∈ c
state_after: case pos
α : Type u
β : Type v
γ : Type u_1
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (Classical.choose h) ∈ c
⊢ some (Classical.choose h) ∈ c

tactic: exact hh
state_before: case pos
α : Type u
β : Type v
γ : Type u_1
c : Chain (Part α)
h : ∃ a, some a ∈ c
hh : some (Classical.choose h) ∈ c
⊢ some (Classical.choose h) ∈ c
state_after: no goals

tactic: rintro ⟨⟨⟩⟩
state_before: case neg
α : Type u
β : Type v
γ : Type u_1
x : α
c : Chain (Part α)
h : ¬∃ a, some a ∈ c
⊢ x ∈ none → some x ∈ c
state_after: no goals

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

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

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

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

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

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