Module docstring
{"# 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:
lean
F := do {x ← seq, y ← top, return (x, y)}
G := do {y ← top, x ← seq, return (x, y)}
hence:
lean
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.
","### Coproducts of filters "}