[proofplan]
We apply the [Special Adjoint Functor Theorem](/theorems/4181) to the opposite functor $F^{\mathrm{op}}: \mathcal{D}^{\mathrm{op}} \to \mathcal{C}^{\mathrm{op}}$. The hypotheses on $\mathcal{D}$ dualize exactly into completeness, well-poweredness, and existence of a cogenerator for $\mathcal{D}^{\mathrm{op}}$, while preservation of colimits by $F$ becomes preservation of limits by $F^{\mathrm{op}}$. The dual solution-set condition, meaning a set of arrows $F(d_i) \to c$ through which every arrow $F(d) \to c$ factors, is precisely the ordinary solution-set condition for $F^{\mathrm{op}}$. The resulting left adjoint to $F^{\mathrm{op}}$ dualizes back to a right adjoint to $F$.
[/proofplan]
[step:Pass the categorical hypotheses to the opposite category]
Since $\mathcal{D}$ is cocomplete, the opposite category $\mathcal{D}^{\mathrm{op}}$ is complete: every small colimit in $\mathcal{D}$ becomes the corresponding small limit in $\mathcal{D}^{\mathrm{op}}$.
Since $\mathcal{D}$ is co-well-powered, for every object $d \in \mathcal{D}$ the collection of quotient objects of $d$ is a set up to isomorphism. Quotient objects of $d$ in $\mathcal{D}$ are precisely subobjects of $d$ in $\mathcal{D}^{\mathrm{op}}$, so $\mathcal{D}^{\mathrm{op}}$ is well-powered.
Let $g \in \mathcal{D}$ be a generator. Thus the covariant hom-functor
\begin{align*}
\operatorname{Hom}_{\mathcal{D}}(g,-): \mathcal{D} \to \mathbf{Set}
\end{align*}
is faithful. Equivalently, for any two distinct morphisms $f_1,f_2: d \to e$ in $\mathcal{D}$, there exists a morphism $h: g \to d$ such that $f_1 \circ h \neq f_2 \circ h$. Passing to opposite categories, this says that for any two distinct morphisms $f_1^{\mathrm{op}},f_2^{\mathrm{op}}: e \to d$ in $\mathcal{D}^{\mathrm{op}}$, there exists a morphism $h^{\mathrm{op}}: d \to g$ in $\mathcal{D}^{\mathrm{op}}$ such that
\begin{align*}
h^{\mathrm{op}} \circ f_1^{\mathrm{op}} \neq h^{\mathrm{op}} \circ f_2^{\mathrm{op}}.
\end{align*}
Therefore $g$, regarded as an object of $\mathcal{D}^{\mathrm{op}}$, is a cogenerator of $\mathcal{D}^{\mathrm{op}}$.
[guided]
We must check exactly the hypotheses required by the Special Adjoint Functor Theorem on the category $\mathcal{D}^{\mathrm{op}}$.
First, limits in $\mathcal{D}^{\mathrm{op}}$ are the same data as colimits in $\mathcal{D}$ with all arrows reversed. Since $\mathcal{D}$ is cocomplete, every small diagram in $\mathcal{D}$ has a colimit. Hence every small diagram in $\mathcal{D}^{\mathrm{op}}$ has a limit, so $\mathcal{D}^{\mathrm{op}}$ is complete.
Second, well-poweredness of $\mathcal{D}^{\mathrm{op}}$ means that each object has only a set of subobjects up to isomorphism. A subobject in $\mathcal{D}^{\mathrm{op}}$ is, after reversing arrows, exactly a quotient object in $\mathcal{D}$. Since $\mathcal{D}$ is co-well-powered, those quotient objects form a set up to isomorphism. Thus $\mathcal{D}^{\mathrm{op}}$ is well-powered.
Third, a cogenerator in $\mathcal{D}^{\mathrm{op}}$ is exactly a generator in $\mathcal{D}$. Let $g \in \mathcal{D}$ be a generator. By definition, for distinct morphisms $f_1,f_2: d \to e$ in $\mathcal{D}$, there exists $h: g \to d$ such that $f_1 \circ h \neq f_2 \circ h$. In the opposite category, the same statement says that for distinct morphisms $f_1^{\mathrm{op}},f_2^{\mathrm{op}}: e \to d$, there is a morphism $h^{\mathrm{op}}: d \to g$ such that
\begin{align*}
h^{\mathrm{op}} \circ f_1^{\mathrm{op}} \neq h^{\mathrm{op}} \circ f_2^{\mathrm{op}}.
\end{align*}
This is precisely the cogenerator condition in $\mathcal{D}^{\mathrm{op}}$.
[/guided]
[/step]
[step:Translate colimit preservation into limit preservation]
Define the opposite functor
\begin{align*}
F^{\mathrm{op}}: \mathcal{D}^{\mathrm{op}} &\to \mathcal{C}^{\mathrm{op}} \\
d &\mapsto F(d).
\end{align*}
For every small diagram $K: J \to \mathcal{D}^{\mathrm{op}}$, let $K^{\mathrm{op}}: J^{\mathrm{op}} \to \mathcal{D}$ denote the corresponding opposite diagram. A limit of $K$ in $\mathcal{D}^{\mathrm{op}}$ is a colimit of $K^{\mathrm{op}}$ in $\mathcal{D}$. Since $F$ preserves small colimits, $F$ sends that colimit to a colimit of $F \circ K^{\mathrm{op}}$ in $\mathcal{C}$, which is equivalently a limit of $F^{\mathrm{op}} \circ K$ in $\mathcal{C}^{\mathrm{op}}$. Hence $F^{\mathrm{op}}$ preserves all small limits.
[/step]
[step:Identify the dual solution-set condition with the ordinary one in the opposite category]
Fix an object $c \in \mathcal{C}$, regarded also as an object of $\mathcal{C}^{\mathrm{op}}$. The dual solution-set condition means that there is a set-indexed family $(d_i)_{i \in I}$ in $\mathcal{D}$ and morphisms
\begin{align*}
\alpha_i: F(d_i) \to c
\end{align*}
in $\mathcal{C}$ such that every morphism $\alpha: F(d) \to c$ factors as $\alpha = \alpha_i \circ F(u)$ for some $i \in I$ and some $u: d \to d_i$ in $\mathcal{D}$.
In $\mathcal{C}^{\mathrm{op}}$, the morphisms $\alpha_i$ become morphisms
\begin{align*}
\alpha_i^{\mathrm{op}}: c \to F^{\mathrm{op}}(d_i).
\end{align*}
Given any morphism
\begin{align*}
\beta: c \to F^{\mathrm{op}}(d)
\end{align*}
in $\mathcal{C}^{\mathrm{op}}$, its opposite is a morphism $\beta^{\mathrm{op}}: F(d) \to c$ in $\mathcal{C}$. By the dual solution-set condition, there exist $i \in I$ and $u: d \to d_i$ in $\mathcal{D}$ such that
\begin{align*}
\beta^{\mathrm{op}} = \alpha_i \circ F(u).
\end{align*}
Passing to opposite morphisms gives
\begin{align*}
\beta = F^{\mathrm{op}}(u^{\mathrm{op}}) \circ \alpha_i^{\mathrm{op}},
\end{align*}
where $u^{\mathrm{op}}: d_i \to d$ is a morphism in $\mathcal{D}^{\mathrm{op}}$. Thus $F^{\mathrm{op}}$ satisfies the ordinary solution-set condition at $c$.
[guided]
The ordinary solution-set condition for the functor $F^{\mathrm{op}}: \mathcal{D}^{\mathrm{op}} \to \mathcal{C}^{\mathrm{op}}$ asks for a set of arrows from $c$ into objects of the form $F^{\mathrm{op}}(d_i)$ through which every other such arrow factors.
The given dual solution-set condition gives arrows
\begin{align*}
\alpha_i: F(d_i) \to c
\end{align*}
in $\mathcal{C}$. Reversing arrows turns these into arrows
\begin{align*}
\alpha_i^{\mathrm{op}}: c \to F^{\mathrm{op}}(d_i)
\end{align*}
in $\mathcal{C}^{\mathrm{op}}$. Now take any arrow
\begin{align*}
\beta: c \to F^{\mathrm{op}}(d)
\end{align*}
in $\mathcal{C}^{\mathrm{op}}$. Reversing it gives an arrow $\beta^{\mathrm{op}}: F(d) \to c$ in $\mathcal{C}$. The dual solution-set condition applies to this arrow, so there exist an index $i \in I$ and a morphism $u: d \to d_i$ in $\mathcal{D}$ such that
\begin{align*}
\beta^{\mathrm{op}} = \alpha_i \circ F(u).
\end{align*}
Reversing this equality reverses the order of composition. The morphism $u: d \to d_i$ becomes $u^{\mathrm{op}}: d_i \to d$ in $\mathcal{D}^{\mathrm{op}}$, and the equality becomes
\begin{align*}
\beta = F^{\mathrm{op}}(u^{\mathrm{op}}) \circ \alpha_i^{\mathrm{op}}.
\end{align*}
This is exactly the ordinary solution-set factorization required for $F^{\mathrm{op}}$.
[/guided]
[/step]
[step:Apply the Special Adjoint Functor Theorem in the opposite categories]
The category $\mathcal{D}^{\mathrm{op}}$ is complete, well-powered, and has a cogenerator. The functor $F^{\mathrm{op}}: \mathcal{D}^{\mathrm{op}} \to \mathcal{C}^{\mathrm{op}}$ preserves small limits and satisfies the ordinary solution-set condition in the standard form: for each object $c \in \mathcal{C}^{\mathrm{op}}$, there is a set-indexed family of morphisms $c \to F^{\mathrm{op}}(d_i)$ such that every morphism $c \to F^{\mathrm{op}}(d)$ factors as $F^{\mathrm{op}}(v) \circ \alpha_i^{\mathrm{op}}$ for some morphism $v: d_i \to d$ in $\mathcal{D}^{\mathrm{op}}$. This is exactly the hypothesis of the [Special Adjoint Functor Theorem](/theorems/TEMP-40), applied to the complete well-powered category $\mathcal{D}^{\mathrm{op}}$ with cogenerator $g$ and to the limit-preserving functor $F^{\mathrm{op}}$. Hence $F^{\mathrm{op}}$ has a left adjoint.
Thus there exists a functor
\begin{align*}
L: \mathcal{C}^{\mathrm{op}} \to \mathcal{D}^{\mathrm{op}}
\end{align*}
and natural bijections
\begin{align*}
\operatorname{Hom}_{\mathcal{D}^{\mathrm{op}}}(L(c), d)
\cong
\operatorname{Hom}_{\mathcal{C}^{\mathrm{op}}}(c, F^{\mathrm{op}}(d))
\end{align*}
for all objects $c \in \mathcal{C}^{\mathrm{op}}$ and $d \in \mathcal{D}^{\mathrm{op}}$.
[/step]
[step:Reverse the adjunction to obtain a right adjoint to $F$]
Regard $L$ as a functor
\begin{align*}
R: \mathcal{C} \to \mathcal{D}
\end{align*}
by passing to opposite categories. For objects $d \in \mathcal{D}$ and $c \in \mathcal{C}$, the adjunction $L \dashv F^{\mathrm{op}}$ gives
\begin{align*}
\operatorname{Hom}_{\mathcal{D}^{\mathrm{op}}}(L(c), d)
\cong
\operatorname{Hom}_{\mathcal{C}^{\mathrm{op}}}(c, F^{\mathrm{op}}(d)).
\end{align*}
Using the defining equality of hom-sets in opposite categories, this is equivalently
\begin{align*}
\operatorname{Hom}_{\mathcal{D}}(d, R(c))
\cong
\operatorname{Hom}_{\mathcal{C}}(F(d), c).
\end{align*}
This bijection is natural in both $d$ and $c$, because it is obtained from the natural bijection defining $L \dashv F^{\mathrm{op}}$ by reversing arrows. Therefore $F \dashv R$, so $F$ has a right adjoint.
[guided]
The adjunction obtained from the Special Adjoint Functor Theorem is
\begin{align*}
L \dashv F^{\mathrm{op}},
\end{align*}
where $L: \mathcal{C}^{\mathrm{op}} \to \mathcal{D}^{\mathrm{op}}$. This means that for each $c \in \mathcal{C}^{\mathrm{op}}$ and $d \in \mathcal{D}^{\mathrm{op}}$ there is a natural bijection
\begin{align*}
\operatorname{Hom}_{\mathcal{D}^{\mathrm{op}}}(L(c), d)
\cong
\operatorname{Hom}_{\mathcal{C}^{\mathrm{op}}}(c, F^{\mathrm{op}}(d)).
\end{align*}
Now translate each hom-set back to the original categories. A morphism $L(c) \to d$ in $\mathcal{D}^{\mathrm{op}}$ is the same as a morphism $d \to L(c)$ in $\mathcal{D}$. If we write $R(c)$ for the object $L(c)$ viewed in $\mathcal{D}$, then
\begin{align*}
\operatorname{Hom}_{\mathcal{D}^{\mathrm{op}}}(L(c), d)
=
\operatorname{Hom}_{\mathcal{D}}(d, R(c)).
\end{align*}
Similarly, a morphism $c \to F^{\mathrm{op}}(d)$ in $\mathcal{C}^{\mathrm{op}}$ is the same as a morphism $F(d) \to c$ in $\mathcal{C}$, so
\begin{align*}
\operatorname{Hom}_{\mathcal{C}^{\mathrm{op}}}(c, F^{\mathrm{op}}(d))
=
\operatorname{Hom}_{\mathcal{C}}(F(d), c).
\end{align*}
Substituting these two identifications into the adjunction bijection gives
\begin{align*}
\operatorname{Hom}_{\mathcal{D}}(d, R(c))
\cong
\operatorname{Hom}_{\mathcal{C}}(F(d), c).
\end{align*}
This is precisely the definition of an adjunction $F \dashv R$. Hence $R$ is a right adjoint to $F$.
[/guided]
[/step]