@@ -242,6 +242,67 @@ class is_compactly_generated (α : Type*) [complete_lattice α] : Prop :=
242
242
(exists_Sup_eq :
243
243
∀ (x : α), ∃ (s : set α), (∀ x ∈ s, complete_lattice.is_compact_element x) ∧ Sup s = x)
244
244
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
+
245
306
namespace complete_lattice
246
307
variables {α : Type *} [complete_lattice α]
247
308
0 commit comments