TODO Add small proofs of known facts about limits using the language of filters.

Given any set @X@, a filter on @X@ is a collection of subsets @\mathcal{F} \subseteq 2^X@ such that:

  1. @X@ itself is in @\mathcal{F}@;
  2. if @A \in \mathcal{F}@ and @B \in \mathcal{F}@, then @A \cap B \in \mathcal{F}@;
  3. if @A \in \mathcal{F}@ and @C@ is any subset with @A \subseteq C@, then @C \in \mathcal{F}@ (this is refered to by the expression upward closure).

There are always at least two (possibly identical) filters on any set @X@: one is @\top = \{X\}@ and the other is @\bot = 2^X@. Note that @\bot@ is the only filter which contains the empty set, because of the upward closure property. We can put a partial order on @\operatorname{Filter}(X)@, the set of filters on @X@, by declaring @\mathcal{F} \leq \mathcal{G}@ if and only if @\mathcal{G} \subseteq \mathcal{F}@. At first glance, it may seem weird to “reverse” the order, but it makes sense if you think of a filter as a way of approximating something, or as some kind of locating scheme. The usual intersection and union of sets makes @\text{Filter}(X)@ into a complete lattice, i.e. any collection of filters has a least upper bound.

Any subset @A \subseteq X@ may be interpreted as a filter, the principal filter @\uparrow A@, defined as the collection of all subsets of @X@ which contain @A@. The word “interpreted” here is justified by the fact the function @\uparrow@ is actually an injection: suppose @A@ and @B@ are different subsets of @X@; without loss of generality, @B@ does not contain @A@; hence, by the very definition of the principal filter at @A@, the subset @B@ is not an element of @\uparrow A@, so the two filters @\uparrow A@ and @\uparrow B@ are different.

So we have an injection (actually, a monotone map)

@@\uparrow\, : 2^X \hookrightarrow \text{Filter}(X).@@

However, many filters are not principal filters. These more complicated filters can be intuitively thought of as being “generalized subsets” of @X@, where we generalize by allowing them to have some kind of “limiting” or “approximating” behavior. Let’s build a couple of examples to figure out what this means.

  • Take @X@ to be @\mathbb{N}@, the natural numbers. Consider the collection

    @@\{ A \subseteq \mathbb{N} \mid \exists N \in \mathbb{N} : \forall n \geq N, n \in A \}.@@

    This is an example of a filter on @\mathbb{N}@ which is not a principal filter (hint: what happens when you take the intersection of all elements in this filter? what happens when you do the same for a principal filter?) Intuitively speaking, if it were a subset, “points” in this filter should be “numbers” that are arbitrarily large.

  • In any topological space @X@ with at least one point @p@, there’s always the neighborhood filter @\mathcal{N}_p@, which is exactly the collection of all neighborhoods of @p@. Recall that a neighborhood of @p@ is a subset @Y \subseteq X@ having the property that its interior contains @p@. This is another example of a filter that is not principal (hint: if it were a principal filter, it would have to be @\uparrow \{p\}@, and in general @\{p\}@ is not an open set). When interpreted as a generalized subset of @X@, it could be described as the set of “elements” that are “really close” to @p@.

Now, if we wish to interpret filters as “generalized subsets”, we need some expanded concept of membership. Moreover, this expanded notion should stay compatible with the usual one (set membership) when we apply it to principal filters. Any point @x \in X@ can be seen as a set function @x : 1 \to X@ from the singleton set @1@ to @X@. Hence we declare that “generalized points” of @X@ are all functions @f : Y \to X@, where @Y@ is any set. Our new membership relation is the following: if @\mathcal{G}@ is a filter on @Y@ and @\mathcal{F}@ is a filter on @X@, we say that @f@ tends to @\mathcal{F}@ along @\mathcal{G}@ if and only if, for every @A \in \mathcal{F}@, we have @f^{-1}(A) \in \mathcal{G}@. The notation I just made up for this is

@@\lim_{\mathcal{G}} f = \mathcal{F}.@@

Given some function @f : X \to Y@ and a filter @\mathcal{F}@ on @X@, its direct image (denoted @f_*\mathcal{F}@) is a filter on @Y@ defined as the collection of subsets @B \subseteq Y@ having the property that @f^{-1}(B) \in \mathcal{F}@. Using this terminology, we may say that @f@ tends to @\mathcal{G}@ along @\mathcal{F}@ if and only if @f_*\mathcal{F} \leq \mathcal{G}@.

There’s also the inverse image @f^*\mathcal{G}@, which is a filter on @X@ defined as the collection of subsets @A \subseteq X@ such that there exists some @B \in \mathcal{G}@ with @f^{-1}(B) \subseteq A@. It’s not too hard to show that this really is a filter, and as expected the direct and inverse image form a Galois connection. More precisely, for any set function @f : X \to Y@, any filter @\mathcal{F}@ on @X@ and any filter @\mathcal{G}@ on @Y@, we have

@@f_*\mathcal{F} \leq \mathcal{G} \iff \mathcal{F} \leq f^*\mathcal{G}.@@

As a consequence, we have the usual relations @\mathcal{F} \leq f^*f_*\mathcal{F}@ and @f_*f^*\mathcal{G} \leq \mathcal{G}@. Many nice things can be said about filters using this connection, direct images, and inverse images. Here are some examples:

  • Let @i : A \hookrightarrow X@ be the inclusion map from a subset @A \subseteq X@. Then one can check @i_*(\top)@ is exactly @\uparrow A@, the principal filter at @A@.

  • For any function @f : X \to Y@ and @\mathcal{F}@ filter on @X@, we have @f_*\mathcal{F} = \bot@ if and only if @\mathcal{F} = \bot@. Indeed, suppose @F = \bot@; then by the Galois connection it’s always true that @f_*\mathcal{F} \leq \mathcal{G}@ for any filter @\mathcal{G}@ on @Y@, so in particular @f_*\mathcal{F} = \bot@. On the other hand, suppose @f_*\mathcal{F} = \bot@; by definition this means all subsets of @Y@ have their preimage a member of @\mathcal{F}@; in particular @f^{-1}(\varnothing) = \varnothing \in \mathcal{F}@, whence @\mathcal{F} = \bot@. One similar argument shows that for any filter @\mathcal{G}@ on @Y@, we have @\mathcal{G} = \top@ if and only if @f^*\mathcal{G} = \top@.

  • Let @X@ be a topological space, let @A \subseteq X@ be any subset, let @x \in X@ be some point and let @\mathcal{N}_x@ be the filter of neighborhoods around @x@. Denote @i : A \hookrightarrow X@ the inclusion map. Then @i^*(\mathcal{N}_x) = \bot@ if and only if the point @x@ is not in the closure of @A@. The gist of the argument is that any neighborhood of @x@ that does not intersect @A@ (such a neighborhood exists if and only if @x@ is not in the closure of @A@) can be arbitrarily extended to a larger neighborhood, possibly with many connected components.