# Cocountable Topology

Given a space $X$, there are many ways to define a topology. More common methods are one of the following:

• explicitly list out all the open sets
• define the rules for a subset $U \subseteq X$ to be open
• define the basis/subbasis of the topology (Note: The basis here refers to topological basis, this is different than a vector space basis that we have learnt in linear algebra.)

More often than not, we will work with topological spaces that has infinitely many open sets. In this case it will be hard to explicitly list out all the open sets in the topological space. In this post, we will look at a topology call cocountable topology, and luckily, we can describe the open set of this topology, thus we do not need to describe a topological basis.

Given a ground set $X$, the cocountable topology $\tau$ on $X$ is the empty set together with the collection of subsets $U \subseteq X$ such that $X \setminus U$ is countable, namely the complement of $U$ is countable. For example, if $X = \{1,2,3\}$, then under the cocountable topology, none of the subsets of $X$ is open.

Now let’s assume that $X$ is an uncountable set.  By definition, $\emptyset, X \in \tau$. Then, let $\{U_{\lambda}\}_{\lambda \in \Lambda} \subseteq \tau$ be a collection of open sets in $X$ for some index set $\Lambda$. Thus $X \setminus U_{\lambda}$ is countable for all $\lambda \in \Lambda$. Now consider

$X \setminus \bigcup_{\lambda \in \Lambda} U_{\lambda} = \bigcap_{\lambda \in \Lambda} [X \setminus U_{\lambda}] \subseteq X \setminus U_{\lambda_0}$

by De Morgan’s law, where $\lambda_0 \in \Lambda$ is arbitrary. Since $X \setminus U_{\lambda}$ is countable for all $\lambda \in \Lambda$ and intersections will only result in smaller set, therefore $X \setminus \bigcup_{\lambda \in \Lambda} U_{\lambda}$ must be countable. Thus we may conclude that $\bigcup_{\lambda \in \Lambda} U_{\lambda} \in \tau$.

Finally, let $\{U_i\}_{i=1}^{n} \subseteq X$ be a finite collection. Then by De Morgan’s law, we have $X \setminus \bigcap_{i=1}^{n} U_i = \bigcup_{i=1}^{n} (X \setminus U_i)$. Notice that finite union of countable sets is still countable (in fact, countable union of countable sets is countable), thus $X \setminus \bigcap_{i=1}^{n} U_i$ is countable and $\bigcap_{i=1}^{n} U_i \in \tau$.

Therefore $\tau$ is indeed a topology.

Arch Linux

# Installing NVIDIA Driver on Arch Linux

Installing NVIDIA driver in Arch Linux is pretty simple. However, to set up the configurations can be frustrating. If you have just fresh installed Arch Linux, great! Just follow the following steps to install and configure NVIDIA drivers. Personally, I did not have a fresh Arch Linux, and hence I need to delete most of the graphics drivers and install them again.

### Installing NVIDIA Driver

Personally, I prefer using NVIDIA Optimus in conjunction with Bumblebee (Yes, they are Transformers names. There is also a package for hybrid graphics call Prime, check it out). To install the drivers after a fresh Arch Linux intallation, do the followin steps in that order.

1. pacman -S nvidia nvidia-lts nvidia-settings lib32-nvidia-utils lib32-nvidia-libgl mesa xf86-video-intel lib32-virtualgl
2. gpasswd -a <user> bumblebee
3. sudo systemctl enable bumblebeed.service

However, most people do not a fresh install. So we need to remove all the graphic drivers first. To do this, run either

• pacman -Rdd nvidia nvidia-lts nvidia-settings lib32-nvidia-utils lib32-nvidia-libgl mesa xf86-video-intel lib32-virtualgl
• pacman -Rs nvidia nvidia-lts nvidia-settings lib32-nvidia-utils lib32-nvidia-libgl mesa xf86-video-intel lib32-virtualgl

Either one of the above should work. Warning: If all else fails, you can try pacman -Rsc nvidia nvidia-lts nvidia-settings lib32-nvidia-utils lib32-nvidia-libgl mesa xf86-video-intel lib32-virtualgl, but I am strongly against this command unless you know what you are doing.

To test that the driver is running correctly, install mesa-demos and use glxgears to test if it works by running optirun glxgears -info. If that fails, try running optirun glxspheres64 for 64 bit system,  or optirun glxspheres32 for 32 bit system.

### Running a Program with NVIDIA

Simply add optirun in front of the commands. For example, if we want to run wine with app.exe, simply type in optirun wine app.exe in the terminal.