Product and coproduct filters #
In this file we define Filter.prod f g
(notation: f ×ˢ g
) and Filter.coprod f g
. The product
of two filters is the largest filter l
such that Filter.Tendsto Prod.fst l f
and
Filter.Tendsto Prod.snd l g
.
Implementation details #
The product filter cannot be defined using the monad structure on filters. For example:
F := do {x ← seq, y ← top, return (x, y)}
G := do {y ← top, x ← seq, return (x, y)}
hence:
s ∈ F ↔ ∃ n, [n..∞] × univ ⊆ s
s ∈ G ↔ ∀ i:ℕ, ∃ n, [n..∞] × {i} ⊆ s
Now ⋃ i, [i..∞] × {i}
is in G
but not in F
.
As product filter we want to have F
as result.
Notations #
f ×ˢ g
:Filter.prod f g
, localized inFilter
.
Product of filters. This is the filter generated by cartesian products of elements of the component filters.
Equations
- Filter.prod f g = Filter.comap Prod.fst f ⊓ Filter.comap Prod.snd g
Instances For
Equations
- ⋯ = ⋯
Coproducts of filters #
Coproduct of filters.
Equations
- Filter.coprod f g = Filter.comap Prod.fst f ⊔ Filter.comap Prod.snd g
Instances For
Characterization of the coproduct of the Filter.map
s of two principal filters 𝓟 {a}
and
𝓟 {i}
, the first under the constant function fun a => b
and the second under the identity
function. Together with the next lemma, map_prod_map_const_id_principal_coprod_principal
, this
provides an example showing that the inequality in the lemma map_prod_map_coprod_le
can be strict.
Characterization of the Filter.map
of the coproduct of two principal filters 𝓟 {a}
and
𝓟 {i}
, under the Prod.map
of two functions, respectively the constant function fun a => b
and
the identity function. Together with the previous lemma,
map_const_principal_coprod_map_id_principal
, this provides an example showing that the inequality
in the lemma map_prod_map_coprod_le
can be strict.