@@ -253,7 +253,6 @@ iff.intro
253
253
(assume x y _ hxy hx, mem_sets_of_superset hx hxy)
254
254
(assume x y _ _ hx hy, inter_mem_sets hx hy))
255
255
256
-
257
256
lemma mem_generate_iff (s : set $ set α) {U : set α} : U ∈ generate s ↔ ∃ t ⊆ s, finite t ∧ ⋂₀ t ⊆ U :=
258
257
begin
259
258
split ; intro h,
@@ -563,7 +562,7 @@ begin
563
562
exact h.trans ⟨λ ⟨i, pi, si⟩, ⟨⟨i, pi⟩, si⟩, λ ⟨⟨i, pi⟩, si⟩, ⟨i, pi, si⟩⟩
564
563
end
565
564
566
- lemma infi_sets_eq {f : ι → filter α} (h : directed (≥) f) ( ne : nonempty ι) :
565
+ lemma infi_sets_eq {f : ι → filter α} (h : directed (≥) f) [ ne : nonempty ι] :
567
566
(infi f).sets = (⋃ i, (f i).sets) :=
568
567
let ⟨i⟩ := ne, u := { filter .
569
568
sets := (⋃ i, (f i).sets),
@@ -580,20 +579,18 @@ let ⟨i⟩ := ne, u := { filter .
580
579
have u = infi f, from eq_infi_of_mem_sets_iff_exists_mem (λ s, by simp only [mem_Union]),
581
580
congr_arg filter.sets this.symm
582
581
583
- lemma mem_infi {f : ι → filter α} (h : directed (≥) f) (ne : nonempty ι) (s) :
582
+ lemma mem_infi {f : ι → filter α} (h : directed (≥) f) [ nonempty ι] (s) :
584
583
s ∈ infi f ↔ ∃ i, s ∈ f i :=
585
- by simp only [infi_sets_eq h ne , mem_Union]
584
+ by simp only [infi_sets_eq h, mem_Union]
586
585
587
586
@[nolint ge_or_gt] -- Intentional use of `≥`
588
587
lemma binfi_sets_eq {f : β → filter α} {s : set β}
589
588
(h : directed_on (f ⁻¹'o (≥)) s) (ne : s.nonempty) :
590
589
(⨅ i∈s, f i).sets = (⋃ i ∈ s, (f i).sets) :=
591
- let ⟨i, hi⟩ := ne in
590
+ by haveI := ne.to_subtype;
592
591
calc (⨅ i ∈ s, f i).sets = (⨅ t : {t // t ∈ s}, (f t.val)).sets : by rw [infi_subtype]; refl
593
- ... = (⨆ t : {t // t ∈ s}, (f t.val).sets) : infi_sets_eq
594
- (assume ⟨x, hx⟩ ⟨y, hy⟩, match h x hx y hy with ⟨z, h₁, h₂, h₃⟩ := ⟨⟨z, h₁⟩, h₂, h₃⟩ end )
595
- ⟨⟨i, hi⟩⟩
596
- ... = (⨆ t ∈ {t | t ∈ s}, (f t).sets) : by rw [supr_subtype]; refl
592
+ ... = (⨆ t : {t // t ∈ s}, (f t.val).sets) : infi_sets_eq h.directed_coe
593
+ ... = (⨆ t ∈ s, (f t).sets) : by rw [supr_subtype]; refl
597
594
598
595
@[nolint ge_or_gt] -- Intentional use of `≥`
599
596
lemma mem_binfi {f : β → filter α} {s : set β}
@@ -606,7 +603,6 @@ lemma infi_sets_eq_finite (f : ι → filter α) :
606
603
begin
607
604
rw [infi_eq_infi_finset, infi_sets_eq],
608
605
exact (directed_of_sup $ λs₁ s₂ hs, infi_le_infi $ λi, infi_le_infi_const $ λh, hs h),
609
- apply_instance
610
606
end
611
607
612
608
lemma mem_infi_finite {f : ι → filter α} (s) :
@@ -684,13 +680,13 @@ end
684
680
685
681
/-- If `f : ι → filter α` is directed, `ι` is not empty, and `∀ i, f i ≠ ⊥`, then `infi f ≠ ⊥`.
686
682
See also `infi_ne_bot_of_directed` for a version assuming `nonempty α` instead of `nonempty ι`. -/
687
- lemma infi_ne_bot_of_directed' {f : ι → filter α} [hn : nonempty ι]
683
+ lemma infi_ne_bot_of_directed' {f : ι → filter α} [nonempty ι]
688
684
(hd : directed (≥) f) (hb : ∀i, ne_bot (f i)) : ne_bot (infi f) :=
689
685
begin
690
686
intro h,
691
687
have he: ∅ ∈ (infi f), from h.symm ▸ (mem_bot_sets : ∅ ∈ (⊥ : filter α)),
692
688
obtain ⟨i, hi⟩ : ∃i, ∅ ∈ f i,
693
- from (mem_infi hd hn ∅).1 he,
689
+ from (mem_infi hd ∅).1 he,
694
690
exact hb i (empty_in_sets_eq_bot.1 hi)
695
691
end
696
692
@@ -1639,13 +1635,13 @@ lemma map_infi_le {f : ι → filter α} {m : α → β} :
1639
1635
map m (infi f) ≤ (⨅ i, map m (f i)) :=
1640
1636
le_infi $ assume i, map_mono $ infi_le _ _
1641
1637
1642
- lemma map_infi_eq {f : ι → filter α} {m : α → β} (hf : directed (≥) f) (hι : nonempty ι) :
1638
+ lemma map_infi_eq {f : ι → filter α} {m : α → β} (hf : directed (≥) f) [ nonempty ι] :
1643
1639
map m (infi f) = (⨅ i, map m (f i)) :=
1644
1640
le_antisymm
1645
1641
map_infi_le
1646
1642
(assume s (hs : preimage m s ∈ infi f),
1647
1643
have ∃i, preimage m s ∈ f i,
1648
- by simp only [infi_sets_eq hf hι , mem_Union] at hs; assumption,
1644
+ by simp only [infi_sets_eq hf, mem_Union] at hs; assumption,
1649
1645
let ⟨i, hi⟩ := this in
1650
1646
have (⨅ i, map m (f i)) ≤ 𝓟 s, from
1651
1647
infi_le_of_le i $ by simp only [le_principal_iff, mem_map]; assumption,
@@ -1654,12 +1650,11 @@ le_antisymm
1654
1650
lemma map_binfi_eq {ι : Type w} {f : ι → filter α} {m : α → β} {p : ι → Prop }
1655
1651
(h : directed_on (f ⁻¹'o (≥)) {x | p x}) (ne : ∃i, p i) :
1656
1652
map m (⨅i (h : p i), f i) = (⨅i (h: p i), map m (f i)) :=
1657
- let ⟨i, hi⟩ := ne in
1658
- calc map m (⨅i (h : p i), f i) = map m (⨅i:subtype p, f i.val) : by simp only [infi_subtype, eq_self_iff_true]
1659
- ... = (⨅i:subtype p, map m (f i.val)) : map_infi_eq
1660
- (assume ⟨x, hx⟩ ⟨y, hy⟩, match h x hx y hy with ⟨z, h₁, h₂, h₃⟩ := ⟨⟨z, h₁⟩, h₂, h₃⟩ end )
1661
- ⟨⟨i, hi⟩⟩
1662
- ... = (⨅i (h : p i), map m (f i)) : by simp only [infi_subtype, eq_self_iff_true]
1653
+ begin
1654
+ haveI := nonempty_subtype.2 ne,
1655
+ simp only [infi_subtype'],
1656
+ exact map_infi_eq h.directed_coe
1657
+ end
1663
1658
1664
1659
lemma map_inf_le {f g : filter α} {m : α → β} : map m (f ⊓ g) ≤ map m f ⊓ map m g :=
1665
1660
(@map_mono _ _ m).map_inf_le f g
0 commit comments