The injective (or direct) limit of C*algebras is one way to construct new C*algebras from directed system of C*algebras (defined below), and is an essential tool in operator theory, so one may as well get acquainted with it. The projective limit (or inverse limit) is not as common it seems, but I will add it here for completeness. In this post I will try to give a definition of the construct by universal properties of colimits in the category of C*algebras, but reducing the prerequisites from category theory to a bare minimum. The point is to highlight that similarities between direct limits of groups, rings, algebras etc., stems from the fact that they all solve the same universal problem in their respective categories, and to justify why some of these limits/colimits are preserved under certain transformations. Though the similarities may be evidenced, this is understandably (but also unfortunately) often not addressed in the classical references of operator theory, as a formal definition of a limit/colimit would be a significant digression.
Preliminaries
First we will need to get our hands dirty with some categorical definitions, whilst keeping things slightly informal. For nets or sequences, one starts with a map that assigns to each element in the index set, an element in some topological space. Completely analogously, if we want to define a notion of limits in a category $C$, one first defines an “index set”, or rather index category, and determines a function, or rather a functor, from this index category to into $C$. This is called a diagram in $C$, and is what one uses to define a limit. By an abuse of terminology, and to make the definition as “functorfree” as possible, I will often refer to the objects in the diagram as the diagram.
Next we need the notion of a cone. A cone over a diagram $D$ in a category $C$ is an object $c$ in $C$ with a collection of “projection” morphisms $p_x$ from $c$ to each element $x$ in the diagram, such that if $f: x\to y$ is a morphism in the diagram $D$, then $p_y = f\circ p_x$. The name stems from the usual depiction of a cone as in the diagram below, and the condition on the projection maps is equivalent to the requirement that each triangle not entirely contained in $D$ commutes.
An analogous (or dual) notion of a cone is a cocone, which is just like a cone in which all the arrows not entirely contained in the diagram are reversed. That is, a cocone is an object $c$ together with a family of “inclusion” morphisms $\iota_x: x\to c$, one for each object $x\in D$, satisfying, for each morphism $f:x\to y$ between objects in $D$, the equality
$$\iota_x = \iota_y \circ f. $$
Among all cones over a diagram $D$ one can choose (if it exists) a special cone which is universal in the sense that any other cone factors uniquely through it. More precisely, if $(c, \{ p_x\})$ is this universal cone over $D$, and $(c’, \{\phi_x\})$ is any other cone over the diagram $D$, then there exists a unique morphism $\alpha: c’ \to c$ such that $\phi_x = p_x\circ \alpha $ (see the picture below). This universal cone is what is referred to as the limit of the diagram $D$. Convince yourself this limit is unique (up to unique isomorphism).
There is also a universal cocone, which is what is called a colimit in $\mathcal{C}$. It is uniquely determined (if it exists) as the object $c$ in $C$ and the family of morphisms $\iota_x$ from $x \in D$ to $c$, by the requirement that for every other cocone $(c’, \{\phi_x\})$, there exists a unique morphism $\alpha: c \to c’ $ such that $\phi_x = \alpha \circ \iota_x$.
The category of C*algebras, like the category $Ban_1$ of Banach spaces with contractive maps as morphisms, is complete and cocomplete, meaning that all diagrams which are not too large, have limits and colimits. Not too large here means that the index category can be treated as a set and not a class. I will adhere to the following quite standard notation throughout this post:
\begin{array}{cc}
\varinjlim A_i & \text{for the limit}\\
\varprojlim B_i & \text{for the colimit.}
\end{array}
Lastly, it should be mentioned that the above definition is often stated by means of natural transformations of functors. Now enough of this abstract extravagances, let’s get back to the task at hand.
In the next two sections a concrete realization of a colimit and a limit will be defined in cases where the index category is an upward directed set, for some basic categories like sets, topological spaces and most algebraic objects. The proofs of universality will not be supplied in these sections. The third section will deal with limits and colimits of C*algebras.
Projective Limits (or Inverse Limits)
Among all limits and colimits, two pop up all the time, the injective (or Direct or Inductive) limit, which is a colimit, and the projective (or inverse) limit, which is a limit. They are characterized by the structure of their index category. Unfortunately the terminology does vary, so be on the alert. Let’s define the projective limit first, as this is somewhat simpler to define.
Let $(\mathcal{A}_i)_{i\in I}$ be a net of objects in a category $\mathcal{C},$ and assume there is a family of morphisms of morphisms $f_{i, j}: A_j \to A_i$ whenever $i\prec j$, such that
 $f_{i, i} = id_{A_i}$
 $f_{k, j} \circ f_{j, i} = f_{k, i} \qquad \text{ for all } \quad i \prec j \prec k $
then the the net $\{ A_i \}$ together with the family of morphisms $f_{i, j}$ is called an inverse system (this is a special type of diagram in $\mathcal{C}$). The second condition above captures the idea of being “path independent”. When the index set is linearly ordered one usually define the morphisms for each consecutive index, and drops the above condition, as there is only one path between two indices. The limit over this system is called the projective (or inverse) limit of the system, and is denoted
$$\varprojlim (\mathcal{A}_i, f_{i,j}).$$
The name “inverse limit” is justified by the fact that the morphisms $f_{i,j}$ point in the direction of “decreasing” indices. The name “projective limit” stems from the fact that this is a limit in the categorical sense, hence is equipped with a family of “projections” $$p_r: \varprojlim (\mathcal{A}_i, f_{i,j}) \to \mathcal{A}_r.$$ The intuition behind the construction is that the projective limit defines an object by piecing together the collection $\mathcal{A_i}$ and using the family of morphisms to define (and identify) the “overlap”.
For many algebraic objects (rings, groups, (left/right) Rmodules, etc ), topological space or sets, one has a concrete realization of the projective limit, given as as follows. In the category of sets the limit is defined as the set,
$$ \varprojlim (\mathcal{A}_i, f_{i,j}) = \{ (a_i) \subset \prod_{i\in I} \mathcal{A_i}~  ~ a_j = f_{i,j}(a_i) \text{ for all } i\prec j \} $$
with projections $p_r: \varprojlim (\mathcal{A}_i, f_{i,j}) \to \mathcal{A}_r$ given as the usual coordinate projections $(a_i) \mapsto a_r$. For algebraic objects, this set can be made to inherit the algebraic structure form the $\mathcal{A}_i$’s by pointwise operations, making the projections $p_r$ morphisms in the corresponding category. For topological spaces, the set theoretic limit is endowed with the weak topology induced by the projection maps $p_r$. All these objects can be shown to be universal (as defined above) in their respective categories.
Injective limits / Direct limits / Inductive limits
Completely analogously to the projective limit, with $(\mathcal{A}_i)_{i\in I}$ a net of objects in a category $\mathcal{C},$ assume there is a family of morphisms $f_{i, j}: \mathcal{A}_i\to \mathcal{A}_j$ for each $i\prec j$ (note that we now map in the direction of increasing indices!), satisfying the following conditions
 $f_{i, i} = id_{A_i}$
 $f_{i, j} \circ f_{j, k} = f_{i, k} \qquad \text{ for all } \quad i \prec j \prec k.$
Then the net $(\mathcal{A}_i)$ together with the family of morphisms $(f_{i,j})$ is called a directed system of objects in $\mathcal{C}.$ The colimit of this system is called the injective limit (or direct limit, or inductive limit) and is denoted $$\varinjlim (\mathcal{A}_i, f_{i,j}).$$ Again, there is no fixed terminology, and one needs to determine from the context what the author means when he/she uses these terms. Similarly to the projective limit, one has a concrete realization of the injective limit for most algebraic objects (groups, rings, (left/right) Rmodules, etc.), sets and topological spaces given as follows.
Let $\mathcal{A}’ = \bigsqcup A_i$ be the disjoint union of all $\mathcal{A_i}$’s, and define an equivalence relation on $\mathcal{A}’$ by
$$a \sim b \qquad \text{ if there exists a } k\in I \text{ such that } f_{i,k}(a) = f_{j, k}(b)$$
where we have tacitly assumed $a\in \mathcal{A}_i$, $b\in \mathcal{A}_j$ and we have identified $\mathcal{A}_i$ and $\mathcal{A}_j$ with their image in $\mathcal{A}’$. The quotient $\mathcal{A} = \mathcal{A}’/\sim$, together with the inclusion maps $\iota_i : \mathcal{A}_i \to \mathcal{A} $ sending $a_i$ to the equivalence class in $\mathcal{A}$ containing $a_i$, forms a cocone over the directed system, which can be shown to be the colimit in the category of sets. This is the (set theoretic) injective limit of the system.
For algebraic objects we would like the set theoretic injective limit $\mathcal{A} $ to inherits the algebraic structure from the $\mathcal{A}_i$’s. This is done in the following way: Let $a_i, a_j \in \mathcal{A}$ and $k$ be such that $i,j \prec k$ (here we finally need the index set to be directed). We define an operation $$\cdot: \mathcal{A} \times \mathcal{A} \to \mathcal{A}$$ by $a_i \cdot a_j := f_{i,k}(a_i) \cdot f_{j, k}(a_j)$, where the later $\cdot$ is the operation in the object $\mathcal{A}_k$. It is not that hard to verify that this operation is well defined on $\mathcal{A}$ (i.e. independent of choice of $k$). The resulting object is the injective limit of the system.
For topological spaces, one endows $\mathcal{A}$ with strong (or final) topology induced by the inclusion maps $\iota_i$. That is the finest or strongest topology for which all $\iota_i$’s are continuous.
We conclude this section by a introducing a notion of isomorphisms om directed systems. A directed system $(\mathcal{A}_i, f_{i, j})$ and $(\mathcal{B}_i, g_{i,j})$ are said to be isomorphic if there exists a family of isomorphisms $\phi_{i}: \mathcal{A}_i \to \mathcal{B}_i$ such that for each $i\prec j$ the following diagram commutes
$$
\newcommand{\ra}[1]{\!\!\!\!\!\!\!\!\!\!\!\!\xrightarrow{\quad#1\quad}\!\!\!\!\!\!\!\!}
\newcommand{\da}[1]{\left\downarrow{\scriptstyle#1}\vphantom{\displaystyle\int_0^1}\right.}
%
\begin{array}{llll}
\mathcal{A}_i & \ra{f_{i, j}} &\mathcal{A}_{j} \\
\da{\phi_i} & & \da{\phi_j} \\
\mathcal{B}_i & \ra{g_{i, j}} &\mathcal{B}_{j} \\
\end{array}
$$
A completely analogous definition exists for inverse systems. As one would expect, isomorphic directed (or inverse) systems have isomorphic colimits (or limits), but there may be nonisomorphic directed systems (inverse systems) which have isomorphic injective limits (projective limits).
Now that we have a gist of how projective and injective limits are formed for algebraic objects, most of the heavy lifting has already been done, and we are ready to turn our attention to C*algebras.
Injective/Projective limits of C*algebras
Let $(\mathcal{A}_i, f_{i,j})$ be a directed system of C*algebras and $\mathcal{A}’$ the injective limit of the underlying algebras (see the previous section). If $a \in \mathcal{A}’$ is the equivalence class of the element $a \in \mathcal{A}_i$, one defines a C*seminorm
$$ a = \lim_{j>i }  f_{i, j}(a) . $$
It is well defined since the maps $f_{i, j}$ are all norm decreasing. Lifting this to the quotient space $\mathcal{A}’/ \{ a ~: ~ a = 0\}$ we have a C*norm. The injective limit of the directed system is defined as the C*algebra $\mathcal{A}$ given by the completion of $\mathcal{A}’/ \{ a ~: ~ a = 0\}$ with respect to this norm.
The above defined C*algebra $\mathcal{A}$, together with the natural inclusion maps $\iota_i: \mathcal{A}_i \to \mathcal{A}$ sending $a_i$ to its equivalence class in $\mathcal{A}$, is the colimit of the directed system $(\mathcal{A}_i, f_{i,j})$, that is
$$\mathcal{A} = \varinjlim (\mathcal{A}_i, f_{i,j}).$$
$$\alpha: C \to \mathcal{B} \qquad \text{sending } ~ \alpha(\iota_i(a)) = g_i(a),$$
so uniqueness follows by density of $C$. One needs to check that $\alpha$ is well defined. Assume $a\in \mathcal{A}_i$ and $b\in \mathcal{A}_j$ are such that $\iota_i(a) = \iota_j(b)$. We must show that $g_i(a) = g_j(b)$. By construction,
$$\iota_i(a) = \iota_j(b) \qquad \Leftrightarrow \qquad \lim_{k>i,j}  f_{i,k}(a) – f_{j,k}(b) = 0$$
hence if $i,j \prec k$, we have
\begin{array}{llr}
g_i(a) – g_j(a) & = g_k(f_{i,k}(a)) – g_k(f_{j, k}(b)) & \text{by definition of a colimit}\\
& \leq  f_{i, k}(a) – f_{j, k}(b) .&
\end{array}
Since $k$ was arbitrary, we get that $g_i(a) – g_j(a) = 0$, and $\alpha $ is well defined. We also need to check it is norm decreasing (since $C$ is not complete). This follows by
$$\alpha(\iota_i(a)) = g_i(a) =  g_{k}(f_{i, k}(a)) \leq  f_{i, k}(a) \xrightarrow{k > i } \iota_i(a).$$
Now here is the definition of the projective limit of an inverse system of C*albegras $(\mathcal{A}_i, f_{i,j})$. Let $\mathcal{A}’$ be the projective limit of the underlying algebras (defined above). We define $\mathcal{A} \subset \mathcal{A}’$ to be the subalgebra given by
$$\mathcal{A} = \{ (a_i) \subset \mathcal{A}’ ~ : ~ \sup_{i\in I} a_i < \infty \}$$
The above defined algebra $\mathcal{A}$ is a C*algebra with respect to the norm $(x_i) = \sup_{i\in I} x_i$, which, together with the natural projection maps $p_i: \mathcal{A}\to \mathcal{A}_i $ projecting onto its i’th coordinate, is the limit of the inverse system $(\mathcal{A}_i, f_{i,j})$. That is
$$\mathcal{A} = \varprojlim (\mathcal{A}_i, f_{i,j}).$$
$$\sup_{r\in I}a_r^i – b_r  =  (a)^i – (b)  \leq \frac{\epsilon}{2} < \epsilon.$$
This shows that $(a)^i \to (b)$ in the given norm.
Some Generalizations
A closely related notion of the above, is that of a proC*algebra (or local C*algebras) which is just the projective limit of an inverse system of C*algebras taken in the category of topological *algebras. Another related concept is that of a $\sigma$C*algebra, where the inverse system of C*algebras is required to be countable and the limit is again taken in the category of topological *algebras. These are not necessarily C*algebras per se, and I will not delve into the theory here.
Lastly, I would also like to point out that there exists a notion of a generalized injective limit of C*algebras, where the morphisms between the objects are not necessarily *homomorphisms of C*algebras, but their “asymptotic behavior” mirrors that of an ordinary *homomorphism. For the precise definition consult the last section of Blackader’s book (Operator Algebras).
There is also another way to exhibit an isomorphism between limit C*algebras $\mathcal{A}$ and $\mathcal{B}$, which is to find an interwining of the algebras. For injective limits when the index set is a sequence these are maps $\phi_i: \mathcal{B}_i \to \mathcal{A}_i$ and $\psi_i: \mathacal{A}_i \to \mathcal{B}_{i+1}$ (note the incremented index!) such that every “triangle” commutes when one sketches out the diagram. As one would expect the increment of 1 is arbitrary, one only needs a subsequence of such interwinings for the limit algebras to be isomorphic. One can make this ever weaker by introducing approximate interwining. Similar constructions could be carried out for projective limits directed index sets in the obvious way.
Examples and duality
Some common injective limits are,
 Stalks and Germs: If $X$ is any topological space, the germ at a point $p\in X$ of continuous functions is an equivalence relation on $C(X)$ given by
$$ f \sim g \qquad \Leftrightarrow \qquad \text{there exists a neighbourhood } U \text{ of } p \text{ such that } f_{U} = g_{U}.$$
The equivalence is “local” in nature, and appears when defining tangent spaces of manifolds (as germs of curves) or as elements in the stalks of (pre)sheaves. Generally, let $(\mathcal{F}, X)$ be a (pre)sheaf of objects in any category where injective limits exists (groups, rings, algebras, Rmodules, C*algebras, …). The stalk of the (pre)sheaf at a point $p\in X$ is denoted $\mathcal{F}_p$ and is defined as the injective limit:
$$ \mathcal{F}_p := \varinjlim_{p\in U} (\mathcal{F}(U), res)$$
of the net indexed by all neighborhoods $U$ of $p$ ordered by inclusion, with morphisms the usual restriction maps. Elements in $\mathcal{F}_p$ are called germs at $p$. For sheaves of continuous complex valued functions (C*algebras) can you verify that the two definitions coincide, when the injetive limit is taken in the category of rings?  Distributions: Another common example is the topology on the space of test functions. Let $U$ be a locally convex space, and $K_i$ a countable compact exhaustion of $U$. Let $D_{K_i}$ denote the space of all smooth functions on $U$ with support contained in $K_i$, endowed with weak topology induced by the family of seminorms:
$$ f_\alpha = \max_{x\in K_i}\partial^\alpha f(x) \qquad \alpha \in \mathbb{N}.$$
The space of all test functions, denoted $D(U)$, can be defined as the limit in the category of locally convex space of the directed system $(D_{K_i}, f_i)$ ordered by inclusion where $f_i$ are the inclusion maps $f_i: D_{K_i} \to D_{K_{i+1}}$. That is
$$D(U) = \varinjlim (D_{K_i}, f_i)$$  Given a unital ring A, and an element $p\in A$ which is not invertible, the smallest extension of $A$ containing $p$ as a unit is the ring of fraction $S^{1}A$, where $S\subset A$ is the multiplicative subset $$S = \{0, p, p^1, … \}, \qquad \text{and } \qquad S^{1}A = \{ \frac{a}{p^n} ~~ a\in A, ~n\in \mathbb{Z} \}.$$ This ring is also given as the injective limit of the directed system $(A, p)$, where by an slight abuse of notation $p: A\to A$ denotes the multiplication by “p” map. The natural inclusion maps are given by $\phi_i: A\to S^{1}A$ sending $a \mapsto \frac{a}{p^i}$.
 padic rationals As an application of the previous example, the padic rationals is the ring of fraction given by the multiplicative subset $S= \{ 0, p, p^2, … \}$ of the padic integers $\mathbb{Z}_p$(defined below) where $p$ is a positive prime number. It is hence also given as the injective limit of the directed system $(\mathbb{Z}_p, p)$ where $p:\mathbb{Z}_p \to \mathbb{Z}_p$ is the multiplication by p map.
And some common projective limits are

 padic integers here denoted $\mathbb{Z}_p$, where $p$ is a positive integer, is a group of all formal sums of the form $\sum_{i\geq 0}a_i p^i$ with the condition that $0\leq a_i \leq p^i$. It can also be given as the projective limit of the system, indexed by $\mathbb{N}$, whose objects are the groups
$$\mathbb{Z}/p^n\mathbb{Z} = \{ 0, 1, …, p^n – 1 \}$$
and whose morphisms are the maps
$$f_{i}: \mathbb{Z}/p^{i+1}\mathbb{Z} \to \mathbb{Z}/p^{i}\mathbb{Z} \qquad \text{given by } \qquad r \mapsto r ~ (mod ~p^{i+1}).$$
For a proof of the equivalence of these definitions see the first theorem of section 4.7 of Walter’ now classic book “A course in padic analysis”.  padic solenoid The padic solenoid $S$ is defined as the projective limit of the system $(S^1, p)$, where $p: S^1 \to S^1$ sends $z\mapsto z^p$. That is
$$ S = \{ (z_i) \in \prod_{i\in \mathbb{N}} S^1 ~ ~ z_i = z_{i+1}^p \}.$$
There often is a correspondence between colimit objects and limits of dual objects, that is, if $G$ is the injective limit of locally compact abelian groups $(G_i, f_i)$, the dual group $G^*$ of $G$ is the projective limit of the inverse system $(G_i^*, f_i^*)$ where the $G_i^*$ is the dual groups of $G_i$ and $f_i^*$ is the lift of $f_i$.
The abstract justification for this is that the Pontryagin dual functor, which sends a group to its dual group, is (by its very definition) a contravariant representable functor hence sends colimits to limits. As such we could have written the padic solenoid above as a certain projective limit of so called Prüfer p groups (the dual groups of the padic integers), but no, let’s not. The same holds for the functor sending a vector space to its dual.
For another example of duality in action, more relevant to the scope of the blog, the assignment of a compact Hausdorff space to a commutative unital C*algebra (via the Gelfand transform) is known to be a (contravariant) equivalence of categories and hence preserves both limits and colimits. As a consequence if $(X_i, f_{i, j})$ s a directed system compact Hausdorff with $$X = \varinjlim (X_i, f_{i, j}),$$ then for the corresponding inverse system $(C(X_i), f^*_{i, j})$ of C*algebras we have the projective limit $$C(X) = \varprojlim (C(X_i), f_{i, j}^*)$$ where $f_{i, j}^*$ is the usual lift of $f_{i, j}$.
In the future I hope to be able to cover some more concrete properties of these limits, which might be more useful in applications, and show how they are employed to define so called AF algebras (to my knowledge first studied by Ola Bratteli here at the university of Oslo) and UHF algebras. If you find any mistakes, or have a nice example of use of projective/injective limits that gets used in analysis, let me know by pm or in the comments below and I will add them to the list.
 padic integers here denoted $\mathbb{Z}_p$, where $p$ is a positive integer, is a group of all formal sums of the form $\sum_{i\geq 0}a_i p^i$ with the condition that $0\leq a_i \leq p^i$. It can also be given as the projective limit of the system, indexed by $\mathbb{N}$, whose objects are the groups