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

Commit ebeeee7

Browse files
committed
feat(filters): a couple more lemmas (#3625)
Random lemmas gathered while thinking about https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/nhds_left.20and.20nhds_right
1 parent 652fb2e commit ebeeee7

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

src/data/set/lattice.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,21 @@ begin
613613
{ rintro ⟨i, hx⟩, cases hf i ⟨x, hx⟩ with y hy, refine ⟨y, ⟨i, congr_arg subtype.val hy⟩⟩ }
614614
end
615615

616+
lemma union_distrib_Inter_right {ι : Type*} (s : ι → set α) (t : set α) :
617+
(⋂ i, s i) ∪ t = (⋂ i, s i ∪ t) :=
618+
begin
619+
ext x,
620+
rw [mem_union_eq, mem_Inter],
621+
split ; finish
622+
end
623+
624+
lemma union_distrib_Inter_left {ι : Type*} (s : ι → set α) (t : set α) :
625+
t ∪ (⋂ i, s i) = (⋂ i, t ∪ s i) :=
626+
begin
627+
rw [union_comm, union_distrib_Inter_right],
628+
simp [union_comm]
629+
end
630+
616631
section
617632

618633
variables {p : Prop} {μ : p → set α}

src/order/filter/bases.lean

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,17 @@ theorem has_basis.le_basis_iff (hl : l.has_basis p s) (hl' : l'.has_basis p' s')
287287
l ≤ l' ↔ ∀ i', p' i' → ∃ i (hi : p i), s i ⊆ s' i' :=
288288
by simp only [hl'.ge_iff, hl.mem_iff]
289289

290+
lemma has_basis.ext (hl : l.has_basis p s) (hl' : l'.has_basis p' s')
291+
(h : ∀ i, p i → ∃ i', p' i' ∧ s' i' ⊆ s i)
292+
(h' : ∀ i', p' i' → ∃ i, p i ∧ s i ⊆ s' i') : l = l' :=
293+
begin
294+
apply le_antisymm,
295+
{ rw hl.le_basis_iff hl',
296+
simpa using h' },
297+
{ rw hl'.le_basis_iff hl,
298+
simpa using h },
299+
end
300+
290301
lemma has_basis.inf (hl : l.has_basis p s) (hl' : l'.has_basis p' s') :
291302
(l ⊓ l').has_basis (λ i : ι × ι', p i.1 ∧ p' i.2) (λ i, s i.1 ∩ s' i.2) :=
292303
begin
@@ -299,6 +310,23 @@ lemma has_basis.inf (hl : l.has_basis p s) (hl' : l'.has_basis p' s') :
299310
use [s i, i, hi, subset.refl _, s' i', i', hi', subset.refl _, H] }
300311
end
301312

313+
lemma has_basis.sup (hl : l.has_basis p s) (hl' : l'.has_basis p' s') :
314+
(l ⊔ l').has_basis (λ i : ι × ι', p i.1 ∧ p' i.2) (λ i, s i.1 ∪ s' i.2) :=
315+
begin
316+
rintros t,
317+
rw [mem_sup_sets, hl.mem_iff, hl'.mem_iff],
318+
split,
319+
{ rintros ⟨⟨i, pi, hi⟩, ⟨i', pi', hi'⟩⟩,
320+
use [(i, i'), pi, pi'],
321+
finish },
322+
{ rintros ⟨⟨i, i'⟩, ⟨⟨pi, pi'⟩, h⟩⟩,
323+
split,
324+
{ use [i, pi],
325+
finish },
326+
{ use [i', pi'],
327+
finish } }
328+
end
329+
302330
lemma has_basis.inf_principal (hl : l.has_basis p s) (s' : set α) :
303331
(l ⊓ 𝓟 s').has_basis p (λ i, s i ∩ s') :=
304332
⟨λ t, by simp only [mem_inf_principal, hl.mem_iff, subset_def, mem_set_of_eq,
@@ -332,6 +360,11 @@ lemma has_basis_binfi_principal {s : β → set α} {S : set β} (h : directed_o
332360
exact λ _ _, principal_mono.2
333361
end
334362

363+
lemma has_basis_binfi_principal'
364+
(h : ∀ i, p i → ∀ j, p j → ∃ k (h : p k), s k ⊆ s i ∧ s k ⊆ s j) (ne : ∃ i, p i) :
365+
(⨅ i (h : p i), 𝓟 (s i)).has_basis p s :=
366+
filter.has_basis_binfi_principal h ne
367+
335368
lemma has_basis.map (f : α → β) (hl : l.has_basis p s) :
336369
(l.map f).has_basis p (λ i, f '' (s i)) :=
337370
⟨λ t, by simp only [mem_map, image_subset_iff, hl.mem_iff, preimage]⟩

src/order/filter/basic.lean

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ instance : bounded_distrib_lattice (filter α) :=
646646
..filter.complete_lattice }
647647

648648
/- the complementary version with ⨆i, f ⊓ g i does not hold! -/
649-
lemma infi_sup_eq {f : filter α} {g : ι → filter α} : (⨅ x, f ⊔ g x) = f ⊔ infi g :=
649+
lemma infi_sup_left {f : filter α} {g : ι → filter α} : (⨅ x, f ⊔ g x) = f ⊔ infi g :=
650650
begin
651651
refine le_antisymm _ (le_infi $ assume i, sup_le_sup_left (infi_le _ _) _),
652652
rintros t ⟨h₁, h₂⟩,
@@ -661,6 +661,17 @@ begin
661661
exact le_inf (infi_le _ _) ih }
662662
end
663663

664+
lemma infi_sup_right {f : filter α} {g : ι → filter α} : (⨅ x, g x ⊔ f) = infi g ⊔ f :=
665+
by simp [sup_comm, ← infi_sup_left]
666+
667+
lemma binfi_sup_right (p : ι → Prop) (f : ι → filter α) (g : filter α) :
668+
(⨅ i (h : p i), (f i ⊔ g)) = (⨅ i (h : p i), f i) ⊔ g :=
669+
by rw [infi_subtype', infi_sup_right, infi_subtype']
670+
671+
lemma binfi_sup_left (p : ι → Prop) (f : ι → filter α) (g : filter α) :
672+
(⨅ i (h : p i), (g ⊔ f i)) = g ⊔ (⨅ i (h : p i), f i) :=
673+
by rw [infi_subtype', infi_sup_left, infi_subtype']
674+
664675
lemma mem_infi_sets_finset {s : finset α} {f : α → filter β} :
665676
∀t, t ∈ (⨅a∈s, f a) ↔ (∃p:α → set β, (∀a∈s, p a ∈ f a) ∧ (⋂a∈s, p a) ⊆ t) :=
666677
show ∀t, t ∈ (⨅a∈s, f a) ↔ (∃p:α → set β, (∀a∈s, p a ∈ f a) ∧ (⨅a∈s, p a) ≤ t),

0 commit comments

Comments
 (0)