/- Copyright (c) 2020 Yury G. Kudryashov. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Yury G. Kudryashov ! This file was ported from Lean 3 source module order.filter.countable_Inter ! leanprover-community/mathlib commit b9e46fe101fc897fb2e7edaf0bf1f09ea49eb81a ! Please do not edit these lines, except to modify the commit id ! if you have ported upstream changes. -/ import Mathlib.Order.Filter.Basic import Mathlib.Data.Set.Countable /-! # Filters with countable intersection property In this file we define `CountableInterFilter` to be the class of filters with the following property: for any countable collection of sets `s ∈ l` their intersection belongs to `l` as well. Two main examples are the `residual` filter defined in `Mathlib.Topology.GDelta` and the `MeasureTheory.Measure.ae` filter defined in `MeasureTheory.MeasureSpace`. We reformulate the definition in terms of indexed intersection and in terms of `Filter.Eventually` and provide instances for some basic constructions (`⊥`, `⊤`, `Filter.principal`, `Filter.map`, `Filter.comap`, `Inf.inf`). We also provide a custom constructor `Filter.ofCountableInter` that deduces two axioms of a `Filter` from the countable intersection property. ## Tags filter, countable -/ open Set Filter open Filter variable {ι :ι: Sort ?u.136SortSort _: Type ?u.7308_} {Sort _: Type ?u.7308αα: Type ?u.14β :β: Type ?u.142Type _} /-- A filter `l` has the countable intersection property if for any countable collection of sets `s ∈ l` their intersection belongs to `l` as well. -/ class CountableInterFilter (Type _: Type (?u.3010+1)l : Filterl: Filter αα) :α: Type ?u.14Prop where /-- For a countable collection of sets `s ∈ l`, their intersection belongs to `l` as well. -/ countable_sInter_mem : ∀ S : Set (SetProp: Typeα), S.Countable → (∀α: Type ?u.14s ∈ S,s: ?m.38s ∈s: ?m.38l) → ⋂₀ S ∈l: Filter αl #align countable_Inter_filter CountableInterFilter variable {l: Filter αl : Filterl: Filter αα} [CountableInterFilterα: Type ?u.166l] theoreml: Filter αcountable_sInter_mem {S : Set (Setα)} (α: Type ?u.166hSc : S.Countable) : ⋂₀ S ∈hSc: Set.Countable Sl ↔ ∀l: Filter αs ∈ S,s: ?m.214s ∈s: ?m.214l := ⟨funl: Filter αhShS: ?m.286_s_s: ?m.289hs => mem_of_superseths: ?m.292hS (sInter_subset_of_memhS: ?m.286hs), CountableInterFilter.countable_sInter_mem _hs: ?m.292hSc⟩ #align countable_sInter_mem countable_sInter_mem theoremhSc: Set.Countable Scountable_iInter_mem [Countableι] {ι: Sort ?u.376s :s: ι → Set αι → Setι: Sort ?u.376α} : (⋂α: Type ?u.379i,i: ?m.414ss: ι → Set αi) ∈i: ?m.414l ↔ ∀l: Filter αi,i: ?m.434ss: ι → Set αi ∈i: ?m.434l := sInter_rangel: Filter αs ▸ (countable_sInter_mem (s: ι → Set αcountable_rangecountable_range: ∀ {β : Type ?u.480} {ι : Sort ?u.479} [inst : Countable ι] (f : ι → β), Set.Countable (range f)_)).trans forall_range_iff #align countable_Inter_mem countable_iInter_mem theorem_: ?m.482 → ?m.481countable_bInter_mem {ι :ι: Type ?u.660Type _} {Type _: Type (?u.660+1)S : SetS: Set ιι} (ι: Type ?u.660hS :hS: Set.Countable SS.Countable) {s : ∀S: Set ιi ∈i: ?m.674S, SetS: Set ια} : (⋂α: Type ?u.645i, ⋂i: ?m.727hi :hi: i ∈ Si ∈i: ?m.727S, sS: Set ιi ‹_›) ∈i: ?m.727l ↔ ∀l: Filter αi, ∀i: ?m.793hi :hi: i ∈ Si ∈i: ?m.793S, sS: Set ιi ‹_› ∈i: ?m.793l :=l: Filter αGoals accomplished! 🐙#align countable_bInter_mem countable_bInter_mem theoremGoals accomplished! 🐙eventually_countable_forall [Countableeventually_countable_forall: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {p : α → ι → Prop}, Filter.Eventually (fun x => ∀ (i : ι), p x i) l ↔ ∀ (i : ι), Filter.Eventually (fun x => p x i) lι] {ι: Sort ?u.1134p :p: α → ι → Propα →α: Type ?u.1137ι →ι: Sort ?u.1134Prop} : (∀ᶠProp: Typex inx: ?m.1164l, ∀l: Filter αi,i: ?m.1167pp: α → ι → Propxx: ?m.1164i) ↔ ∀i: ?m.1167i, ∀ᶠi: ?m.1176x inx: ?m.1182l,l: Filter αpp: α → ι → Propxx: ?m.1182i :=i: ?m.1176Goals accomplished! 🐙ι: Sort u_1
α: Type u_2
β: Type ?u.1140
l: Filter α
inst✝¹: CountableInterFilter l
inst✝: Countable ι
p: α → ι → PropFilter.Eventually (fun x => ∀ (i : ι), p x i) l ↔ ∀ (i : ι), Filter.Eventually (fun x => p x i) l#align eventually_countable_forallGoals accomplished! 🐙eventually_countable_forall theoremeventually_countable_forall: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {p : α → ι → Prop}, Filter.Eventually (fun x => ∀ (i : ι), p x i) l ↔ ∀ (i : ι), Filter.Eventually (fun x => p x i) leventually_countable_ball {eventually_countable_ball: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {p : α → (i : ι) → i ∈ S → Prop}, Filter.Eventually (fun x => ∀ (i : ι) (hi : i ∈ S), p x i hi) l ↔ ∀ (i : ι) (hi : i ∈ S), Filter.Eventually (fun x => p x i hi) lι :ι: Type ?u.1514Type _} {Type _: Type (?u.1514+1)S : SetS: Set ιι} (ι: Type ?u.1514hS :hS: Set.Countable SS.Countable) {p :S: Set ια → ∀α: Type ?u.1499i ∈i: ?m.1530S,S: Set ιProp} : (∀ᶠProp: Typex inx: ?m.1572l, ∀l: Filter αii: ?m.1575hi, phi: ?m.1578xx: ?m.1572ii: ?m.1575hi) ↔ ∀hi: ?m.1578ii: ?m.1589hi, ∀ᶠhi: ?m.1592x inx: ?m.1598l, pl: Filter αxx: ?m.1598ii: ?m.1589hi :=hi: ?m.1592Goals accomplished! 🐙ι✝: Sort ?u.1496
α: Type u_2
β: Type ?u.1502
l: Filter α
inst✝: CountableInterFilter l
ι: Type u_1
S: Set ι
hS: Set.Countable S
p: α → (i : ι) → i ∈ S → PropFilter.Eventually (fun x => ∀ (i : ι) (hi : i ∈ S), p x i hi) l ↔ ∀ (i : ι) (hi : i ∈ S), Filter.Eventually (fun x => p x i hi) l#align eventually_countable_ballGoals accomplished! 🐙eventually_countable_ball theoremeventually_countable_ball: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {p : α → (i : ι) → i ∈ S → Prop}, Filter.Eventually (fun x => ∀ (i : ι) (hi : i ∈ S), p x i hi) l ↔ ∀ (i : ι) (hi : i ∈ S), Filter.Eventually (fun x => p x i hi) lEventuallyLE.countable_iUnion [Countableι] {ι: Sort ?u.2269ss: ι → Set αt :t: ι → Set αι → Setι: Sort ?u.2269α} (h : ∀α: Type ?u.2272i,i: ?m.2303ss: ι → Set αi ≤ᶠ[i: ?m.2303l]l: Filter αtt: ι → Set αi) : (⋃i: ?m.2303i,i: ?m.2375ss: ι → Set αi) ≤ᶠ[i: ?m.2375l] ⋃l: Filter αi,i: ?m.2390tt: ι → Set αi := (i: ?m.2390eventually_countable_forall.2 h).eventually_countable_forall: ∀ {ι : Sort ?u.2409} {α : Type ?u.2410} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {p : α → ι → Prop}, Filter.Eventually (fun x => ∀ (i : ι), p x i) l ↔ ∀ (i : ι), Filter.Eventually (fun x => p x i) lmono funmono: ∀ {α : Type ?u.2470} {p q : α → Prop} {f : Filter α}, Filter.Eventually (fun x => p x) f → (∀ (x : α), p x → q x) → Filter.Eventually (fun x => q x) f__: ?m.2493hsthst: ?m.2496hs => mem_iUnion.2 <| (mem_iUnion.1hs: ?m.2501hs).imphs: ?m.2501hst #align eventually_le.countable_Union EventuallyLE.countable_iUnion theoremhst: ?m.2496EventuallyEq.countable_iUnion [Countableι] {ι: Sort ?u.2654ss: ι → Set αt :t: ι → Set αι → Setι: Sort ?u.2654α} (h : ∀α: Type ?u.2657i,i: ?m.2688ss: ι → Set αi =ᶠ[i: ?m.2688l]l: Filter αtt: ι → Set αi) : (⋃i: ?m.2688i,i: ?m.2717ss: ι → Set αi) =ᶠ[i: ?m.2717l] ⋃l: Filter αi,i: ?m.2732tt: ι → Set αi := (EventuallyLE.countable_iUnion funi: ?m.2732i => (hi: ?m.2761i).i: ?m.2761le).antisymm (EventuallyLE.countable_iUnion funi => (hi: ?m.2952i).symm.i: ?m.2952le) #align eventually_eq.countable_Union EventuallyEq.countable_iUnion theoremEventuallyLE.countable_bUnion {EventuallyLE.countable_bUnion: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iUnion fun i => iUnion fun h => s i h) ≤ᶠ[l] iUnion fun i => iUnion fun h => t i hι :ι: Type u_1Type _} {Type _: Type (?u.3025+1)S : SetS: Set ιι} (ι: Type ?u.3025hS :hS: Set.Countable SS.Countable) {s t : ∀S: Set ιi ∈i: ?m.3039S, SetS: Set ια} (h : ∀α: Type ?u.3010ii: ?m.3122hi, shi: ?m.3125ii: ?m.3122hi ≤ᶠ[hi: ?m.3125l] tl: Filter αii: ?m.3122hi) : (⋃hi: ?m.3125i ∈i: ?m.3198S, sS: Set ιi ‹_›) ≤ᶠ[i: ?m.3198l] ⋃l: Filter αi ∈i: ?m.3257S, tS: Set ιi ‹_› :=i: ?m.3257Goals accomplished! 🐙#align eventually_le.countable_bUnionGoals accomplished! 🐙EventuallyLE.countable_bUnion theoremEventuallyLE.countable_bUnion: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iUnion fun i => iUnion fun h => s i h) ≤ᶠ[l] iUnion fun i => iUnion fun h => t i hEventuallyEq.countable_bUnion {ι :ι: Type u_1Type _} {Type _: Type (?u.3989+1)S : SetS: Set ιι} (ι: Type ?u.3989hS :hS: Set.Countable SS.Countable) {s t : ∀S: Set ιi ∈i: ?m.4046S, SetS: Set ια} (h : ∀α: Type ?u.3974ii: ?m.4086hi, shi: ?m.4089ii: ?m.4086hi =ᶠ[hi: ?m.4089l] tl: Filter αii: ?m.4086hi) : (⋃hi: ?m.4089i ∈i: ?m.4119S, sS: Set ιi ‹_›) =ᶠ[i: ?m.4119l] ⋃l: Filter αi ∈i: ?m.4178S, tS: Set ιi ‹_› := (i: ?m.4178EventuallyLE.countable_bUnionEventuallyLE.countable_bUnion: ∀ {α : Type ?u.4251} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.4250} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iUnion fun i => iUnion fun h => s i h) ≤ᶠ[l] iUnion fun i => iUnion fun h => t i hhS funhS: Set.Countable Sii: ?m.4267hi => (hhi: ?m.4270ii: ?m.4267hi).hi: ?m.4270le).antisymm (EventuallyLE.countable_bUnionEventuallyLE.countable_bUnion: ∀ {α : Type ?u.4406} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.4405} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iUnion fun i => iUnion fun h => s i h) ≤ᶠ[l] iUnion fun i => iUnion fun h => t i hhS funhS: Set.Countable Sii: ?m.4447hi => (hhi: ?m.4450ii: ?m.4447hi).symm.hi: ?m.4450le) #align eventually_eq.countable_bUnionEventuallyEq.countable_bUnion theoremEventuallyEq.countable_bUnion: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi =ᶠ[l] t i hi) → (iUnion fun i => iUnion fun h => s i h) =ᶠ[l] iUnion fun i => iUnion fun h => t i hEventuallyLE.countable_iInter [Countableι] {ι: Sort ?u.4526ss: ι → Set αt :t: ι → Set αι → Setι: Sort ?u.4526α} (h : ∀α: Type ?u.4529i,i: ?m.4560ss: ι → Set αi ≤ᶠ[i: ?m.4560l]l: Filter αtt: ι → Set αi) : (⋂i: ?m.4560i,i: ?m.4632ss: ι → Set αi) ≤ᶠ[i: ?m.4632l] ⋂l: Filter αi,i: ?m.4647tt: ι → Set αi := (i: ?m.4647eventually_countable_forall.2 h).eventually_countable_forall: ∀ {ι : Sort ?u.4666} {α : Type ?u.4667} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {p : α → ι → Prop}, Filter.Eventually (fun x => ∀ (i : ι), p x i) l ↔ ∀ (i : ι), Filter.Eventually (fun x => p x i) lmono funmono: ∀ {α : Type ?u.4727} {p q : α → Prop} {f : Filter α}, Filter.Eventually (fun x => p x) f → (∀ (x : α), p x → q x) → Filter.Eventually (fun x => q x) f__: ?m.4750hsthst: ?m.4753hs => mem_iInter.2 funhs: ?m.4758i =>i: ?m.4790hsthst: ?m.4753_ (mem_iInter.1_: ιhshs: ?m.4758i) #align eventually_le.countable_Inter EventuallyLE.countable_iInter theoremi: ?m.4790EventuallyEq.countable_iInter [Countableι] {ι: Sort ?u.4906ss: ι → Set αt :t: ι → Set αι → Setι: Sort ?u.4906α} (h : ∀α: Type ?u.4909i,i: ?m.4940ss: ι → Set αi =ᶠ[i: ?m.4940l]l: Filter αtt: ι → Set αi) : (⋂i: ?m.4940i,i: ?m.4969ss: ι → Set αi) =ᶠ[i: ?m.4969l] ⋂l: Filter αi,i: ?m.4984tt: ι → Set αi := (EventuallyLE.countable_iInter funi: ?m.4984i => (hi: ?m.5013i).i: ?m.5013le).antisymm (EventuallyLE.countable_iInter funi => (hi: ?m.5204i).symm.i: ?m.5204le) #align eventually_eq.countable_Inter EventuallyEq.countable_iInter theoremEventuallyLE.countable_bInter {EventuallyLE.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) ≤ᶠ[l] iInter fun i => iInter fun h => t i hι :ι: Type u_1Type _} {Type _: Type (?u.5277+1)S : SetS: Set ιι} (ι: Type ?u.5277hS :hS: Set.Countable SS.Countable) {s t : ∀S: Set ιi ∈i: ?m.5334S, SetS: Set ια} (h : ∀α: Type ?u.5262ii: ?m.5374hi, shi: ?m.5377ii: ?m.5374hi ≤ᶠ[hi: ?m.5377l] tl: Filter αii: ?m.5374hi) : (⋂hi: ?m.5377i ∈i: ?m.5450S, sS: Set ιi ‹_›) ≤ᶠ[i: ?m.5450l] ⋂l: Filter αi ∈i: ?m.5509S, tS: Set ιi ‹_› :=i: ?m.5509Goals accomplished! 🐙#align eventually_le.countable_bInterGoals accomplished! 🐙EventuallyLE.countable_bInter theoremEventuallyLE.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) ≤ᶠ[l] iInter fun i => iInter fun h => t i hEventuallyEq.countable_bInter {EventuallyEq.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi =ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) =ᶠ[l] iInter fun i => iInter fun h => t i hι :ι: Type ?u.6241Type _} {Type _: Type (?u.6241+1)S : SetS: Set ιι} (ι: Type ?u.6241hS :hS: Set.Countable SS.Countable) {s t : ∀S: Set ιi ∈i: ?m.6298S, SetS: Set ια} (h : ∀α: Type ?u.6226ii: ?m.6338hi, shi: ?m.6341ii: ?m.6338hi =ᶠ[hi: ?m.6341l] tl: Filter αii: ?m.6338hi) : (⋂hi: ?m.6341i ∈i: ?m.6371S, sS: Set ιi ‹_›) =ᶠ[i: ?m.6371l] ⋂l: Filter αi ∈i: ?m.6430S, tS: Set ιi ‹_› := (i: ?m.6430EventuallyLE.countable_bInterEventuallyLE.countable_bInter: ∀ {α : Type ?u.6503} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.6502} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) ≤ᶠ[l] iInter fun i => iInter fun h => t i hhS funhS: Set.Countable Sii: ?m.6519hi => (hhi: ?m.6522ii: ?m.6519hi).hi: ?m.6522le).antisymm (EventuallyLE.countable_bInterEventuallyLE.countable_bInter: ∀ {α : Type ?u.6658} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.6657} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) ≤ᶠ[l] iInter fun i => iInter fun h => t i hhS funhS: Set.Countable Sii: ?m.6699hi => (hhi: ?m.6702ii: ?m.6699hi).symm.hi: ?m.6702le) #align eventually_eq.countable_bInterEventuallyEq.countable_bInter /-- Construct a filter with countable intersection property. This constructor deduces `Filter.univ_sets` and `Filter.inter_sets` from the countable intersection property. -/ defEventuallyEq.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S → ∀ {s t : (i : ι) → i ∈ S → Set α}, (∀ (i : ι) (hi : i ∈ S), s i hi =ᶠ[l] t i hi) → (iInter fun i => iInter fun h => s i h) =ᶠ[l] iInter fun i => iInter fun h => t i hFilter.ofCountableInter (l : Set (Setα)) (hp : ∀ S : Set (Setα: Type ?u.6781α), S.Countable → S ⊆ l → ⋂₀ S ∈ l) (h_mono : ∀α: Type ?u.6781ss: ?m.6873t,t: ?m.6876s ∈ l →s: ?m.6873s ⊆s: ?m.6873t →t: ?m.6876t ∈ l) : Filtert: ?m.6876α where sets := l univ_sets := @sInter_emptyα: Type ?u.6781α ▸ hp _α: Type ?u.6781countable_empty (empty_subsetcountable_empty: ∀ {α : Type ?u.6980}, Set.Countable ∅_) sets_of_superset := h_mono_: Set ?m.6986__: Set α_ inter_sets {_: Set αss: ?m.7019t}t: ?m.7022hshs: ?m.7025ht := sInter_pairht: ?m.7028ss: ?m.7019t ▸ hp _ ((t: ?m.7022countable_singletoncountable_singleton: ∀ {α : Type ?u.7036} (a : α), Set.Countable {a}_)._: ?m.7037insertinsert: ∀ {α : Type ?u.7039} {s : Set α} (a : α), Set.Countable s → Set.Countable (insert a s)_) (insert_subset.2 ⟨_: ?m.7044hs, singleton_subset_iff.2hs: ?m.7025ht⟩) #align filter.of_countable_Inter Filter.ofCountableInter instanceht: ?m.7028Filter.countable_Inter_ofCountableInter (l : Set (SetFilter.countable_Inter_ofCountableInter: ∀ {α : Type u_1} (l : Set (Set α)) (hp : ∀ (S : Set (Set α)), Set.Countable S → S ⊆ l → ⋂₀ S ∈ l) (h_mono : ∀ (s t : Set α), s ∈ l → s ⊆ t → t ∈ l), CountableInterFilter (ofCountableInter l hp h_mono)α)) (hp : ∀ S : Set (Setα: Type ?u.7311α), S.Countable → S ⊆ l → ⋂₀ S ∈ l) (h_mono : ∀α: Type ?u.7311ss: ?m.7403t,t: ?m.7406s ∈ l →s: ?m.7403s ⊆s: ?m.7403t →t: ?m.7406t ∈ l) : CountableInterFilter (Filter.ofCountableInter l hp h_mono) := ⟨hp⟩ #align filter.countable_Inter_of_countable_Intert: ?m.7406Filter.countable_Inter_ofCountableInter @[simp] theoremFilter.countable_Inter_ofCountableInter: ∀ {α : Type u_1} (l : Set (Set α)) (hp : ∀ (S : Set (Set α)), Set.Countable S → S ⊆ l → ⋂₀ S ∈ l) (h_mono : ∀ (s t : Set α), s ∈ l → s ⊆ t → t ∈ l), CountableInterFilter (ofCountableInter l hp h_mono)Filter.mem_ofCountableInter {l : Set (Setα)} (hp : ∀ S : Set (Setα: Type ?u.7625α), S.Countable → S ⊆ l → ⋂₀ S ∈ l) (h_mono : ∀α: Type ?u.7625ss: ?m.7717t,t: ?m.7720s ∈ l →s: ?m.7717s ⊆s: ?m.7717t →t: ?m.7720t ∈ l) {t: ?m.7720s : Sets: Set αα} :α: Type ?u.7625s ∈ Filter.ofCountableInter l hp h_mono ↔s: Set αs ∈ l := Iff.rfl #align filter.mem_of_countable_Inter Filter.mem_ofCountableInter instances: Set αcountableInterFilter_principal (countableInterFilter_principal: ∀ (s : Set α), CountableInterFilter (𝓟 s)s : Sets: Set αα) : CountableInterFilter (𝓟α: Type ?u.7935s) := ⟨funs: Set α__: ?m.7977__: ?m.7980hS => subset_sInterhS: ?m.7983hS⟩ #align countable_Inter_filter_principalhS: ?m.7983countableInterFilter_principal instancecountableInterFilter_principal: ∀ {α : Type u_1} (s : Set α), CountableInterFilter (𝓟 s)countableInterFilter_bot : CountableInterFilter (countableInterFilter_bot: CountableInterFilter ⊥⊥ : Filter⊥: ?m.8078α) :=α: Type ?u.8058Goals accomplished! 🐙#align countable_Inter_filter_botGoals accomplished! 🐙countableInterFilter_bot instancecountableInterFilter_bot: ∀ {α : Type u_1}, CountableInterFilter ⊥countableInterFilter_top : CountableInterFilter (countableInterFilter_top: ∀ {α : Type u_1}, CountableInterFilter ⊤⊤ : Filter⊤: ?m.8190α) :=α: Type ?u.8170Goals accomplished! 🐙CountableInterFilter (𝓟 univ)CountableInterFilter (𝓟 univ)#align countable_Inter_filter_topGoals accomplished! 🐙countableInterFilter_topcountableInterFilter_top: ∀ {α : Type u_1}, CountableInterFilter ⊤instance (instance: ∀ {α : Type u_1} {β : Type u_2} (l : Filter β) [inst : CountableInterFilter l] (f : α → β), CountableInterFilter (comap f l)l : Filterl: Filter ββ) [CountableInterFilterβ: Type ?u.8271l] (l: Filter βf :f: α → βα →α: Type ?u.8268β) : CountableInterFilter (comapβ: Type ?u.8271ff: α → βl) :=l: Filter βGoals accomplished! 🐙ι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (comap f l)ι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (comap f l)ι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (comap f l)ι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → β
S: Set (Set α)
hSc: Set.Countable S
t: Set α → Set β
htl: ∀ (s : Set α), s ∈ S → t s ∈ l
ht: ∀ (s : Set α), s ∈ S → f ⁻¹' t s ⊆ s
this: (iInter fun s => iInter fun h => t s) ∈ lι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (comap f l)ι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → β
S: Set (Set α)
hSc: Set.Countable S
t: Set α → Set β
htl: ∀ (s : Set α), s ∈ S → t s ∈ l
ht: ∀ (s : Set α), s ∈ S → f ⁻¹' t s ⊆ s
this: (iInter fun s => iInter fun h => t s) ∈ lι: Sort ?u.8265
α: Type ?u.8268
β: Type ?u.8271
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter β
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (comap f l)Goals accomplished! 🐙instance (instance: ∀ {α : Type u_1} {β : Type u_2} (l : Filter α) [inst : CountableInterFilter l] (f : α → β), CountableInterFilter (map f l)l : Filterl: Filter αα) [CountableInterFilterα: Type ?u.15937l] (l: Filter αf :f: α → βα →α: Type ?u.15937β) : CountableInterFilter (mapβ: Type ?u.15940ff: α → βl) :=l: Filter αGoals accomplished! 🐙ι: Sort ?u.15934
α: Type ?u.15937
β: Type ?u.15940
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter α
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (map f l)ι: Sort ?u.15934
α: Type ?u.15937
β: Type ?u.15940
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter α
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (map f l)ι: Sort ?u.15934
α: Type ?u.15937
β: Type ?u.15940
l✝: Filter α
inst✝¹: CountableInterFilter l✝
l: Filter α
inst✝: CountableInterFilter l
f: α → βCountableInterFilter (map f l)/-- Infimum of two `CountableInterFilter`s is a `CountableInterFilter`. This is useful, e.g., to automatically get an instance for `residual α ⊓ 𝓟 s`. -/ instanceGoals accomplished! 🐙countableInterFilter_inf (countableInterFilter_inf: ∀ (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ ⊓ l₂)l₁l₁: Filter αl₂ : Filterl₂: Filter αα) [CountableInterFilterα: Type ?u.16596l₁] [CountableInterFilterl₁: Filter αl₂] : CountableInterFilter (l₂: Filter αl₁ ⊓l₁: Filter αl₂) :=l₂: Filter αGoals accomplished! 🐙ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊓ l₂ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s: (s : Set α) → s ∈ S → Set α
hs: ∀ (s_1 : Set α) (a : s_1 ∈ S), s s_1 a ∈ l₁
t: (s : Set α) → s ∈ S → Set α
ht: ∀ (s : Set α) (a : s ∈ S), t s a ∈ l₂
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 aι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
ht: ∀ (s : Set α) (a : s ∈ S), t s a ∈ l₂
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ Sι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ Sι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ Sι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ Sι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊓ l₂)ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ S
h₁ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ S
h₂ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ Sι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ S
h₁ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ S
h₂ι: Sort ?u.16593
α: Type ?u.16596
β: Type ?u.16599
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
s, t: (s : Set α) → s ∈ S → Set α
hst: ∀ (s_1 : Set α) (a : s_1 ∈ S), s_1 = s s_1 a ∩ t s_1 a
hs: (iInter fun i => iInter fun h => s i h) ∈ l₁
ht: (iInter fun i => iInter fun h => t i h) ∈ l₂
i: Set α
hi: i ∈ S#align countable_Inter_filter_infGoals accomplished! 🐙countableInterFilter_inf /-- Supremum of two `CountableInterFilter`s is a `CountableInterFilter`. -/ instancecountableInterFilter_inf: ∀ {α : Type u_1} (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ ⊓ l₂)countableInterFilter_sup (countableInterFilter_sup: ∀ (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ ⊔ l₂)l₁l₁: Filter αl₂ : Filterl₂: Filter αα) [CountableInterFilterα: Type ?u.17378l₁] [CountableInterFilterl₁: Filter αl₂] : CountableInterFilter (l₂: Filter αl₁ ⊔l₁: Filter αl₂) :=l₂: Filter αGoals accomplished! 🐙ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊔ l₂)ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊔ l₂
refine'_1ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊔ l₂
refine'_2ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊔ l₂)ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊔ l₂
refine'_1ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊔ l₂
refine'_2ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊔ l₂)ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂
S: Set (Set α)
hSc: Set.Countable S
hS: ∀ (s : Set α), s ∈ S → s ∈ l₁ ⊔ l₂
s: Set α
hs: s ∈ S
refine'_1s ∈ l₁ι: Sort ?u.17375
α: Type ?u.17378
β: Type ?u.17381
l: Filter α
inst✝²: CountableInterFilter l
l₁, l₂: Filter α
inst✝¹: CountableInterFilter l₁
inst✝: CountableInterFilter l₂CountableInterFilter (l₁ ⊔ l₂)#align countable_Inter_filter_supGoals accomplished! 🐙countableInterFilter_sup namespace Filter variable (g : Set (SetcountableInterFilter_sup: ∀ {α : Type u_1} (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ ⊔ l₂)α)) /-- `Filter.CountableGenerateSets g` is the (sets of the) greatest `countableInterFilter` containing `g`.-/ inductive CountableGenerateSets : Setα: Type ?u.17672α →α: Type ?u.17694Prop | basic {Prop: Types : Sets: Set αα} :α: Type ?u.17694s ∈ g → CountableGenerateSetss: Set αs |s: Set αuniv : CountableGenerateSets univ |univ: ∀ {α : Type u_1} {g : Set (Set α)}, CountableGenerateSets g univsuperset {superset: ∀ {α : Type u_1} {g : Set (Set α)} {s t : Set α}, CountableGenerateSets g s → s ⊆ t → CountableGenerateSets g tss: Set αt : Sett: Set αα} : CountableGenerateSetsα: Type ?u.17694s →s: Set αs ⊆s: Set αt → CountableGenerateSetst: Set αt |t: Set αsInter {S : Set (SetsInter: ∀ {α : Type u_1} {g S : Set (Set α)}, Set.Countable S → (∀ (s : Set α), s ∈ S → CountableGenerateSets g s) → CountableGenerateSets g (⋂₀ S)α)} : S.Countable → (∀α: Type ?u.17694s ∈ S, CountableGenerateSetss: ?m.17816s) → CountableGenerateSets (⋂₀ S) #align filter.countable_generate_sets Filter.CountableGenerateSets /-- `Filter.countableGenerate g` is the greatest `countableInterFilter` containing `g`.-/ defs: ?m.17816countableGenerate : FiltercountableGenerate: Filter αα := ofCountableInter (CountableGenerateSets g) (funα: Type ?u.18119_ =>_: ?m.18151CountableGenerateSets.sInter) funCountableGenerateSets.sInter: ∀ {α : Type ?u.18153} {g S : Set (Set α)}, Set.Countable S → (∀ (s : Set α), s ∈ S → CountableGenerateSets g s) → CountableGenerateSets g (⋂₀ S)__: ?m.18183_ =>_: ?m.18186CountableGenerateSets.superset --deriving CountableInterFilter #align filter.countable_generate Filter.countableGenerate --Porting note: could not de derivedCountableGenerateSets.superset: ∀ {α : Type ?u.18188} {g : Set (Set α)} {s t : Set α}, CountableGenerateSets g s → s ⊆ t → CountableGenerateSets g tinstance : CountableInterFilter (countableGenerate g) :=instance: ∀ {α : Type u_1} (g : Set (Set α)), CountableInterFilter (countableGenerate g)Goals accomplished! 🐙ι: Sort ?u.18291
α: Type ?u.18294
β: Type ?u.18297
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)CountableInterFilter (ofCountableInter (CountableGenerateSets g) (_ : ∀ (x : Set (Set α)), Set.Countable x → (∀ (s : Set α), s ∈ x → CountableGenerateSets g s) → CountableGenerateSets g (⋂₀ x)) (_ : ∀ (x x_1 : Set α), CountableGenerateSets g x → x ⊆ x_1 → CountableGenerateSets g x_1))ι: Sort ?u.18291
α: Type ?u.18294
β: Type ?u.18297
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)CountableInterFilter (ofCountableInter (CountableGenerateSets g) (_ : ∀ (x : Set (Set α)), Set.Countable x → (∀ (s : Set α), s ∈ x → CountableGenerateSets g s) → CountableGenerateSets g (⋂₀ x)) (_ : ∀ (x x_1 : Set α), CountableGenerateSets g x → x ⊆ x_1 → CountableGenerateSets g x_1))variable {Goals accomplished! 🐙g} /-- A set is in the `countableInterFilter` generated by `g` if and only if it contains a countable intersection of elements of `g`. -/ theoremg: ?m.18416mem_countableGenerate_iff {mem_countableGenerate_iff: ∀ {s : Set α}, s ∈ countableGenerate g ↔ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ ss : Sets: Set αα} :α: Type ?u.18422s ∈ countableGenerate g ↔ ∃ S : Set (Sets: Set αα), S ⊆ g ∧ S.Countable ∧ ⋂₀ S ⊆α: Type ?u.18422s :=s: Set αGoals accomplished! 🐙ι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
mps ∈ countableGenerate g → ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ sι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
mpr(∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s) → s ∈ countableGenerate gι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
mps ∈ countableGenerate g → ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ sι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
mpr(∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s) → s ∈ countableGenerate gι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
h: s ∈ countableGenerate g
mpι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
h: ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
mprs ∈ countableGenerate gι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s✝, s: Set α
hs: s ∈ g
mp.basicι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
mp.univι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s✝, s, t: Set α
a✝: CountableGenerateSets g s
st: s ⊆ t
ih: ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
mp.supersetι: Sort ?u.18419
α: Type u_1
β: Type ?u.18425
l: Filter α
inst✝: CountableInterFilter l
g: Set (Set α)
s: Set α
S: Set (Set α)
Sct: Set.Countable S
a✝: ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
ih: ∀ (s : Set α), s ∈ S → ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
mp.sInter