Zulip Chat Archive
Stream: new members
Topic: Don't understand "pure x" as a filter
Ching-Tsun Chou (Dec 07 2024 at 00:08):
In sec.10.3.1 of #mil, there is the following passage:
The first constraint is that
𝓝 x
, seen as a generalized set, contains the set{x}
seen as the generalized setpure x
(explaining this weird name would be too much of a digression, so we simply accept it for now). Another way to say it is that if a predicate holds for points close tox
then it holds atx
.example (x : X) : pure x ≤ 𝓝 x :=
pure_le_nhds x
What is pure x
in this context? More precisely, what exactly is pure x
as a set of subsets of X? Where can I find the definition? F12 sends me to the definition of the typeclass Pure
, which is not very helpful.
Also, check 𝓝 x
tells me that 𝓝 x
is of type Filter X
. But even #check pure x : Filter X
fails to infer the type: pure x : ?m.2222 X
. Why?
Mitchell Lee (Dec 07 2024 at 00:55):
It is the set of all sets that contain x
Mitchell Lee (Dec 07 2024 at 00:58):
You need to put parentheses around pure x : Filter X
in order to do the type ascription. Try #check (pure x : Filter X)
.
Mitchell Lee (Dec 07 2024 at 01:01):
See here: Filter.instPure
Ching-Tsun Chou (Dec 07 2024 at 02:46):
Thanks! I was able to prove it:
example (x : X) : pure x = 𝓟 {x} := by simp
Kyle Miller (Dec 07 2024 at 03:39):
I think it's good to use something like simp?
learn why it is that these are equal — that points to docs#Filter.principal_singleton in Mathlib.Order.Filter.Basic, so at least that equality is meant to be part of the basic theory. If not for technical reasons, it could be proved with rfl
(it could be by definition). Here's the definition of pure: docs#Filter.instPure
If you want to know a bit more details, Filter
forms a monad via docs#Filter.monad, which is where this odd pure
terminology is coming from.
Ching-Tsun Chou (Dec 07 2024 at 08:08):
Thanks! How does Filter
form a monad? What are the monad operations?
Last updated: May 02 2025 at 03:31 UTC