Theorem: CompleteLattice.isStronglyAtomic
File: Mathlib/Order/Atoms.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a b : α
hab : a < b
⊢ ∃ x, a ⋖ x ∧ x ≤ b
state_after: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
⊢ ∃ x, a ⋖ x ∧ x ≤ sSup s
tactic: obtain ⟨s, rfl, h⟩ := eq_sSup_atoms b
state_before: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
⊢ ∃ x, a ⋖ x ∧ x ≤ sSup s
state_after: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
hcon : ¬∃ x, a ⋖ x ∧ x ≤ sSup s
x : α
hx : x ∈ s
⊢ x ≤ a
tactic: refine by_contra fun hcon ↦ hab.not_le <| sSup_le_iff.2 fun x hx ↦ ?_
state_before: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
hcon : ¬∃ x, a ⋖ x ∧ x ≤ sSup s
x : α
hx : x ∈ s
⊢ x ≤ a
state_after: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ∀ x ≤ sSup s, ¬a ⋖ x
⊢ x ≤ a
tactic: simp_rw [not_exists, and_comm (b := _ ≤ _), not_and] at hcon
state_before: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ∀ x ≤ sSup s, ¬a ⋖ x
⊢ x ≤ a
state_after: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ¬a ⋖ x ⊔ a
⊢ x ≤ a
tactic: specialize hcon (x ⊔ a) (sup_le (le_sSup _ _ hx) hab.le)
state_before: case intro.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ¬a ⋖ x ⊔ a
⊢ x ≤ a
state_after: case intro.intro.inl
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ¬a ⋖ x ⊔ a
hbot : x ⊓ a = ⊥
⊢ x ≤ a

case intro.intro.inr
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ¬a ⋖ x ⊔ a
h_inf : x ⊓ a = x
⊢ x ≤ a
tactic: obtain (hbot | h_inf) := (h x hx).bot_covBy.eq_or_eq (c := x ⊓ a) (by simp) (by simp)
state_before: case intro.intro.inr
ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝² : CompleteLattice α
inst✝¹ : IsUpperModularLattice α
inst✝ : IsAtomistic α
a : α
s : Set α
h : ∀ a ∈ s, IsAtom a
hab : a < sSup s
x : α
hx : x ∈ s
hcon : ¬a ⋖ x ⊔ a
h_inf : x ⊓ a = x
⊢ x ≤ a
state_after: no goals
tactic: rwa [inf_eq_left] at h_inf