@@ -95,12 +95,15 @@ structure filter (α : Type*) :=
95
95
(inter_sets {x y} : x ∈ sets → y ∈ sets → x ∩ y ∈ sets)
96
96
97
97
/-- If `F` is a filter on `α`, and `U` a subset of `α` then we can write `U ∈ F` as on paper. -/
98
- @[reducible]
99
98
instance {α : Type *}: has_mem (set α) (filter α) := ⟨λ U F, U ∈ F.sets⟩
100
99
101
100
namespace filter
102
101
variables {α : Type u} {f g : filter α} {s t : set α}
103
102
103
+ @[simp] protected lemma mem_mk {t : set (set α)} {h₁ h₂ h₃} : s ∈ mk t h₁ h₂ h₃ ↔ s ∈ t := iff.rfl
104
+
105
+ @[simp] protected lemma mem_sets : s ∈ f.sets ↔ s ∈ f := iff.rfl
106
+
104
107
instance inhabited_mem : inhabited {s : set α // s ∈ f} := ⟨⟨univ, f.univ_sets⟩⟩
105
108
106
109
lemma filter_eq : ∀{f g : filter α}, f.sets = g.sets → f = g
@@ -110,7 +113,7 @@ lemma filter_eq_iff : f = g ↔ f.sets = g.sets :=
110
113
⟨congr_arg _, filter_eq⟩
111
114
112
115
protected lemma ext_iff : f = g ↔ ∀ s, s ∈ f ↔ s ∈ g :=
113
- by rw [filter_eq_iff, ext_iff]
116
+ by simp only [filter_eq_iff, ext_iff, filter.mem_sets ]
114
117
115
118
@[ext]
116
119
protected lemma ext : (∀ s, s ∈ f ↔ s ∈ g) → f = g :=
@@ -218,7 +221,7 @@ section join
218
221
/-- The join of a filter of filters is defined by the relation `s ∈ join f ↔ {t | s ∈ t} ∈ f`. -/
219
222
def join (f : filter (filter α)) : filter α :=
220
223
{ sets := {s | {t : filter α | s ∈ t} ∈ f},
221
- univ_sets := by simp only [univ_mem_sets, mem_set_of_eq]; exact univ_mem_sets ,
224
+ univ_sets := by simp only [mem_set_of_eq, univ_sets, ← filter.mem_sets, set_of_true] ,
222
225
sets_of_superset := assume x y hx xy,
223
226
mem_sets_of_superset hx $ assume f h, mem_sets_of_superset h xy,
224
227
inter_sets := assume x y hx hy,
@@ -260,7 +263,8 @@ iff.intro
260
263
(assume x y _ hxy hx, mem_sets_of_superset hx hxy)
261
264
(assume x y _ _ hx hy, inter_mem_sets hx hy))
262
265
263
- lemma mem_generate_iff (s : set $ set α) {U : set α} : U ∈ generate s ↔ ∃ t ⊆ s, finite t ∧ ⋂₀ t ⊆ U :=
266
+ lemma mem_generate_iff {s : set $ set α} {U : set α} :
267
+ U ∈ generate s ↔ ∃ t ⊆ s, finite t ∧ ⋂₀ t ⊆ U :=
264
268
begin
265
269
split ; intro h,
266
270
{ induction h with V V_in V W V_in hVW hV V W V_in W_in hV hW,
295
299
protected def mk_of_closure (s : set (set α)) (hs : (generate s).sets = s) : filter α :=
296
300
{ sets := s,
297
301
univ_sets := hs ▸ (univ_mem_sets : univ ∈ generate s),
298
- sets_of_superset := assume x y, hs ▸ (mem_sets_of_superset : x ∈ generate s → x ⊆ y → y ∈ generate s),
299
- inter_sets := assume x y, hs ▸ (inter_mem_sets : x ∈ generate s → y ∈ generate s → x ∩ y ∈ generate s) }
302
+ sets_of_superset := λ x y, hs ▸ (mem_sets_of_superset : x ∈ generate s → x ⊆ y → y ∈ generate s),
303
+ inter_sets := λ x y, hs ▸ (inter_mem_sets : x ∈ generate s → y ∈ generate s →
304
+ x ∩ y ∈ generate s) }
300
305
301
306
lemma mk_of_closure_sets {s : set (set α)} {hs : (generate s).sets = s} :
302
307
filter.mk_of_closure s hs = generate s :=
@@ -438,7 +443,7 @@ iff.rfl
438
443
439
444
@[simp] lemma mem_supr_sets {x : set α} {f : ι → filter α} :
440
445
x ∈ supr f ↔ (∀i, x ∈ f i) :=
441
- by simp only [supr_sets_eq, iff_self, mem_Inter]
446
+ by simp only [← filter.mem_sets, supr_sets_eq, iff_self, mem_Inter]
442
447
443
448
lemma infi_eq_generate (s : ι → filter α) : infi s = generate (⋃ i, (s i).sets) :=
444
449
show generate _ = generate _, from congr_arg _ supr_range
@@ -590,25 +595,24 @@ let ⟨i⟩ := ne, u := { filter .
590
595
rcases h a b with ⟨c, ha, hb⟩,
591
596
exact ⟨c, inter_mem_sets (ha hx) (hb hy)⟩
592
597
end } in
593
- have u = infi f, from eq_infi_of_mem_sets_iff_exists_mem (λ s, by simp only [mem_Union]),
598
+ have u = infi f, from eq_infi_of_mem_sets_iff_exists_mem
599
+ (λ s, by simp only [filter.mem_mk, mem_Union, filter.mem_sets]),
594
600
congr_arg filter.sets this.symm
595
601
596
602
lemma mem_infi {f : ι → filter α} (h : directed (≥) f) [nonempty ι] (s) :
597
603
s ∈ infi f ↔ ∃ i, s ∈ f i :=
598
- by simp only [infi_sets_eq h, mem_Union]
599
-
600
- lemma binfi_sets_eq {f : β → filter α} {s : set β}
601
- (h : directed_on (f ⁻¹'o (≥)) s) (ne : s.nonempty) :
602
- (⨅ i∈s, f i).sets = (⋃ i ∈ s, (f i).sets) :=
603
- by haveI := ne.to_subtype;
604
- calc (⨅ i ∈ s, f i).sets = (⨅ t : {t // t ∈ s}, (f t.val)).sets : by rw [infi_subtype]; refl
605
- ... = (⨆ t : {t // t ∈ s}, (f t.val).sets) : infi_sets_eq h.directed_coe
606
- ... = (⨆ t ∈ s, (f t).sets) : by rw [supr_subtype]; refl
604
+ by simp only [← filter.mem_sets, infi_sets_eq h, mem_Union]
607
605
608
606
lemma mem_binfi {f : β → filter α} {s : set β}
609
607
(h : directed_on (f ⁻¹'o (≥)) s) (ne : s.nonempty) {t : set α} :
610
608
t ∈ (⨅ i∈s, f i) ↔ ∃ i ∈ s, t ∈ f i :=
611
- by simp only [binfi_sets_eq h ne, mem_bUnion_iff]
609
+ by haveI : nonempty {x // x ∈ s} := ne.to_subtype;
610
+ erw [infi_subtype', mem_infi h.directed_coe, subtype.exists]; refl
611
+
612
+ lemma binfi_sets_eq {f : β → filter α} {s : set β}
613
+ (h : directed_on (f ⁻¹'o (≥)) s) (ne : s.nonempty) :
614
+ (⨅ i∈s, f i).sets = (⋃ i ∈ s, (f i).sets) :=
615
+ ext $ λ t, by simp [mem_binfi h ne]
612
616
613
617
lemma infi_sets_eq_finite {ι : Type *} (f : ι → filter α) :
614
618
(⨅i, f i).sets = (⋃t:finset ι, (⨅i∈t, f i).sets) :=
@@ -622,21 +626,19 @@ lemma infi_sets_eq_finite' (f : ι → filter α) :
622
626
by rw [← infi_sets_eq_finite, ← equiv.plift.surjective.infi_comp]; refl
623
627
624
628
lemma mem_infi_finite {ι : Type *} {f : ι → filter α} (s) :
625
- s ∈ infi f ↔ s ∈ ⋃ t:finset ι, ( ⨅i∈t, f i).sets :=
626
- set.ext_iff.1 (infi_sets_eq_finite f) s
629
+ s ∈ infi f ↔ ∃ t:finset ι, s ∈ ⨅i∈t, f i :=
630
+ ( set.ext_iff.1 (infi_sets_eq_finite f) s).trans mem_Union
627
631
628
632
lemma mem_infi_finite' {f : ι → filter α} (s) :
629
- s ∈ infi f ↔ s ∈ ⋃ t:finset (plift ι), ( ⨅i∈t, f (plift.down i)).sets :=
630
- set.ext_iff.1 (infi_sets_eq_finite' f) s
633
+ s ∈ infi f ↔ ∃ t:finset (plift ι), s ∈ ⨅i∈t, f (plift.down i) :=
634
+ ( set.ext_iff.1 (infi_sets_eq_finite' f) s).trans mem_Union
631
635
632
636
@[simp] lemma sup_join {f₁ f₂ : filter (filter α)} : (join f₁ ⊔ join f₂) = join (f₁ ⊔ f₂) :=
633
- filter_eq $ set.ext $ assume x,
634
- by simp only [supr_sets_eq, join, mem_sup_sets, iff_self, mem_set_of_eq]
637
+ filter.ext $ λ x, by simp only [mem_sup_sets, mem_join_sets]
635
638
636
639
@[simp] lemma supr_join {ι : Sort w} {f : ι → filter (filter α)} :
637
640
(⨆x, join (f x)) = join (⨆x, f x) :=
638
- filter_eq $ set.ext $ assume x,
639
- by simp only [supr_sets_eq, join, iff_self, mem_Inter, mem_set_of_eq]
641
+ filter.ext $ assume x, by simp only [mem_supr_sets, mem_join_sets]
640
642
641
643
instance : bounded_distrib_lattice (filter α) :=
642
644
{ le_sup_inf :=
@@ -751,7 +753,7 @@ lemma infi_sets_induct {f : ι → filter α} {s : set α} (hs : s ∈ infi f) {
751
753
(upw : ∀{s₁ s₂}, s₁ ⊆ s₂ → p s₁ → p s₂) : p s :=
752
754
begin
753
755
rw [mem_infi_finite'] at hs,
754
- simp only [mem_Union, ( finset.inf_eq_infi _ _).symm ] at hs,
756
+ simp only [← finset.inf_eq_infi] at hs,
755
757
rcases hs with ⟨is, his⟩,
756
758
revert s,
757
759
refine finset.induction_on is _ _,
@@ -770,12 +772,10 @@ le_antisymm
770
772
(by simp [le_inf_iff, inter_subset_left, inter_subset_right])
771
773
772
774
@[simp] lemma sup_principal {s t : set α} : 𝓟 s ⊔ 𝓟 t = 𝓟 (s ∪ t) :=
773
- filter_eq $ set.ext $
774
- by simp only [union_subset_iff, union_subset_iff, mem_sup_sets, forall_const, iff_self, mem_principal_sets]
775
+ filter.ext $ λ u, by simp only [union_subset_iff, mem_sup_sets, mem_principal_sets]
775
776
776
777
@[simp] lemma supr_principal {ι : Sort w} {s : ι → set α} : (⨆x, 𝓟 (s x)) = 𝓟 (⋃i, s i) :=
777
- filter_eq $ set.ext $ assume x, by simp only [supr_sets_eq, mem_principal_sets, mem_Inter];
778
- exact (@supr_le_iff (set α) _ _ _ _).symm
778
+ filter.ext $ assume x, by simp only [mem_supr_sets, mem_principal_sets, Union_subset_iff]
779
779
780
780
@[simp] lemma principal_eq_bot_iff {s : set α} : 𝓟 s = ⊥ ↔ s = ∅ :=
781
781
empty_in_sets_eq_bot.symm.trans $ mem_principal_sets.trans subset_empty_iff
@@ -1722,13 +1722,13 @@ lemma ne_bot.map (hf : ne_bot f) (m : α → β) : ne_bot (map m f) :=
1722
1722
instance map_ne_bot [hf : ne_bot f] : ne_bot (f.map m) := hf.map m
1723
1723
1724
1724
lemma sInter_comap_sets (f : α → β) (F : filter β) :
1725
- ⋂₀(comap f F).sets = ⋂ U ∈ F, f ⁻¹' U :=
1725
+ ⋂₀ (comap f F).sets = ⋂ U ∈ F, f ⁻¹' U :=
1726
1726
begin
1727
1727
ext x,
1728
1728
suffices : (∀ (A : set α) (B : set β), B ∈ F → f ⁻¹' B ⊆ A → x ∈ A) ↔
1729
1729
∀ (B : set β), B ∈ F → f x ∈ B,
1730
- by simp only [mem_sInter, mem_Inter, mem_comap_sets, this , and_imp, mem_comap_sets, exists_prop, mem_sInter ,
1731
- iff_self , mem_Inter, mem_preimage, exists_imp_distrib],
1730
+ by simp only [mem_sInter, mem_Inter, filter.mem_sets, mem_comap_sets, this , and_imp ,
1731
+ mem_comap_sets, exists_prop, mem_sInter , mem_Inter, mem_preimage, exists_imp_distrib],
1732
1732
split,
1733
1733
{ intros h U U_in,
1734
1734
simpa only [set.subset.refl, forall_prop_of_true, mem_preimage] using h (f ⁻¹' U) U U_in },
@@ -1748,7 +1748,7 @@ le_antisymm
1748
1748
map_infi_le
1749
1749
(assume s (hs : preimage m s ∈ infi f),
1750
1750
have ∃i, preimage m s ∈ f i,
1751
- by simp only [infi_sets_eq hf, mem_Union] at hs; assumption,
1751
+ by simp only [mem_infi hf, mem_Union] at hs; assumption,
1752
1752
let ⟨i, hi⟩ := this in
1753
1753
have (⨅ i, map m (f i)) ≤ 𝓟 s, from
1754
1754
infi_le_of_le i $ by simp only [le_principal_iff, mem_map]; assumption,
@@ -1770,7 +1770,7 @@ lemma map_inf' {f g : filter α} {m : α → β} {t : set α} (htf : t ∈ f) (h
1770
1770
(h : ∀x∈t, ∀y∈t, m x = m y → x = y) : map m (f ⊓ g) = map m f ⊓ map m g :=
1771
1771
begin
1772
1772
refine le_antisymm map_inf_le (assume s hs, _),
1773
- simp only [map, mem_inf_sets, exists_prop, mem_map, mem_preimage, mem_inf_sets] at hs ⊢,
1773
+ simp only [mem_inf_sets, exists_prop, mem_map, mem_preimage, mem_inf_sets] at hs ⊢,
1774
1774
rcases hs with ⟨t₁, h₁, t₂, h₂, hs⟩,
1775
1775
refine ⟨m '' (t₁ ∩ t), _, m '' (t₂ ∩ t), _, _⟩,
1776
1776
{ filter_upwards [h₁, htf] assume a h₁ h₂, mem_image_of_mem _ ⟨h₁, h₂⟩ },
0 commit comments