[proofplan]
We prove completeness directly by constructing the limit of an arbitrary small diagram of groups. The ambient object is the Cartesian product of all groups appearing in the diagram, equipped with componentwise multiplication. Inside this product we take the subgroup of compatible tuples, meaning tuples whose coordinates are respected by every structure homomorphism in the diagram. The restricted coordinate projections form a cone, and the universal property follows by sending any cone from a group $K$ to the unique compatible tuple of its component maps.
[/proofplan]
[step:Construct the ambient product group for the diagram]
Let $\mathcal{J}$ be a small category, and let
\begin{align*}
G:\mathcal{J} &\to \mathsf{Grp}
\end{align*}
be a functor. For each object $i \in \operatorname{Ob}(\mathcal{J})$, write $G_i := G(i)$, and denote the identity element of $G_i$ by $e_i$. For each morphism $\alpha:i\to j$ in $\mathcal{J}$, the functor gives a group homomorphism
\begin{align*}
G(\alpha):G_i &\to G_j.
\end{align*}
Define the set
\begin{align*}
P := \prod_{i\in \operatorname{Ob}(\mathcal{J})} G_i.
\end{align*}
Since $\mathcal{J}$ is small, $\operatorname{Ob}(\mathcal{J})$ is a set, so this Cartesian product is a set. Define multiplication on $P$ componentwise: for $x=(x_i)_{i\in \operatorname{Ob}(\mathcal{J})}$ and $y=(y_i)_{i\in \operatorname{Ob}(\mathcal{J})}$ in $P$,
\begin{align*}
xy := (x_i y_i)_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
Define
\begin{align*}
e_P := (e_i)_{i\in \operatorname{Ob}(\mathcal{J})}
\end{align*}
and
\begin{align*}
x^{-1}:=(x_i^{-1})_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
Associativity, the identity law, and the inverse law hold componentwise because they hold in each group $G_i$. Hence $P$ is a group.
For each object $i\in \operatorname{Ob}(\mathcal{J})$, define the coordinate projection
\begin{align*}
p_i:P &\to G_i\\
(x_j)_{j\in \operatorname{Ob}(\mathcal{J})} &\mapsto x_i.
\end{align*}
For $x,y\in P$,
\begin{align*}
p_i(xy)=x_i y_i=p_i(x)p_i(y),
\end{align*}
so each $p_i$ is a group homomorphism.
[/step]
[step:Define the subgroup of compatible tuples]
Define
\begin{align*}
L
:=
\left\{
x=(x_i)_{i\in \operatorname{Ob}(\mathcal{J})}\in P
:
G(\alpha)(x_i)=x_j
\text{ for every morphism } \alpha:i\to j
\right\}.
\end{align*}
We prove that $L$ is a subgroup of $P$.
First, $e_P\in L$. Indeed, for every morphism $\alpha:i\to j$, the map $G(\alpha):G_i\to G_j$ is a group homomorphism, so
\begin{align*}
G(\alpha)(e_i)=e_j.
\end{align*}
Thus $e_P$ satisfies the compatibility condition.
Next, let $x=(x_i)_i$ and $y=(y_i)_i$ be elements of $L$. For every morphism $\alpha:i\to j$, using that $G(\alpha)$ is a homomorphism and that $x,y$ are compatible gives
\begin{align*}
G(\alpha)(x_i y_i)
=
G(\alpha)(x_i)G(\alpha)(y_i)
=
x_j y_j.
\end{align*}
Hence $xy\in L$.
Finally, let $x=(x_i)_i\in L$. For every morphism $\alpha:i\to j$,
\begin{align*}
G(\alpha)(x_i^{-1})
=
G(\alpha)(x_i)^{-1}
=
x_j^{-1},
\end{align*}
again because $G(\alpha)$ is a group homomorphism. Hence $x^{-1}\in L$. Therefore $L\le P$.
[guided]
The compatibility condition says that a tuple $x=(x_i)_i$ should behave as if all of its coordinates came from a single object mapping into the whole diagram. We now check that the set of such tuples is stable under the group operations inherited from the product.
Define
\begin{align*}
L
:=
\left\{
x=(x_i)_{i\in \operatorname{Ob}(\mathcal{J})}\in P
:
G(\alpha)(x_i)=x_j
\text{ for every morphism } \alpha:i\to j
\right\}.
\end{align*}
To prove that $L$ is a subgroup of $P$, we verify identity, products, and inverses.
The identity element of $P$ is
\begin{align*}
e_P=(e_i)_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
For every morphism $\alpha:i\to j$, the map $G(\alpha):G_i\to G_j$ is a group homomorphism, and every group homomorphism sends identity to identity. Hence
\begin{align*}
G(\alpha)(e_i)=e_j.
\end{align*}
Thus $e_P$ satisfies the defining compatibility condition, so $e_P\in L$.
Now take two compatible tuples $x=(x_i)_i\in L$ and $y=(y_i)_i\in L$. Their product in $P$ is the tuple $xy=(x_i y_i)_i$. For a morphism $\alpha:i\to j$, the homomorphism property gives
\begin{align*}
G(\alpha)(x_i y_i)
=
G(\alpha)(x_i)G(\alpha)(y_i).
\end{align*}
Because $x$ and $y$ are compatible, $G(\alpha)(x_i)=x_j$ and $G(\alpha)(y_i)=y_j$. Therefore
\begin{align*}
G(\alpha)(x_i y_i)=x_j y_j,
\end{align*}
which is precisely the compatibility condition for the product tuple. Hence $xy\in L$.
Finally, take $x=(x_i)_i\in L$. Its inverse in $P$ is $x^{-1}=(x_i^{-1})_i$. For every morphism $\alpha:i\to j$, the homomorphism property gives
\begin{align*}
G(\alpha)(x_i^{-1})
=
G(\alpha)(x_i)^{-1}.
\end{align*}
Since $x$ is compatible, $G(\alpha)(x_i)=x_j$, so
\begin{align*}
G(\alpha)(x_i^{-1})=x_j^{-1}.
\end{align*}
Thus $x^{-1}$ is compatible. Hence $L$ is a subgroup of $P$.
[/guided]
[/step]
[step:Restrict the coordinate projections to obtain a cone]
For each object $i\in \operatorname{Ob}(\mathcal{J})$, define
\begin{align*}
\pi_i:L &\to G_i\\
(x_j)_{j\in \operatorname{Ob}(\mathcal{J})} &\mapsto x_i
\end{align*}
to be the restriction of $p_i$ to $L$. Since $p_i:P\to G_i$ is a group homomorphism and $L\le P$, the map $\pi_i$ is a group homomorphism.
We verify that $(\pi_i)_{i\in \operatorname{Ob}(\mathcal{J})}$ is a cone over $G$. Let $\alpha:i\to j$ be a morphism in $\mathcal{J}$, and let $x=(x_k)_{k\in \operatorname{Ob}(\mathcal{J})}\in L$. By the definition of $L$,
\begin{align*}
G(\alpha)(\pi_i(x))
=
G(\alpha)(x_i)
=
x_j
=
\pi_j(x).
\end{align*}
Therefore
\begin{align*}
G(\alpha)\circ \pi_i=\pi_j
\end{align*}
for every morphism $\alpha:i\to j$, so the maps $\pi_i:L\to G_i$ form a cone.
[/step]
[step:Build the unique comparison homomorphism from any cone]
Let $K$ be a group, and suppose that for each object $i\in \operatorname{Ob}(\mathcal{J})$ we are given a group homomorphism
\begin{align*}
h_i:K &\to G_i
\end{align*}
such that for every morphism $\alpha:i\to j$ in $\mathcal{J}$,
\begin{align*}
G(\alpha)\circ h_i=h_j.
\end{align*}
This means that $(h_i)_{i\in \operatorname{Ob}(\mathcal{J})}$ is a cone from $K$ to the diagram $G$.
Define
\begin{align*}
u:K &\to L\\
k &\mapsto (h_i(k))_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
This map is well-defined because for every $k\in K$ and every morphism $\alpha:i\to j$,
\begin{align*}
G(\alpha)(h_i(k))
=
h_j(k),
\end{align*}
so the tuple $(h_i(k))_i$ lies in $L$.
The map $u$ is a group homomorphism. Indeed, for $k,\ell\in K$,
\begin{align*}
u(k\ell)
=
(h_i(k\ell))_i
=
(h_i(k)h_i(\ell))_i
=
(h_i(k))_i (h_i(\ell))_i
=
u(k)u(\ell),
\end{align*}
where the second equality uses that each $h_i$ is a group homomorphism and the third equality uses componentwise multiplication in $L\le P$.
For each object $i\in \operatorname{Ob}(\mathcal{J})$ and each $k\in K$,
\begin{align*}
(\pi_i\circ u)(k)
=
\pi_i((h_j(k))_j)
=
h_i(k),
\end{align*}
so
\begin{align*}
\pi_i\circ u=h_i.
\end{align*}
[guided]
Now we prove the universal mapping property. Start with an arbitrary cone into the diagram. Thus $K$ is a group, and for every object $i\in \operatorname{Ob}(\mathcal{J})$ there is a group homomorphism
\begin{align*}
h_i:K &\to G_i.
\end{align*}
The cone condition says that these maps commute with every structure homomorphism in the diagram: for every morphism $\alpha:i\to j$,
\begin{align*}
G(\alpha)\circ h_i=h_j.
\end{align*}
The only possible map from $K$ to the candidate limit $L$ is the map that records all cone components at once. Define
\begin{align*}
u:K &\to L\\
k &\mapsto (h_i(k))_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
We must first check that this formula really lands in $L$, not merely in the larger product $P$. Fix $k\in K$ and a morphism $\alpha:i\to j$. The cone condition gives
\begin{align*}
G(\alpha)(h_i(k))=(G(\alpha)\circ h_i)(k)=h_j(k).
\end{align*}
This is exactly the compatibility condition defining $L$. Therefore $(h_i(k))_i\in L$, and $u$ is well-defined as a map $K\to L$.
Next we verify that $u$ is a homomorphism. Let $k,\ell\in K$. Since every $h_i:K\to G_i$ is a group homomorphism,
\begin{align*}
h_i(k\ell)=h_i(k)h_i(\ell)
\end{align*}
for every object $i$. Therefore, using componentwise multiplication in $L$,
\begin{align*}
u(k\ell)
=
(h_i(k\ell))_i
=
(h_i(k)h_i(\ell))_i
=
(h_i(k))_i(h_i(\ell))_i
=
u(k)u(\ell).
\end{align*}
Thus $u$ is a group homomorphism.
Finally, $u$ has the required projection identities. For each object $i$ and each $k\in K$,
\begin{align*}
(\pi_i\circ u)(k)
=
\pi_i((h_j(k))_j)
=
h_i(k).
\end{align*}
Hence $\pi_i\circ u=h_i$ for every object $i$. This proves existence of a cone morphism from $K$ to $L$.
[/guided]
[/step]
[step:Prove uniqueness of the comparison homomorphism]
Let
\begin{align*}
v:K &\to L
\end{align*}
be a group homomorphism satisfying
\begin{align*}
\pi_i\circ v=h_i
\end{align*}
for every object $i\in \operatorname{Ob}(\mathcal{J})$. For any $k\in K$, write
\begin{align*}
v(k)=(v(k)_i)_{i\in \operatorname{Ob}(\mathcal{J})}.
\end{align*}
Then, for each object $i$,
\begin{align*}
v(k)_i
=
\pi_i(v(k))
=
h_i(k).
\end{align*}
Therefore
\begin{align*}
v(k)=(h_i(k))_{i\in \operatorname{Ob}(\mathcal{J})}=u(k)
\end{align*}
for every $k\in K$. Hence $v=u$. Thus there is a unique group homomorphism $u:K\to L$ satisfying $\pi_i\circ u=h_i$ for every object $i$.
[/step]
[step:Conclude that every small diagram of groups has a limit]
The subgroup $L\le \prod_{i\in \operatorname{Ob}(\mathcal{J})}G_i$, together with the projection homomorphisms
\begin{align*}
\pi_i:L &\to G_i,
\end{align*}
is a cone over the diagram $G$. The preceding two steps prove that for every group $K$ and every cone $(h_i:K\to G_i)_i$ over $G$, there exists a unique group homomorphism
\begin{align*}
u:K &\to L
\end{align*}
such that $\pi_i\circ u=h_i$ for every object $i$. This is exactly the universal property of the limit of $G$ in $\mathsf{Grp}$.
Since $\mathcal{J}$ and $G:\mathcal{J}\to\mathsf{Grp}$ were arbitrary, every small diagram in $\mathsf{Grp}$ has a limit. Therefore $\mathsf{Grp}$ is complete.
[/step]