Theorem: DirectedOn.inf_sSup_eq
File: Mathlib/Order/CompactlyGenerated.lean

tactic: rw [le_iff_compact_le_imp]
state_before: ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ a ⊓ sSup s ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: by_cases hs : s.Nonempty
state_before: ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ ∀ (c : α), CompleteLattice.IsCompactElement c → c ≤ a ⊓ sSup s → c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: intro c hc hcinf
state_before: case pos
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
⊢ ∀ (c : α), CompleteLattice.IsCompactElement c → c ≤ a ⊓ sSup s → c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: rw [le_inf_iff] at hcinf
state_before: case pos
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
c : α
hc : CompleteLattice.IsCompactElement c
hcinf : c ≤ a ⊓ sSup s
⊢ c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: rw [CompleteLattice.isCompactElement_iff_le_of_directed_sSup_le] at hc
state_before: case pos
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
c : α
hc : CompleteLattice.IsCompactElement c
hcinf : c ≤ a ∧ c ≤ sSup s
⊢ c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: rcases hc s hs h hcinf.2 with ⟨d, ds, cd⟩
state_before: case pos
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
c : α
hc : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → c ≤ sSup s → ∃ x, x ∈ s ∧ c ≤ x
hcinf : c ≤ a ∧ c ≤ sSup s
⊢ c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: refine' (le_inf hcinf.1 cd).trans (le_trans _ (le_iSup₂ d ds))
state_before: case pos.intro.intro
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
c : α
hc : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → c ≤ sSup s → ∃ x, x ∈ s ∧ c ≤ x
hcinf : c ≤ a ∧ c ≤ sSup s
d : α
ds : d ∈ s
cd : c ≤ d
⊢ c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: rfl
state_before: case pos.intro.intro
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : Set.Nonempty s
c : α
hc : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → c ≤ sSup s → ∃ x, x ∈ s ∧ c ≤ x
hcinf : c ≤ a ∧ c ≤ sSup s
d : α
ds : d ∈ s
cd : c ≤ d
⊢ a ⊓ d ≤ a ⊓ d

tactic: rw [Set.not_nonempty_iff_eq_empty] at hs
state_before: case neg
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : ¬Set.Nonempty s
⊢ ∀ (c : α), CompleteLattice.IsCompactElement c → c ≤ a ⊓ sSup s → c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b

tactic: simp [hs]
state_before: case neg
ι : Sort ?u.89037
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
hs : s = ∅
⊢ ∀ (c : α), CompleteLattice.IsCompactElement c → c ≤ a ⊓ sSup s → c ≤ ⨆ (b : α) (_ : b ∈ s), a ⊓ b