Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
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.136
ι
:
Sort _: Type ?u.7308
Sort
Sort _: Type ?u.7308
_
} {
α: Type ?u.14
α
β: Type ?u.142
β
:
Type _: Type (?u.3010+1)
Type _
} /-- 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 u_1} {l : Filter α}, (∀ (S : Set (Set α)), Set.Countable S(∀ (s : Set α), s Ss l) → ⋂₀ S l) → CountableInterFilter l
CountableInterFilter
(
l: Filter α
l
:
Filter: Type ?u.20 → Type ?u.20
Filter
α: Type ?u.14
α
) :
Prop: Type
Prop
where /-- For a countable collection of sets `s ∈ l`, their intersection belongs to `l` as well. -/
countable_sInter_mem: ∀ {α : Type u_1} {l : Filter α} [self : CountableInterFilter l] (S : Set (Set α)), Set.Countable S(∀ (s : Set α), s Ss l) → ⋂₀ S l
countable_sInter_mem
: ∀
S: Set (Set α)
S
:
Set: Type ?u.25 → Type ?u.25
Set
(
Set: Type ?u.26 → Type ?u.26
Set
α: Type ?u.14
α
),
S: Set (Set α)
S
.
Countable: {α : Type ?u.30} → Set αProp
Countable
→ (∀
s: ?m.38
s
S: Set (Set α)
S
,
s: ?m.38
s
l: Filter α
l
) → ⋂₀
S: Set (Set α)
S
l: Filter α
l
#align countable_Inter_filter
CountableInterFilter: {α : Type u_1} → Filter αProp
CountableInterFilter
variable {
l: Filter α
l
:
Filter: Type ?u.6232 → Type ?u.6232
Filter
α: Type ?u.166
α
} [
CountableInterFilter: {α : Type ?u.2281} → Filter αProp
CountableInterFilter
l: Filter α
l
] theorem
countable_sInter_mem: ∀ {α : Type u_1} {l : Filter α} [inst : CountableInterFilter l] {S : Set (Set α)}, Set.Countable S → (⋂₀ S l ∀ (s : Set α), s Ss l)
countable_sInter_mem
{
S: Set (Set α)
S
:
Set: Type ?u.181 → Type ?u.181
Set
(
Set: Type ?u.182 → Type ?u.182
Set
α: Type ?u.166
α
)} (hSc :
S: Set (Set α)
S
.
Countable: {α : Type ?u.185} → Set αProp
Countable
) : ⋂₀
S: Set (Set α)
S
l: Filter α
l
↔ ∀
s: ?m.214
s
S: Set (Set α)
S
,
s: ?m.214
s
l: Filter α
l
:= ⟨fun
hS: ?m.286
hS
_s: ?m.289
_s
hs: ?m.292
hs
=>
mem_of_superset: ∀ {α : Type ?u.294} {f : Filter α} {x y : Set α}, x fx yy f
mem_of_superset
hS: ?m.286
hS
(
sInter_subset_of_mem: ∀ {α : Type ?u.308} {S : Set (Set α)} {t : Set α}, t S⋂₀ S t
sInter_subset_of_mem
hs: ?m.292
hs
),
CountableInterFilter.countable_sInter_mem: ∀ {α : Type ?u.328} {l : Filter α} [self : CountableInterFilter l] (S : Set (Set α)), Set.Countable S(∀ (s : Set α), s Ss l) → ⋂₀ S l
CountableInterFilter.countable_sInter_mem
_: Set (Set ?m.329)
_
hSc#align countable_sInter_mem
countable_sInter_mem: ∀ {α : Type u_1} {l : Filter α} [inst : CountableInterFilter l] {S : Set (Set α)}, Set.Countable S → (⋂₀ S l ∀ (s : Set α), s Ss l)
countable_sInter_mem
theorem
countable_iInter_mem: ∀ [inst : Countable ι] {s : ιSet α}, (iInter fun i => s i) l ∀ (i : ι), s i l
countable_iInter_mem
[
Countable: Sort ?u.394 → Prop
Countable
ι: Sort ?u.376
ι
] {
s: ιSet α
s
:
ι: Sort ?u.376
ι
Set: Type ?u.399 → Type ?u.399
Set
α: Type ?u.379
α
} : (⋂
i: ?m.414
i
,
s: ιSet α
s
i: ?m.414
i
) ∈
l: Filter α
l
↔ ∀
i: ?m.434
i
,
s: ιSet α
s
i: ?m.434
i
l: Filter α
l
:=
sInter_range: ∀ {β : Type ?u.464} {ι : Sort ?u.465} (f : ιSet β), ⋂₀ range f = iInter fun x => f x
sInter_range
s: ιSet α
s
▸ (
countable_sInter_mem: ∀ {α : Type ?u.474} {l : Filter α} [inst : CountableInterFilter l] {S : Set (Set α)}, Set.Countable S → (⋂₀ S l ∀ (s : Set α), s Ss l)
countable_sInter_mem
(
countable_range: ∀ {β : Type ?u.480} {ι : Sort ?u.479} [inst : Countable ι] (f : ιβ), Set.Countable (range f)
countable_range
_: ?m.482?m.481
_
)).
trans: ∀ {a b c : Prop}, (a b) → (b c) → (a c)
trans
forall_range_iff: ∀ {α : Type ?u.582} {ι : Sort ?u.583} {f : ια} {p : αProp}, (∀ (a : α), a range fp a) ∀ (i : ι), p (f i)
forall_range_iff
#align countable_Inter_mem
countable_iInter_mem: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s : ιSet α}, (iInter fun i => s i) l ∀ (i : ι), s i l
countable_iInter_mem
theorem
countable_bInter_mem: ∀ {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s : (i : ι) → i SSet α}, (iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l
countable_bInter_mem
{
ι: Type ?u.660
ι
:
Type _: Type (?u.660+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.663 → Type ?u.663
Set
ι: Type ?u.660
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.666} → Set αProp
Countable
) {
s: (i : ι) → i SSet α
s
: ∀
i: ?m.674
i
S: Set ι
S
,
Set: Type ?u.711 → Type ?u.711
Set
α: Type ?u.645
α
} : (⋂
i: ?m.727
i
, ⋂
hi: i S
hi
:
i: ?m.727
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.727
i
‹_›) ∈
l: Filter α
l
↔ ∀
i: ?m.793
i
, ∀
hi: i S
hi
:
i: ?m.793
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.793
i
‹_› ∈
l: Filter α
l
:=

Goals accomplished! 🐙
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun x => s x (_ : x S)) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun x => s x (_ : x S)) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α

this: Encodable S


(iInter fun x => s x (_ : x S)) l ∀ (i : ι) (hi : i S), s i hi l
ι✝: Sort ?u.642

α: Type u_2

β: Type ?u.648

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s: (i : ι) → i SSet α


(iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l

Goals accomplished! 🐙
#align countable_bInter_mem
countable_bInter_mem: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s : (i : ι) → i SSet α}, (iInter fun i => iInter fun hi => s i hi) l ∀ (i : ι) (hi : i S), s i hi l
countable_bInter_mem
theorem
eventually_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
eventually_countable_forall
[
Countable: Sort ?u.1152 → Prop
Countable
ι: Sort ?u.1134
ι
] {
p: αιProp
p
:
α: Type ?u.1137
α
ι: Sort ?u.1134
ι
Prop: Type
Prop
} : (∀ᶠ
x: ?m.1164
x
in
l: Filter α
l
, ∀
i: ?m.1167
i
,
p: αιProp
p
x: ?m.1164
x
i: ?m.1167
i
) ↔ ∀
i: ?m.1176
i
, ∀ᶠ
x: ?m.1182
x
in
l: Filter α
l
,
p: αιProp
p
x: ?m.1182
x
i: ?m.1176
i
:=

Goals accomplished! 🐙
ι: Sort u_1

α: Type u_2

β: Type ?u.1140

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

Goals accomplished! 🐙
#align eventually_countable_forall
eventually_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
eventually_countable_forall
theorem
eventually_countable_ball: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {p : α(i : ι) → i SProp}, 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
eventually_countable_ball
{
ι: Type ?u.1514
ι
:
Type _: Type (?u.1514+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.1517 → Type ?u.1517
Set
ι: Type ?u.1514
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.1520} → Set αProp
Countable
) {
p: α(i : ι) → i SProp
p
:
α: Type ?u.1499
α
→ ∀
i: ?m.1530
i
S: Set ι
S
,
Prop: Type
Prop
} : (∀ᶠ
x: ?m.1572
x
in
l: Filter α
l
, ∀
i: ?m.1575
i
hi: ?m.1578
hi
,
p: α(i : ι) → i SProp
p
x: ?m.1572
x
i: ?m.1575
i
hi: ?m.1578
hi
) ↔ ∀
i: ?m.1589
i
hi: ?m.1592
hi
, ∀ᶠ
x: ?m.1598
x
in
l: Filter α
l
,
p: α(i : ι) → i SProp
p
x: ?m.1598
x
i: ?m.1589
i
hi: ?m.1592
hi
:=

Goals 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 SProp


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

Goals accomplished! 🐙
#align eventually_countable_ball
eventually_countable_ball: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {p : α(i : ι) → i SProp}, 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
eventually_countable_ball
theorem
EventuallyLE.countable_iUnion: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iUnion fun i => s i) ≤ᶠ[l] iUnion fun i => t i
EventuallyLE.countable_iUnion
[
Countable: Sort ?u.2287 → Prop
Countable
ι: Sort ?u.2269
ι
] {
s: ιSet α
s
t: ιSet α
t
:
ι: Sort ?u.2269
ι
Set: Type ?u.2298 → Type ?u.2298
Set
α: Type ?u.2272
α
} (
h: ∀ (i : ι), s i ≤ᶠ[l] t i
h
: ∀
i: ?m.2303
i
,
s: ιSet α
s
i: ?m.2303
i
≤ᶠ[
l: Filter α
l
]
t: ιSet α
t
i: ?m.2303
i
) : (⋃
i: ?m.2375
i
,
s: ιSet α
s
i: ?m.2375
i
) ≤ᶠ[
l: Filter α
l
] ⋃
i: ?m.2390
i
,
t: ιSet α
t
i: ?m.2390
i
:= (
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) l
eventually_countable_forall
.
2: ∀ {a b : Prop}, (a b) → ba
2
h: ∀ (i : ι), s i ≤ᶠ[l] t i
h
).
mono: ∀ {α : Type ?u.2470} {p q : αProp} {f : Filter α}, Filter.Eventually (fun x => p x) f(∀ (x : α), p xq x) → Filter.Eventually (fun x => q x) f
mono
fun
_: ?m.2493
_
hst: ?m.2496
hst
hs: ?m.2501
hs
=>
mem_iUnion: ∀ {α : Type ?u.2503} {ι : Sort ?u.2504} {x : α} {s : ιSet α}, (x iUnion fun i => s i) i, x s i
mem_iUnion
.
2: ∀ {a b : Prop}, (a b) → ba
2
<| (
mem_iUnion: ∀ {α : Type ?u.2530} {ι : Sort ?u.2531} {x : α} {s : ιSet α}, (x iUnion fun i => s i) i, x s i
mem_iUnion
.
1: ∀ {a b : Prop}, (a b) → ab
1
hs: ?m.2501
hs
).
imp: ∀ {α : Sort ?u.2550} {p q : αProp}, (∀ (a : α), p aq a) → (a, p a) → a, q a
imp
hst: ?m.2496
hst
#align eventually_le.countable_Union
EventuallyLE.countable_iUnion: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iUnion fun i => s i) ≤ᶠ[l] iUnion fun i => t i
EventuallyLE.countable_iUnion
theorem
EventuallyEq.countable_iUnion: ∀ [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i =ᶠ[l] t i) → (iUnion fun i => s i) =ᶠ[l] iUnion fun i => t i
EventuallyEq.countable_iUnion
[
Countable: Sort ?u.2672 → Prop
Countable
ι: Sort ?u.2654
ι
] {
s: ιSet α
s
t: ιSet α
t
:
ι: Sort ?u.2654
ι
Set: Type ?u.2683 → Type ?u.2683
Set
α: Type ?u.2657
α
} (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
: ∀
i: ?m.2688
i
,
s: ιSet α
s
i: ?m.2688
i
=ᶠ[
l: Filter α
l
]
t: ιSet α
t
i: ?m.2688
i
) : (⋃
i: ?m.2717
i
,
s: ιSet α
s
i: ?m.2717
i
) =ᶠ[
l: Filter α
l
] ⋃
i: ?m.2732
i
,
t: ιSet α
t
i: ?m.2732
i
:= (
EventuallyLE.countable_iUnion: ∀ {ι : Sort ?u.2751} {α : Type ?u.2752} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iUnion fun i => s i) ≤ᶠ[l] iUnion fun i => t i
EventuallyLE.countable_iUnion
fun
i: ?m.2761
i
=> (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
i: ?m.2761
i
).
le: ∀ {α : Type ?u.2764} {β : Type ?u.2763} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
).
antisymm: ∀ {α : Type ?u.2860} {β : Type ?u.2859} [inst : PartialOrder β] {l : Filter α} {f g : αβ}, f ≤ᶠ[l] gg ≤ᶠ[l] ff =ᶠ[l] g
antisymm
(
EventuallyLE.countable_iUnion: ∀ {ι : Sort ?u.2895} {α : Type ?u.2896} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iUnion fun i => s i) ≤ᶠ[l] iUnion fun i => t i
EventuallyLE.countable_iUnion
fun
i: ?m.2952
i
=> (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
i: ?m.2952
i
).
symm: ∀ {α : Type ?u.2955} {β : Type ?u.2954} {f g : αβ} {l : Filter α}, f =ᶠ[l] gg =ᶠ[l] f
symm
.
le: ∀ {α : Type ?u.2962} {β : Type ?u.2961} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
) #align eventually_eq.countable_Union
EventuallyEq.countable_iUnion: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i =ᶠ[l] t i) → (iUnion fun i => s i) =ᶠ[l] iUnion fun i => t i
EventuallyEq.countable_iUnion
theorem
EventuallyLE.countable_bUnion: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bUnion
{
ι: Type u_1
ι
:
Type _: Type (?u.3025+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.3028 → Type ?u.3028
Set
ι: Type ?u.3025
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.3031} → Set αProp
Countable
) {
s: (i : ι) → i SSet α
s
t: (i : ι) → i SSet α
t
: ∀
i: ?m.3039
i
S: Set ι
S
,
Set: Type ?u.3116 → Type ?u.3116
Set
α: Type ?u.3010
α
} (
h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi
h
: ∀
i: ?m.3122
i
hi: ?m.3125
hi
,
s: (i : ι) → i SSet α
s
i: ?m.3122
i
hi: ?m.3125
hi
≤ᶠ[
l: Filter α
l
]
t: (i : ι) → i SSet α
t
i: ?m.3122
i
hi: ?m.3125
hi
) : (⋃
i: ?m.3198
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.3198
i
‹_›) ≤ᶠ[
l: Filter α
l
] ⋃
i: ?m.3257
i
S: Set ι
S
,
t: (i : ι) → i SSet α
t
i: ?m.3257
i
‹_› :=

Goals accomplished! 🐙
ι✝: Sort ?u.3007

α: Type u_2

β: Type ?u.3013

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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
ι✝: Sort ?u.3007

α: Type u_2

β: Type ?u.3013

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi


(iUnion fun x => s x (_ : x S)) ≤ᶠ[l] iUnion fun x => t x (_ : x S)
ι✝: Sort ?u.3007

α: Type u_2

β: Type ?u.3013

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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
ι✝: Sort ?u.3007

α: Type u_2

β: Type ?u.3013

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi

this: Encodable S


(iUnion fun x => s x (_ : x S)) ≤ᶠ[l] iUnion fun x => t x (_ : x S)
ι✝: Sort ?u.3007

α: Type u_2

β: Type ?u.3013

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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

Goals accomplished! 🐙
#align eventually_le.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 SSet α}, (∀ (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
EventuallyLE.countable_bUnion
theorem
EventuallyEq.countable_bUnion: ∀ {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyEq.countable_bUnion
{
ι: Type u_1
ι
:
Type _: Type (?u.3989+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.3992 → Type ?u.3992
Set
ι: Type ?u.3989
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.3995} → Set αProp
Countable
) {
s: (i : ι) → i SSet α
s
t: (i : ι) → i SSet α
t
: ∀
i: ?m.4046
i
S: Set ι
S
,
Set: Type ?u.4080 → Type ?u.4080
Set
α: Type ?u.3974
α
} (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
: ∀
i: ?m.4086
i
hi: ?m.4089
hi
,
s: (i : ι) → i SSet α
s
i: ?m.4086
i
hi: ?m.4089
hi
=ᶠ[
l: Filter α
l
]
t: (i : ι) → i SSet α
t
i: ?m.4086
i
hi: ?m.4089
hi
) : (⋃
i: ?m.4119
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.4119
i
‹_›) =ᶠ[
l: Filter α
l
] ⋃
i: ?m.4178
i
S: Set ι
S
,
t: (i : ι) → i SSet α
t
i: ?m.4178
i
‹_› := (
EventuallyLE.countable_bUnion: ∀ {α : Type ?u.4251} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.4250} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bUnion
hS fun
i: ?m.4267
i
hi: ?m.4270
hi
=> (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
i: ?m.4267
i
hi: ?m.4270
hi
).
le: ∀ {α : Type ?u.4273} {β : Type ?u.4272} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
).
antisymm: ∀ {α : Type ?u.4370} {β : Type ?u.4369} [inst : PartialOrder β] {l : Filter α} {f g : αβ}, f ≤ᶠ[l] gg ≤ᶠ[l] ff =ᶠ[l] g
antisymm
(
EventuallyLE.countable_bUnion: ∀ {α : Type ?u.4406} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.4405} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bUnion
hS fun
i: ?m.4447
i
hi: ?m.4450
hi
=> (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
i: ?m.4447
i
hi: ?m.4450
hi
).
symm: ∀ {α : Type ?u.4453} {β : Type ?u.4452} {f g : αβ} {l : Filter α}, f =ᶠ[l] gg =ᶠ[l] f
symm
.
le: ∀ {α : Type ?u.4460} {β : Type ?u.4459} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
) #align eventually_eq.countable_bUnion
EventuallyEq.countable_bUnion: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyEq.countable_bUnion
theorem
EventuallyLE.countable_iInter: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iInter fun i => s i) ≤ᶠ[l] iInter fun i => t i
EventuallyLE.countable_iInter
[
Countable: Sort ?u.4544 → Prop
Countable
ι: Sort ?u.4526
ι
] {
s: ιSet α
s
t: ιSet α
t
:
ι: Sort ?u.4526
ι
Set: Type ?u.4555 → Type ?u.4555
Set
α: Type ?u.4529
α
} (
h: ∀ (i : ι), s i ≤ᶠ[l] t i
h
: ∀
i: ?m.4560
i
,
s: ιSet α
s
i: ?m.4560
i
≤ᶠ[
l: Filter α
l
]
t: ιSet α
t
i: ?m.4560
i
) : (⋂
i: ?m.4632
i
,
s: ιSet α
s
i: ?m.4632
i
) ≤ᶠ[
l: Filter α
l
] ⋂
i: ?m.4647
i
,
t: ιSet α
t
i: ?m.4647
i
:= (
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) l
eventually_countable_forall
.
2: ∀ {a b : Prop}, (a b) → ba
2
h: ∀ (i : ι), s i ≤ᶠ[l] t i
h
).
mono: ∀ {α : Type ?u.4727} {p q : αProp} {f : Filter α}, Filter.Eventually (fun x => p x) f(∀ (x : α), p xq x) → Filter.Eventually (fun x => q x) f
mono
fun
_: ?m.4750
_
hst: ?m.4753
hst
hs: ?m.4758
hs
=>
mem_iInter: ∀ {α : Type ?u.4760} {ι : Sort ?u.4761} {x : α} {s : ιSet α}, (x iInter fun i => s i) ∀ (i : ι), x s i
mem_iInter
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
i: ?m.4790
i
=>
hst: ?m.4753
hst
_: ι
_
(
mem_iInter: ∀ {α : Type ?u.4795} {ι : Sort ?u.4796} {x : α} {s : ιSet α}, (x iInter fun i => s i) ∀ (i : ι), x s i
mem_iInter
.
1: ∀ {a b : Prop}, (a b) → ab
1
hs: ?m.4758
hs
i: ?m.4790
i
) #align eventually_le.countable_Inter
EventuallyLE.countable_iInter: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iInter fun i => s i) ≤ᶠ[l] iInter fun i => t i
EventuallyLE.countable_iInter
theorem
EventuallyEq.countable_iInter: ∀ [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i =ᶠ[l] t i) → (iInter fun i => s i) =ᶠ[l] iInter fun i => t i
EventuallyEq.countable_iInter
[
Countable: Sort ?u.4924 → Prop
Countable
ι: Sort ?u.4906
ι
] {
s: ιSet α
s
t: ιSet α
t
:
ι: Sort ?u.4906
ι
Set: Type ?u.4935 → Type ?u.4935
Set
α: Type ?u.4909
α
} (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
: ∀
i: ?m.4940
i
,
s: ιSet α
s
i: ?m.4940
i
=ᶠ[
l: Filter α
l
]
t: ιSet α
t
i: ?m.4940
i
) : (⋂
i: ?m.4969
i
,
s: ιSet α
s
i: ?m.4969
i
) =ᶠ[
l: Filter α
l
] ⋂
i: ?m.4984
i
,
t: ιSet α
t
i: ?m.4984
i
:= (
EventuallyLE.countable_iInter: ∀ {ι : Sort ?u.5003} {α : Type ?u.5004} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iInter fun i => s i) ≤ᶠ[l] iInter fun i => t i
EventuallyLE.countable_iInter
fun
i: ?m.5013
i
=> (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
i: ?m.5013
i
).
le: ∀ {α : Type ?u.5016} {β : Type ?u.5015} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
).
antisymm: ∀ {α : Type ?u.5112} {β : Type ?u.5111} [inst : PartialOrder β] {l : Filter α} {f g : αβ}, f ≤ᶠ[l] gg ≤ᶠ[l] ff =ᶠ[l] g
antisymm
(
EventuallyLE.countable_iInter: ∀ {ι : Sort ?u.5147} {α : Type ?u.5148} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i ≤ᶠ[l] t i) → (iInter fun i => s i) ≤ᶠ[l] iInter fun i => t i
EventuallyLE.countable_iInter
fun
i: ?m.5204
i
=> (
h: ∀ (i : ι), s i =ᶠ[l] t i
h
i: ?m.5204
i
).
symm: ∀ {α : Type ?u.5207} {β : Type ?u.5206} {f g : αβ} {l : Filter α}, f =ᶠ[l] gg =ᶠ[l] f
symm
.
le: ∀ {α : Type ?u.5214} {β : Type ?u.5213} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
) #align eventually_eq.countable_Inter
EventuallyEq.countable_iInter: ∀ {ι : Sort u_1} {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] [inst : Countable ι] {s t : ιSet α}, (∀ (i : ι), s i =ᶠ[l] t i) → (iInter fun i => s i) =ᶠ[l] iInter fun i => t i
EventuallyEq.countable_iInter
theorem
EventuallyLE.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bInter
{
ι: Type u_1
ι
:
Type _: Type (?u.5277+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.5280 → Type ?u.5280
Set
ι: Type ?u.5277
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.5283} → Set αProp
Countable
) {
s: (i : ι) → i SSet α
s
t: (i : ι) → i SSet α
t
: ∀
i: ?m.5334
i
S: Set ι
S
,
Set: Type ?u.5368 → Type ?u.5368
Set
α: Type ?u.5262
α
} (
h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi
h
: ∀
i: ?m.5374
i
hi: ?m.5377
hi
,
s: (i : ι) → i SSet α
s
i: ?m.5374
i
hi: ?m.5377
hi
≤ᶠ[
l: Filter α
l
]
t: (i : ι) → i SSet α
t
i: ?m.5374
i
hi: ?m.5377
hi
) : (⋂
i: ?m.5450
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.5450
i
‹_›) ≤ᶠ[
l: Filter α
l
] ⋂
i: ?m.5509
i
S: Set ι
S
,
t: (i : ι) → i SSet α
t
i: ?m.5509
i
‹_› :=

Goals accomplished! 🐙
ι✝: Sort ?u.5259

α: Type u_2

β: Type ?u.5265

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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
ι✝: Sort ?u.5259

α: Type u_2

β: Type ?u.5265

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi


(iInter fun x => s x (_ : x S)) ≤ᶠ[l] iInter fun x => t x (_ : x S)
ι✝: Sort ?u.5259

α: Type u_2

β: Type ?u.5265

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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
ι✝: Sort ?u.5259

α: Type u_2

β: Type ?u.5265

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (i : ι) (hi : i S), s i hi ≤ᶠ[l] t i hi

this: Encodable S


(iInter fun x => s x (_ : x S)) ≤ᶠ[l] iInter fun x => t x (_ : x S)
ι✝: Sort ?u.5259

α: Type u_2

β: Type ?u.5265

l: Filter α

inst✝: CountableInterFilter l

ι: Type u_1

S: Set ι

hS: Set.Countable S

s, t: (i : ι) → i SSet α

h: ∀ (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

Goals accomplished! 🐙
#align eventually_le.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 SSet α}, (∀ (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
EventuallyLE.countable_bInter
theorem
EventuallyEq.countable_bInter: ∀ {α : Type u_2} {l : Filter α} [inst : CountableInterFilter l] {ι : Type u_1} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyEq.countable_bInter
{
ι: Type ?u.6241
ι
:
Type _: Type (?u.6241+1)
Type _
} {
S: Set ι
S
:
Set: Type ?u.6244 → Type ?u.6244
Set
ι: Type ?u.6241
ι
} (hS :
S: Set ι
S
.
Countable: {α : Type ?u.6247} → Set αProp
Countable
) {
s: (i : ι) → i SSet α
s
t: (i : ι) → i SSet α
t
: ∀
i: ?m.6298
i
S: Set ι
S
,
Set: Type ?u.6332 → Type ?u.6332
Set
α: Type ?u.6226
α
} (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
: ∀
i: ?m.6338
i
hi: ?m.6341
hi
,
s: (i : ι) → i SSet α
s
i: ?m.6338
i
hi: ?m.6341
hi
=ᶠ[
l: Filter α
l
]
t: (i : ι) → i SSet α
t
i: ?m.6338
i
hi: ?m.6341
hi
) : (⋂
i: ?m.6371
i
S: Set ι
S
,
s: (i : ι) → i SSet α
s
i: ?m.6371
i
‹_›) =ᶠ[
l: Filter α
l
] ⋂
i: ?m.6430
i
S: Set ι
S
,
t: (i : ι) → i SSet α
t
i: ?m.6430
i
‹_› := (
EventuallyLE.countable_bInter: ∀ {α : Type ?u.6503} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.6502} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bInter
hS fun
i: ?m.6519
i
hi: ?m.6522
hi
=> (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
i: ?m.6519
i
hi: ?m.6522
hi
).
le: ∀ {α : Type ?u.6525} {β : Type ?u.6524} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
).
antisymm: ∀ {α : Type ?u.6622} {β : Type ?u.6621} [inst : PartialOrder β] {l : Filter α} {f g : αβ}, f ≤ᶠ[l] gg ≤ᶠ[l] ff =ᶠ[l] g
antisymm
(
EventuallyLE.countable_bInter: ∀ {α : Type ?u.6658} {l : Filter α} [inst : CountableInterFilter l] {ι : Type ?u.6657} {S : Set ι}, Set.Countable S∀ {s t : (i : ι) → i SSet α}, (∀ (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
EventuallyLE.countable_bInter
hS fun
i: ?m.6699
i
hi: ?m.6702
hi
=> (
h: ∀ (i : ι) (hi : i S), s i hi =ᶠ[l] t i hi
h
i: ?m.6699
i
hi: ?m.6702
hi
).
symm: ∀ {α : Type ?u.6705} {β : Type ?u.6704} {f g : αβ} {l : Filter α}, f =ᶠ[l] gg =ᶠ[l] f
symm
.
le: ∀ {α : Type ?u.6712} {β : Type ?u.6711} [inst : Preorder β] {l : Filter α} {f g : αβ}, f =ᶠ[l] gf ≤ᶠ[l] g
le
) #align eventually_eq.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 SSet α}, (∀ (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
EventuallyEq.countable_bInter
/-- Construct a filter with countable intersection property. This constructor deduces `Filter.univ_sets` and `Filter.inter_sets` from the countable intersection property. -/ def
Filter.ofCountableInter: (l : Set (Set α)) → (∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) → (∀ (s t : Set α), s ls tt l) → Filter α
Filter.ofCountableInter
(
l: Set (Set α)
l
:
Set: Type ?u.6796 → Type ?u.6796
Set
(
Set: Type ?u.6797 → Type ?u.6797
Set
α: Type ?u.6781
α
)) (
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
: ∀
S: Set (Set α)
S
:
Set: Type ?u.6801 → Type ?u.6801
Set
(
Set: Type ?u.6802 → Type ?u.6802
Set
α: Type ?u.6781
α
),
S: Set (Set α)
S
.
Countable: {α : Type ?u.6806} → Set αProp
Countable
S: Set (Set α)
S
l: Set (Set α)
l
→ ⋂₀
S: Set (Set α)
S
l: Set (Set α)
l
) (
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
: ∀
s: ?m.6873
s
t: ?m.6876
t
,
s: ?m.6873
s
l: Set (Set α)
l
s: ?m.6873
s
t: ?m.6876
t
t: ?m.6876
t
l: Set (Set α)
l
) :
Filter: Type ?u.6954 → Type ?u.6954
Filter
α: Type ?u.6781
α
where sets :=
l: Set (Set α)
l
univ_sets := @
sInter_empty: ∀ {α : Type ?u.6970}, ⋂₀ = univ
sInter_empty
α: Type ?u.6781
α
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
_: Set (Set α)
_
countable_empty: ∀ {α : Type ?u.6980}, Set.Countable
countable_empty
(
empty_subset: ∀ {α : Type ?u.6985} (s : Set α), s
empty_subset
_: Set ?m.6986
_
) sets_of_superset :=
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
_: Set α
_
_: Set α
_
inter_sets {
s: ?m.7019
s
t: ?m.7022
t
}
hs: ?m.7025
hs
ht: ?m.7028
ht
:=
sInter_pair: ∀ {α : Type ?u.7030} (s t : Set α), ⋂₀ {s, t} = s t
sInter_pair
s: ?m.7019
s
t: ?m.7022
t
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
_: Set (Set α)
_
((
countable_singleton: ∀ {α : Type ?u.7036} (a : α), Set.Countable {a}
countable_singleton
_: ?m.7037
_
).
insert: ∀ {α : Type ?u.7039} {s : Set α} (a : α), Set.Countable sSet.Countable (insert a s)
insert
_: ?m.7044
_
) (
insert_subset: ∀ {α : Type ?u.7059} {a : α} {s t : Set α}, insert a s t a t s t
insert_subset
.
2: ∀ {a b : Prop}, (a b) → ba
2
hs: ?m.7025
hs
,
singleton_subset_iff: ∀ {α : Type ?u.7079} {a : α} {s : Set α}, {a} s a s
singleton_subset_iff
.
2: ∀ {a b : Prop}, (a b) → ba
2
ht: ?m.7028
ht
⟩) #align filter.of_countable_Inter
Filter.ofCountableInter: {α : Type u_1} → (l : Set (Set α)) → (∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) → (∀ (s t : Set α), s ls tt l) → Filter α
Filter.ofCountableInter
instance
Filter.countable_Inter_ofCountableInter: ∀ {α : Type u_1} (l : Set (Set α)) (hp : ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) (h_mono : ∀ (s t : Set α), s ls tt l), CountableInterFilter (ofCountableInter l hp h_mono)
Filter.countable_Inter_ofCountableInter
(
l: Set (Set α)
l
:
Set: Type ?u.7326 → Type ?u.7326
Set
(
Set: Type ?u.7327 → Type ?u.7327
Set
α: Type ?u.7311
α
)) (
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
: ∀
S: Set (Set α)
S
:
Set: Type ?u.7331 → Type ?u.7331
Set
(
Set: Type ?u.7332 → Type ?u.7332
Set
α: Type ?u.7311
α
),
S: Set (Set α)
S
.
Countable: {α : Type ?u.7336} → Set αProp
Countable
S: Set (Set α)
S
l: Set (Set α)
l
→ ⋂₀
S: Set (Set α)
S
l: Set (Set α)
l
) (
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
: ∀
s: ?m.7403
s
t: ?m.7406
t
,
s: ?m.7403
s
l: Set (Set α)
l
s: ?m.7403
s
t: ?m.7406
t
t: ?m.7406
t
l: Set (Set α)
l
) :
CountableInterFilter: {α : Type ?u.7484} → Filter αProp
CountableInterFilter
(
Filter.ofCountableInter: {α : Type ?u.7486} → (l : Set (Set α)) → (∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) → (∀ (s t : Set α), s ls tt l) → Filter α
Filter.ofCountableInter
l: Set (Set α)
l
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
) := ⟨
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
#align filter.countable_Inter_of_countable_Inter
Filter.countable_Inter_ofCountableInter: ∀ {α : Type u_1} (l : Set (Set α)) (hp : ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) (h_mono : ∀ (s t : Set α), s ls tt l), CountableInterFilter (ofCountableInter l hp h_mono)
Filter.countable_Inter_ofCountableInter
@[simp] theorem
Filter.mem_ofCountableInter: ∀ {l : Set (Set α)} (hp : ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) (h_mono : ∀ (s t : Set α), s ls tt l) {s : Set α}, s ofCountableInter l hp h_mono s l
Filter.mem_ofCountableInter
{
l: Set (Set α)
l
:
Set: Type ?u.7640 → Type ?u.7640
Set
(
Set: Type ?u.7641 → Type ?u.7641
Set
α: Type ?u.7625
α
)} (
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
: ∀
S: Set (Set α)
S
:
Set: Type ?u.7645 → Type ?u.7645
Set
(
Set: Type ?u.7646 → Type ?u.7646
Set
α: Type ?u.7625
α
),
S: Set (Set α)
S
.
Countable: {α : Type ?u.7650} → Set αProp
Countable
S: Set (Set α)
S
l: Set (Set α)
l
→ ⋂₀
S: Set (Set α)
S
l: Set (Set α)
l
) (
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
: ∀
s: ?m.7717
s
t: ?m.7720
t
,
s: ?m.7717
s
l: Set (Set α)
l
s: ?m.7717
s
t: ?m.7720
t
t: ?m.7720
t
l: Set (Set α)
l
) {
s: Set α
s
:
Set: Type ?u.7798 → Type ?u.7798
Set
α: Type ?u.7625
α
} :
s: Set α
s
Filter.ofCountableInter: {α : Type ?u.7807} → (l : Set (Set α)) → (∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) → (∀ (s t : Set α), s ls tt l) → Filter α
Filter.ofCountableInter
l: Set (Set α)
l
hp: ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l
hp
h_mono: ∀ (s t : Set α), s ls tt l
h_mono
s: Set α
s
l: Set (Set α)
l
:=
Iff.rfl: ∀ {a : Prop}, a a
Iff.rfl
#align filter.mem_of_countable_Inter
Filter.mem_ofCountableInter: ∀ {α : Type u_1} {l : Set (Set α)} (hp : ∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) (h_mono : ∀ (s t : Set α), s ls tt l) {s : Set α}, s ofCountableInter l hp h_mono s l
Filter.mem_ofCountableInter
instance
countableInterFilter_principal: ∀ (s : Set α), CountableInterFilter (𝓟 s)
countableInterFilter_principal
(
s: Set α
s
:
Set: Type ?u.7950 → Type ?u.7950
Set
α: Type ?u.7935
α
) :
CountableInterFilter: {α : Type ?u.7953} → Filter αProp
CountableInterFilter
(
𝓟: Set ?m.7956Filter ?m.7956
𝓟
s: Set α
s
) := ⟨fun
_: ?m.7977
_
_: ?m.7980
_
hS: ?m.7983
hS
=>
subset_sInter: ∀ {α : Type ?u.7989} {S : Set (Set α)} {t : Set α}, (∀ (t' : Set α), t' St t') → t ⋂₀ S
subset_sInter
hS: ?m.7983
hS
#align countable_Inter_filter_principal
countableInterFilter_principal: ∀ {α : Type u_1} (s : Set α), CountableInterFilter (𝓟 s)
countableInterFilter_principal
instance
countableInterFilter_bot: CountableInterFilter
countableInterFilter_bot
:
CountableInterFilter: {α : Type ?u.8073} → Filter αProp
CountableInterFilter
(
: ?m.8078
:
Filter: Type ?u.8076 → Type ?u.8076
Filter
α: Type ?u.8058
α
) :=

Goals accomplished! 🐙
ι: Sort ?u.8055

α: Type ?u.8058

β: Type ?u.8061

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8055

α: Type ?u.8058

β: Type ?u.8061

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8055

α: Type ?u.8058

β: Type ?u.8061

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8055

α: Type ?u.8058

β: Type ?u.8061

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8055

α: Type ?u.8058

β: Type ?u.8061

l: Filter α

inst✝: CountableInterFilter l



Goals accomplished! 🐙
#align countable_Inter_filter_bot
countableInterFilter_bot: ∀ {α : Type u_1}, CountableInterFilter
countableInterFilter_bot
instance
countableInterFilter_top: ∀ {α : Type u_1}, CountableInterFilter
countableInterFilter_top
:
CountableInterFilter: {α : Type ?u.8185} → Filter αProp
CountableInterFilter
(
: ?m.8190
:
Filter: Type ?u.8188 → Type ?u.8188
Filter
α: Type ?u.8170
α
) :=

Goals accomplished! 🐙
ι: Sort ?u.8167

α: Type ?u.8170

β: Type ?u.8173

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8167

α: Type ?u.8170

β: Type ?u.8173

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8167

α: Type ?u.8170

β: Type ?u.8173

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8167

α: Type ?u.8170

β: Type ?u.8173

l: Filter α

inst✝: CountableInterFilter l


ι: Sort ?u.8167

α: Type ?u.8170

β: Type ?u.8173

l: Filter α

inst✝: CountableInterFilter l



Goals accomplished! 🐙
#align countable_Inter_filter_top
countableInterFilter_top: ∀ {α : Type u_1}, CountableInterFilter
countableInterFilter_top
instance: ∀ {α : Type u_1} {β : Type u_2} (l : Filter β) [inst : CountableInterFilter l] (f : αβ), CountableInterFilter (comap f l)
instance
(
l: Filter β
l
:
Filter: Type ?u.8283 → Type ?u.8283
Filter
β: Type ?u.8271
β
) [
CountableInterFilter: {α : Type ?u.8286} → Filter αProp
CountableInterFilter
l: Filter β
l
] (
f: αβ
f
:
α: Type ?u.8268
α
β: Type ?u.8271
β
) :
CountableInterFilter: {α : Type ?u.8296} → Filter αProp
CountableInterFilter
(
comap: {α : Type ?u.8299} → {β : Type ?u.8298} → (αβ) → Filter βFilter α
comap
f: αβ
f
l: Filter β
l
) :=

Goals accomplished! 🐙
ι: Sort ?u.8265

α: Type ?u.8268

β: Type ?u.8271

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter β

inst✝: CountableInterFilter l

f: αβ


ι: 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

hS: ∀ (s : Set α), s Ss comap f l


ι: Sort ?u.8265

α: Type ?u.8268

β: Type ?u.8271

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter β

inst✝: CountableInterFilter l

f: αβ


ι: 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 St s l

ht: ∀ (s : Set α), s Sf ⁻¹' t s s


ι: Sort ?u.8265

α: Type ?u.8268

β: Type ?u.8271

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter β

inst✝: CountableInterFilter l

f: αβ


ι: 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 St s l

ht: ∀ (s : Set α), s Sf ⁻¹' 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: αβ


ι: 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 St s l

ht: ∀ (s : Set α), s Sf ⁻¹' t s s

this: (iInter fun s => iInter fun h => t s) l


(f ⁻¹' iInter fun s => iInter fun h => t s) ⋂₀ S
ι: Sort ?u.8265

α: Type ?u.8268

β: Type ?u.8271

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter β

inst✝: CountableInterFilter l

f: αβ



Goals accomplished! 🐙
instance: ∀ {α : Type u_1} {β : Type u_2} (l : Filter α) [inst : CountableInterFilter l] (f : αβ), CountableInterFilter (map f l)
instance
(
l: Filter α
l
:
Filter: Type ?u.15952 → Type ?u.15952
Filter
α: Type ?u.15937
α
) [
CountableInterFilter: {α : Type ?u.15955} → Filter αProp
CountableInterFilter
l: Filter α
l
] (
f: αβ
f
:
α: Type ?u.15937
α
β: Type ?u.15940
β
) :
CountableInterFilter: {α : Type ?u.15965} → Filter αProp
CountableInterFilter
(
map: {α : Type ?u.15968} → {β : Type ?u.15967} → (αβ) → Filter αFilter β
map
f: αβ
f
l: Filter α
l
) :=

Goals accomplished! 🐙
ι: Sort ?u.15934

α: Type ?u.15937

β: Type ?u.15940

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter α

inst✝: CountableInterFilter l

f: αβ


ι: Sort ?u.15934

α: Type ?u.15937

β: Type ?u.15940

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter α

inst✝: CountableInterFilter l

f: αβ

S: Set (Set β)

hSc: Set.Countable S

hS: ∀ (s : Set β), s Ss map f l


⋂₀ S map f l
ι: Sort ?u.15934

α: Type ?u.15937

β: Type ?u.15940

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter α

inst✝: CountableInterFilter l

f: αβ


ι: Sort ?u.15934

α: Type ?u.15937

β: Type ?u.15940

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter α

inst✝: CountableInterFilter l

f: αβ

S: Set (Set β)

hSc: Set.Countable S

hS: ∀ (s : Set β), s Sf ⁻¹' s l


(iInter fun i => iInter fun j => f ⁻¹' i) l
ι: Sort ?u.15934

α: Type ?u.15937

β: Type ?u.15940

l✝: Filter α

inst✝¹: CountableInterFilter l✝

l: Filter α

inst✝: CountableInterFilter l

f: αβ



Goals accomplished! 🐙
/-- Infimum of two `CountableInterFilter`s is a `CountableInterFilter`. This is useful, e.g., to automatically get an instance for `residual α ⊓ 𝓟 s`. -/ instance
countableInterFilter_inf: ∀ (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ l₂)
countableInterFilter_inf
(
l₁: Filter α
l₁
l₂: Filter α
l₂
:
Filter: Type ?u.16611 → Type ?u.16611
Filter
α: Type ?u.16596
α
) [
CountableInterFilter: {α : Type ?u.16617} → Filter αProp
CountableInterFilter
l₁: Filter α
l₁
] [
CountableInterFilter: {α : Type ?u.16623} → Filter αProp
CountableInterFilter
l₂: Filter α
l₂
] :
CountableInterFilter: {α : Type ?u.16628} → Filter αProp
CountableInterFilter
(
l₁: Filter α
l₁
l₂: Filter α
l₂
) :=

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₂


ι: 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 Ss l₁ l₂


⋂₀ 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₂


ι: 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 SSet α

hs: ∀ (s_1 : Set α) (a : s_1 S), s s_1 a l₁

t: (s : Set α) → s SSet α

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


⋂₀ 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₂


ι: 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 SSet α

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₁


⋂₀ 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₂


ι: 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 SSet α

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₂


⋂₀ 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₂


ι: 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) i
ι: Sort ?u.16593

α: Type ?u.16596

β: Type ?u.16599

l: Filter α

inst✝²: CountableInterFilter l

l₁, l₂: Filter α

inst✝¹: CountableInterFilter l₁

inst✝: CountableInterFilter 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) i
ι: 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) s i hi t i hi
ι: 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) s i hi t i hi
ι: Sort ?u.16593

α: Type ?u.16596

β: Type ?u.16599

l: Filter α

inst✝²: CountableInterFilter l

l₁, l₂: Filter α

inst✝¹: CountableInterFilter l₁

inst✝: CountableInterFilter 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 SSet α

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₁
(iInter fun i => iInter fun h => s i h) s i hi
ι: 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 SSet α

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₂
(iInter fun i => iInter fun h => t i h) t i hi
ι: 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) s i hi t i hi
ι: 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 SSet α

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₁
(iInter fun i => iInter fun h => s i h) s i hi
ι: 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 SSet α

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₂
(iInter fun i => iInter fun h => t i h) t i hi
ι: 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 SSet α

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


((iInter fun i => iInter fun h => s i h) iInter fun i => iInter fun h => t i h) s i hi t i hi

Goals accomplished! 🐙
#align countable_Inter_filter_inf
countableInterFilter_inf: ∀ {α : Type u_1} (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ l₂)
countableInterFilter_inf
/-- Supremum of two `CountableInterFilter`s is a `CountableInterFilter`. -/ instance
countableInterFilter_sup: ∀ (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ l₂)
countableInterFilter_sup
(
l₁: Filter α
l₁
l₂: Filter α
l₂
:
Filter: Type ?u.17393 → Type ?u.17393
Filter
α: Type ?u.17378
α
) [
CountableInterFilter: {α : Type ?u.17399} → Filter αProp
CountableInterFilter
l₁: Filter α
l₁
] [
CountableInterFilter: {α : Type ?u.17405} → Filter αProp
CountableInterFilter
l₂: Filter α
l₂
] :
CountableInterFilter: {α : Type ?u.17410} → Filter αProp
CountableInterFilter
(
l₁: Filter α
l₁
l₂: Filter α
l₂
) :=

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₂


ι: 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 Ss l₁ l₂


refine'_1
⋂₀ S l₁.sets
ι: 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 Ss l₁ l₂


refine'_2
⋂₀ S l₂.sets
ι: Sort ?u.17375

α: Type ?u.17378

β: Type ?u.17381

l: Filter α

inst✝²: CountableInterFilter l

l₁, l₂: Filter α

inst✝¹: CountableInterFilter l₁

inst✝: CountableInterFilter 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 Ss l₁ l₂


refine'_1
⋂₀ S l₁.sets
ι: 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 Ss l₁ l₂


refine'_2
⋂₀ S l₂.sets
ι: Sort ?u.17375

α: Type ?u.17378

β: Type ?u.17381

l: Filter α

inst✝²: CountableInterFilter l

l₁, l₂: Filter α

inst✝¹: CountableInterFilter l₁

inst✝: CountableInterFilter 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 Ss l₁ l₂

s: Set α

hs: s S


refine'_1
s l₁
ι: Sort ?u.17375

α: Type ?u.17378

β: Type ?u.17381

l: Filter α

inst✝²: CountableInterFilter l

l₁, l₂: Filter α

inst✝¹: CountableInterFilter l₁

inst✝: CountableInterFilter l₂



Goals accomplished! 🐙
#align countable_Inter_filter_sup
countableInterFilter_sup: ∀ {α : Type u_1} (l₁ l₂ : Filter α) [inst : CountableInterFilter l₁] [inst : CountableInterFilter l₂], CountableInterFilter (l₁ l₂)
countableInterFilter_sup
namespace Filter variable (
g: Set (Set α)
g
:
Set: Type ?u.18112 → Type ?u.18112
Set
(
Set: Type ?u.18310 → Type ?u.18310
Set
α: Type ?u.17672
α
)) /-- `Filter.CountableGenerateSets g` is the (sets of the) greatest `countableInterFilter` containing `g`.-/ inductive
CountableGenerateSets: Set αProp
CountableGenerateSets
:
Set: Type ?u.17714 → Type ?u.17714
Set
α: Type ?u.17694
α
Prop: Type
Prop
|
basic: ∀ {α : Type u_1} {g : Set (Set α)} {s : Set α}, s gCountableGenerateSets g s
basic
{
s: Set α
s
:
Set: Type ?u.17719 → Type ?u.17719
Set
α: Type ?u.17694
α
} :
s: Set α
s
g: Set (Set α)
g
CountableGenerateSets: Set αProp
CountableGenerateSets
s: Set α
s
|
univ: ∀ {α : Type u_1} {g : Set (Set α)}, CountableGenerateSets g univ
univ
:
CountableGenerateSets: Set αProp
CountableGenerateSets
univ: {α : Type ?u.17762} → Set α
univ
|
superset: ∀ {α : Type u_1} {g : Set (Set α)} {s t : Set α}, CountableGenerateSets g ss tCountableGenerateSets g t
superset
{
s: Set α
s
t: Set α
t
:
Set: Type ?u.17766 → Type ?u.17766
Set
α: Type ?u.17694
α
} :
CountableGenerateSets: Set αProp
CountableGenerateSets
s: Set α
s
s: Set α
s
t: Set α
t
CountableGenerateSets: Set αProp
CountableGenerateSets
t: Set α
t
|
sInter: ∀ {α : Type u_1} {g S : Set (Set α)}, Set.Countable S(∀ (s : Set α), s SCountableGenerateSets g s) → CountableGenerateSets g (⋂₀ S)
sInter
{
S: Set (Set α)
S
:
Set: Type ?u.17804 → Type ?u.17804
Set
(
Set: Type ?u.17805 → Type ?u.17805
Set
α: Type ?u.17694
α
)} :
S: Set (Set α)
S
.
Countable: {α : Type ?u.17809} → Set αProp
Countable
→ (∀
s: ?m.17816
s
S: Set (Set α)
S
,
CountableGenerateSets: Set αProp
CountableGenerateSets
s: ?m.17816
s
) →
CountableGenerateSets: Set αProp
CountableGenerateSets
(⋂₀
S: Set (Set α)
S
) #align filter.countable_generate_sets
Filter.CountableGenerateSets: {α : Type u_1} → Set (Set α)Set αProp
Filter.CountableGenerateSets
/-- `Filter.countableGenerate g` is the greatest `countableInterFilter` containing `g`.-/ def
countableGenerate: Filter α
countableGenerate
:
Filter: Type ?u.18138 → Type ?u.18138
Filter
α: Type ?u.18119
α
:=
ofCountableInter: {α : Type ?u.18140} → (l : Set (Set α)) → (∀ (S : Set (Set α)), Set.Countable SS l⋂₀ S l) → (∀ (s t : Set α), s ls tt l) → Filter α
ofCountableInter
(
CountableGenerateSets: {α : Type ?u.18143} → Set (Set α)Set αProp
CountableGenerateSets
g: Set (Set α)
g
) (fun
_: ?m.18151
_
=>
CountableGenerateSets.sInter: ∀ {α : Type ?u.18153} {g S : Set (Set α)}, Set.Countable S(∀ (s : Set α), s SCountableGenerateSets g s) → CountableGenerateSets g (⋂₀ S)
CountableGenerateSets.sInter
) fun
_: ?m.18183
_
_: ?m.18186
_
=>
CountableGenerateSets.superset: ∀ {α : Type ?u.18188} {g : Set (Set α)} {s t : Set α}, CountableGenerateSets g ss tCountableGenerateSets g t
CountableGenerateSets.superset
--deriving CountableInterFilter #align filter.countable_generate
Filter.countableGenerate: {α : Type u_1} → Set (Set α)Filter α
Filter.countableGenerate
--Porting note: could not de derived
instance: ∀ {α : Type u_1} (g : Set (Set α)), CountableInterFilter (countableGenerate g)
instance
:
CountableInterFilter: {α : Type ?u.18313} → Filter αProp
CountableInterFilter
(
countableGenerate: {α : Type ?u.18315} → Set (Set α)Filter α
countableGenerate
g: Set (Set α)
g
) :=

Goals accomplished! 🐙
ι: Sort ?u.18291

α: Type ?u.18294

β: Type ?u.18297

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)


ι: 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 xCountableGenerateSets g s) → CountableGenerateSets g (⋂₀ x)) (_ : ∀ (x x_1 : Set α), CountableGenerateSets g xx x_1CountableGenerateSets 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 xCountableGenerateSets g s) → CountableGenerateSets g (⋂₀ x)) (_ : ∀ (x x_1 : Set α), CountableGenerateSets g xx x_1CountableGenerateSets g x_1))
ι: Sort ?u.18291

α: Type ?u.18294

β: Type ?u.18297

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)



Goals accomplished! 🐙
variable {
g: ?m.18416
g
} /-- A set is in the `countableInterFilter` generated by `g` if and only if it contains a countable intersection of elements of `g`. -/ theorem
mem_countableGenerate_iff: ∀ {s : Set α}, s countableGenerate g S, S g Set.Countable S ⋂₀ S s
mem_countableGenerate_iff
{
s: Set α
s
:
Set: Type ?u.18441 → Type ?u.18441
Set
α: Type ?u.18422
α
} :
s: Set α
s
countableGenerate: {α : Type ?u.18451} → Set (Set α)Filter α
countableGenerate
g: Set (Set α)
g
↔ ∃
S: Set (Set α)
S
:
Set: Type ?u.18468 → Type ?u.18468
Set
(
Set: Type ?u.18469 → Type ?u.18469
Set
α: Type ?u.18422
α
),
S: Set (Set α)
S
g: Set (Set α)
g
S: Set (Set α)
S
.
Countable: {α : Type ?u.18482} → Set αProp
Countable
∧ ⋂₀
S: Set (Set α)
S
s: Set α
s
:=

Goals accomplished! 🐙
ι: Sort ?u.18419

α: Type u_1

β: Type ?u.18425

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)

s: Set α


ι: Sort ?u.18419

α: Type u_1

β: Type ?u.18425

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)

s: Set α


mp
ι: 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 α


ι: Sort ?u.18419

α: Type u_1

β: Type ?u.18425

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)

s: Set α


mp
ι: 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 α


ι: Sort ?u.18419

α: Type u_1

β: Type ?u.18425

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)

s: Set α

h: s countableGenerate g


mp
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 α


ι: Sort ?u.18419

α: Type u_1

β: Type ?u.18425

l: Filter α

inst✝: CountableInterFilter l

g: Set (Set α)

s: Set α

h: s countableGenerate g


mp
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 α

h: s countableGenerate g


mp
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 α

h: S, S g Set.Countable S ⋂₀ S s


mpr
ι: 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
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 α


mp.univ
S, S g Set.Countable S ⋂₀ S 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
S, S g Set.Countable S ⋂₀ S t
ι: 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 SCountableGenerateSets g s

ih: ∀ (s : Set α), s SS, S g Set.Countable S ⋂₀ S s


mp.sInter
S_1, S_1 g Set.Countable S_1 ⋂₀ S_1 ⋂₀ S