I am having a hard time showing that two functors are adjoint. Consider as an example \begin{align} t&: \mathbf{Ab} \longrightarrow \mathbf{T},\\ i&: \mathbf{T} \longrightarrow \mathbf{AB}. \end{align} Where $\mathbf{T}$ denotes the full subcategory of $\mathbf{Ab}$ consisting of all torsion abelian groups. $t$ takes any abelian group, $A$ to its largest torsion subgroup, $t(A)$, and any morphism to its restriction on $t(A)$. I have already shown that this is a well defined functor. $i$ denotes the inclusion of $\mathbf{T}$ into $\mathbf{Ab}$.
Now I want to show that $t$ is right adjoint to $i$. From the definition I know this would mean to construct a natural isomorphism $$\mathrm{Hom}_\mathbf{Ab}(i(M), N) \xrightarrow{\cong} \mathrm{Hom}_\mathbf{T}(M, t(N)).$$ For $M$ a torsion abelian group and $N$ an abelian group.
Since $\mathbf{T}$ is full in $\mathbf{Ab}$ we have $\mathrm{Hom}_\mathbf{T}(M, t(N)) = \mathrm{Hom}_\mathbf{Ab}(M, t(N))$. Moreover $i(M) = M$ in $\mathbf{Ab}$. Hence I must construct a natural isomorphism $$\mathrm{Hom}_\mathbf{Ab}(M, N) \xrightarrow{\cong} \mathrm{Hom}_\mathbf{Ab}(M, t(N)).$$
I have shown that any map from $M \rightarrow N$ must factor through $M \rightarrow t(N)$, i.e., there is an isomorphism from $\mathrm{Hom}_\mathbf{Ab}(M, N)$ to $\mathrm{Hom}_\mathbf{Ab}(M, t(N))$ by composition with the inclusion $t(N) \hookrightarrow N$. Then for a morphism $f: A \rightarrow M$ the below square commutes:
$$ \begin{array}{ccc} \mathrm{Hom}_\mathbf{Ab}(M, t(N))& \longrightarrow & \mathrm{Hom}_\mathbf{Ab}(M, N)\\ \downarrow& & \downarrow \\ \mathrm{Hom}_\mathbf{Ab}(A, t(N))& \longrightarrow & \mathrm{Hom}_\mathbf{Ab}(A, N)\\ \end{array} $$
That is composing with the inclusion of $t(N)$ into $N$ yields a natural isomorphism at least in the first argument by my understanding. How should I go about proving naturality in the last argument? Also I do think I am struggling with bifunctors in general, so If someone have an intuitive way to think about them, please let me know. Thanks :)
More generally, let $\mathcal{D}$ be a full subcategory of $\mathcal{C}$ with the property that it is coreflective: for every $X \in \mathcal{C}$ there shall be some $T(X) \in \mathcal{D}$ with a morphism $\iota_X : T(X) \to X$, such that for every morphism $Y \to X$, where $Y \in \mathcal{D}$ there is a unique morphism $Y \to T(X)$ such that the evident triangle commutes (universal property). Think of this situation as a (vast) generalization of the torsion subgroup example.
The universal property exactly states $$\alpha_{Y,X} : \hom_{\mathcal{D}}(Y,T(X)) \to \hom_{\mathcal{C}}(Y,X),\quad f \mapsto \iota_X \circ f$$ is an isomorphism (bijection) for all $X \in \mathcal{C}$ and $Y \in \mathcal{D}$.
If $g : X \to X'$ is a morphism in $\mathcal{C}$, we define $T(g) : T(X) \to T(X')$, using the universal property, by the equation $\iota_{X'} \circ T(g) = g \circ \iota_X$. Then it follows easily that $T$ is indeed a functor.
Let us check that $\alpha$ is natural in $X$, i.e. that for all $g : X \to X'$ the diagram $$\require{AMScd} \begin{CD} \hom_{\mathcal{D}}(Y,T(X)) @>{\alpha_{Y,X}}>> \hom_{\mathcal{C}}(Y,X) \\ @V{T(g)_*} VV @VV{g_*}V \\ \hom_{\mathcal{D}}(Y,T(X'))@>>{\alpha_{Y,X'}}> \hom_{\mathcal{C}}(Y,X') \end{CD} $$ commutes. This is really just a matter of using the definitions. For $f : Y \to T(X)$ we compute $$\begin{align*} g_*(\alpha_{Y,X}(f)) & = g \circ \iota_X \circ f \\ &= \iota_{X'} \circ T(g) \circ f \\ &= \iota_{X'} \circ T(g)_*(f) \\ & = \alpha_{Y,X'}(T(g)_*(f)) \end{align*}$$
And to check naturality in $Y$ (which is even more easy), let us take any morphism $h : Y' \to Y$ and verify that $$\require{AMScd} \begin{CD} \hom_{\mathcal{D}}(Y,T(X)) @>{\alpha_{Y,X}}>> \hom_{\mathcal{C}}(Y,X) \\ @V{h^*} VV @VV{h^*}V \\ \hom_{\mathcal{D}}(Y',T(X))@>>{\alpha_{Y',X}}> \hom_{\mathcal{C}}(Y',X) \end{CD} $$
commutes. Well, for $f : Y \to T(X)$ we compute $$h^*(\alpha_{Y,X}(f)) = (\iota_X \circ f) \circ h = \iota_X \circ (f \circ h) = \alpha_{Y',X}(h^*(f)).$$
This proves that the functor $T : \mathcal{C} \to \mathcal{D}$ is right adjoint to the inclusion functor $\mathcal{D} \hookrightarrow \mathcal{C}$.
The same proof gives a more general criterion that detects all adjunctions: Let $F : \mathcal{D} \to \mathcal{C}$ be any functor. Assume that for all $X \in \mathcal{C}$ there is some $G(X) \in \mathcal{D}$ equipped with a universal morphism $\varepsilon_X : F(G(X)) \to X$. The universal property says more precisely that for every morphism $F(Y) \to X$ there is a unique morphism $Y \to G(X)$ such that the evident triangle commutes. Then
By duality, there is a corresponding criterion for a left adjoint.
This criterion is very useful, because you will never need to verify naturality again when checking for an adjunction. I recommend this type of reasoning because you will spend less time with computations which are actually part of a more general phenomenon - and that is the whole purpose of category theory.