Theorem: atom_le_iSup
File: Mathlib/Order/Atoms.lean

tactic: refine ⟨?_, fun ⟨i, hi⟩ => le_trans hi (le_iSup _ _)⟩
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f ↔ ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f → ∃ i, a ≤ f i

tactic: show (a ≤ ⨆ i, f i) → _
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f → ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ ⨆ i, f i → ∃ i, a ≤ f i

tactic: refine fun h => of_not_not fun ha' => ?_
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ ⨆ i, f i → ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ¬∃ i, a ≤ f i
⊢ False

tactic: push_neg at ha'
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ¬∃ i, a ≤ f i
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
⊢ False

tactic: have ha'' : Disjoint a (⨆ i, f i) :=
  disjoint_iSup_iff.2 fun i => fun x hxa hxf => le_bot_iff.2 <| of_not_not fun hx =>
    have hxa : x < a := (le_iff_eq_or_lt.1 hxa).resolve_left (by rintro rfl; exact ha' _ hxf)
    hx (ha.2 _ hxa)
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
ha'' : Disjoint a (⨆ i, f i)
⊢ False

tactic: obtain rfl := le_bot_iff.1 (ha'' le_rfl h)
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
ha'' : Disjoint a (⨆ i, f i)
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
ha : IsAtom ⊥
h : ⊥ ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬⊥ ≤ f i
ha'' : Disjoint ⊥ (⨆ i, f i)
⊢ False

tactic: exact ha.1 rfl
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
ha : IsAtom ⊥
h : ⊥ ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬⊥ ≤ f i
ha'' : Disjoint ⊥ (⨆ i, f i)
⊢ False
state_after: no goals

tactic: rintro rfl
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
i : ι
x : α
hxa : x ≤ a
hxf : x ≤ f i
hx : ¬x = ⊥
⊢ ¬x = a
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
i : ι
x : α
hxf : x ≤ f i
hx : ¬x = ⊥
ha : IsAtom x
h : x ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬x ≤ f i
hxa : x ≤ x
⊢ False

tactic: exact ha' _ hxf
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
i : ι
x : α
hxf : x ≤ f i
hx : ¬x = ⊥
ha : IsAtom x
h : x ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬x ≤ f i
hxa : x ≤ x
⊢ False
state_after: no goals