Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit cbd67cf

Browse files
committed
feat(order/(complete_lattice, compactly_generated)): independent sets in a complete lattice (#5971)
Defines `complete_lattice.independent` Shows that this notion of independence is finitary in compactly generated lattices Co-authored-by: Aaron Anderson <65780815+awainverse@users.noreply.github.com>
1 parent 5f328b6 commit cbd67cf

File tree

3 files changed

+90
-6
lines changed

3 files changed

+90
-6
lines changed

src/order/compactly_generated.lean

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,67 @@ class is_compactly_generated (α : Type*) [complete_lattice α] : Prop :=
242242
(exists_Sup_eq :
243243
∀ (x : α), ∃ (s : set α), (∀ x ∈ s, complete_lattice.is_compact_element x) ∧ Sup s = x)
244244

245+
section
246+
variables {α : Type*} [complete_lattice α] [is_compactly_generated α] {a b : α} {s : set α}
247+
248+
@[simp]
249+
lemma Sup_compact_le_eq (b) : Sup {c : α | complete_lattice.is_compact_element c ∧ c ≤ b} = b :=
250+
begin
251+
rcases is_compactly_generated.exists_Sup_eq b with ⟨s, hs, rfl⟩,
252+
exact le_antisymm (Sup_le (λ c hc, hc.2)) (Sup_le_Sup (λ c cs, ⟨hs c cs, le_Sup cs⟩)),
253+
end
254+
255+
theorem le_iff_compact_le_imp {a b : α} :
256+
a ≤ b ↔ ∀ c : α, complete_lattice.is_compact_element c → c ≤ a → c ≤ b :=
257+
⟨λ ab c hc ca, le_trans ca ab, λ h, begin
258+
rw [← Sup_compact_le_eq a, ← Sup_compact_le_eq b],
259+
exact Sup_le_Sup (λ c hc, ⟨hc.1, h c hc.1 hc.2⟩),
260+
end
261+
262+
/-- This property is sometimes referred to as `α` being upper continuous. -/
263+
theorem inf_Sup_eq_of_directed_on (h : directed_on (≤) s):
264+
a ⊓ Sup s = ⨆ b ∈ s, a ⊓ b :=
265+
le_antisymm (begin
266+
rw le_iff_compact_le_imp,
267+
by_cases hs : s.nonempty,
268+
{ intros c hc hcinf,
269+
rw le_inf_iff at hcinf,
270+
rw complete_lattice.is_compact_element_iff_le_of_directed_Sup_le at hc,
271+
rcases hc s hs h hcinf.2 with ⟨d, ds, cd⟩,
272+
exact (le_inf hcinf.1 cd).trans (le_bsupr d ds) },
273+
{ rw set.not_nonempty_iff_eq_empty at hs,
274+
simp [hs] }
275+
end) supr_inf_le_inf_Sup
276+
277+
/-- This property is equivalent to `α` being upper continuous. -/
278+
theorem inf_Sup_eq_supr_inf_sup_finset :
279+
a ⊓ Sup s = ⨆ (t : finset α) (H : ↑t ⊆ s), a ⊓ (t.sup id) :=
280+
le_antisymm (begin
281+
rw le_iff_compact_le_imp,
282+
intros c hc hcinf,
283+
rw le_inf_iff at hcinf,
284+
rcases hc s hcinf.2 with ⟨t, ht1, ht2⟩,
285+
exact (le_inf hcinf.1 ht2).trans (le_bsupr t ht1),
286+
end) (supr_le $ λ t, supr_le $ λ h, inf_le_inf_left _ ((finset.sup_eq_Sup t).symm ▸ (Sup_le_Sup h)))
287+
288+
theorem complete_lattice.independent_iff_finite {s : set α} :
289+
complete_lattice.independent s ↔
290+
∀ t : finset α, ↑t ⊆ s → complete_lattice.independent (↑t : set α) :=
291+
⟨λ hs t ht, hs.mono ht, λ h a ha, begin
292+
rw [disjoint_iff, inf_Sup_eq_supr_inf_sup_finset, supr_eq_bot],
293+
intro t,
294+
rw [supr_eq_bot, finset.sup_eq_Sup],
295+
intro ht,
296+
classical,
297+
have h' := (h (insert a t) _ a (t.mem_insert_self a)).eq_bot,
298+
{ rwa [finset.coe_insert, set.insert_diff_self_of_not_mem] at h',
299+
exact λ con, ((set.mem_diff a).1 (ht con)).2 (set.mem_singleton a) },
300+
{ rw [finset.coe_insert, set.insert_subset],
301+
exact ⟨ha, set.subset.trans ht (set.diff_subset _ _)⟩ }
302+
end
303+
304+
end
305+
245306
namespace complete_lattice
246307
variables {α : Type*} [complete_lattice α]
247308

src/order/complete_boolean_algebra.lean

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,13 @@ section complete_distrib_lattice
2424
variables [complete_distrib_lattice α] {a b : α} {s t : set α}
2525

2626
theorem sup_Inf_eq : a ⊔ Inf s = (⨅ b ∈ s, a ⊔ b) :=
27-
le_antisymm
28-
(le_infi $ assume i, le_infi $ assume h, sup_le_sup_left (Inf_le h) _)
29-
(complete_distrib_lattice.infi_sup_le_sup_Inf _ _)
27+
sup_Inf_le_infi_sup.antisymm (complete_distrib_lattice.infi_sup_le_sup_Inf _ _)
3028

3129
theorem Inf_sup_eq : Inf s ⊔ b = (⨅ a ∈ s, a ⊔ b) :=
3230
by simpa [sup_comm] using @sup_Inf_eq α _ b s
3331

3432
theorem inf_Sup_eq : a ⊓ Sup s = (⨆ b ∈ s, a ⊓ b) :=
35-
le_antisymm
36-
(complete_distrib_lattice.inf_Sup_le_supr_inf _ _)
37-
(supr_le $ assume i, supr_le $ assume h, inf_le_inf_left _ (le_Sup h))
33+
(complete_distrib_lattice.inf_Sup_le_supr_inf _ _).antisymm supr_inf_le_inf_Sup
3834

3935
theorem Sup_inf_eq : Sup s ⊓ b = (⨆ a ∈ s, a ⊓ b) :=
4036
by simpa [inf_comm] using @inf_Sup_eq α _ b s

src/order/complete_lattice.lean

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,3 +1006,30 @@ instance [complete_lattice α] [complete_lattice β] : complete_lattice (α ×
10061006
.. prod.has_Inf α β }
10071007

10081008
end prod
1009+
1010+
section complete_lattice
1011+
variables [complete_lattice α] {a : α} {s : set α}
1012+
1013+
lemma sup_Inf_le_infi_sup :
1014+
a ⊔ Inf s ≤ (⨅ b ∈ s, a ⊔ b) :=
1015+
le_infi $ assume i, le_infi $ assume h, sup_le_sup_left (Inf_le h) _
1016+
1017+
lemma supr_inf_le_inf_Sup :
1018+
(⨆ b ∈ s, a ⊓ b) ≤ a ⊓ Sup s :=
1019+
supr_le $ assume i, supr_le $ assume h, inf_le_inf_left _ (le_Sup h)
1020+
1021+
end complete_lattice
1022+
1023+
section complete_lattice
1024+
variables [complete_lattice α]
1025+
1026+
/-- An independent set of elements in a complete lattice is one in which every element is disjoint
1027+
from the `Sup` of the rest. -/
1028+
def complete_lattice.independent (s : set α) : Prop := ∀ a ∈ s, disjoint a (Sup (s \ {a}))
1029+
1030+
theorem complete_lattice.independent.mono {s t : set α}
1031+
(ht : complete_lattice.independent t) (hst : s ⊆ t) :
1032+
complete_lattice.independent s :=
1033+
λ a ha, (ht a (hst ha)).mono_right (Sup_le_Sup (diff_subset_diff_left hst))
1034+
1035+
end complete_lattice

0 commit comments

Comments
 (0)