Ultrafilters
An ultrafilter is a minimal (maximal in the set order) proper filter. In this file we define
is_ultrafilter
: a predicate stating that a given filter is an ultrafiler;ultrafilter_of
: an ultrafilter that is less than or equal to a given filter;ultrafilter
: subtype of ultrafilters;ultrafilter.pure
:pure x
as anultrafiler
;ultrafilter.map
,ultrafilter.bind
: operations on ultrafilters;hyperfilter
: the ultra-filter extending the cofinite filter.
Equivalent characterization of ultrafilters: A filter f is an ultrafilter if and only if for each set s, -s belongs to f if and only if s does not belong to f.
The ultrafilter lemma: Any proper filter is contained in an ultrafilter.
Construct an ultrafilter extending a given filter. The ultrafilter lemma is the assertion that such a filter exists; we use the axiom of choice to pick one.
Equations
- f.ultrafilter_of = ite (f = ⊥) ⊥ (classical.epsilon (λ (u : filter α), u ≤ f ∧ u.is_ultrafilter))
Equations
A filter equals the intersection of all the ultrafilters which contain it.
The tendsto
relation can be checked on ultrafilters.
The ultrafilter monad. The monad structure on ultrafilters is the restriction of the one on filters.
Equations
- filter.ultrafilter α = {f // f.is_ultrafilter}
Push-forward for ultra-filters.
Equations
- filter.ultrafilter.map m u = ⟨filter.map m u.val, _⟩
The principal ultra-filter associated to a point x
.
Equations
- filter.ultrafilter.pure x = ⟨has_pure.pure x, _⟩
Monadic bind for ultra-filters, coming from the one on filters defined in terms of map and join.
Equations
Equations
Equations
- filter.ultrafilter.functor = {map := filter.ultrafilter.map, map_const := λ (α β : Type u_1), filter.ultrafilter.map ∘ function.const β}
Equations
Equations
The ultra-filter extending the cofinite filter.