Question: Can [forgetful functor](https://en.wikipedia.org/wiki/Forgetful_functor) be defined accurately? I feel the wikipedia article and *Categories for the Working Mathematician* don't define the concept rigorously.

* Is a forgetful functor necessarily unfaithful?
* Is a forgetful functor necessarily not isomorphic?

> 
> An isomorphism $T: C \to B$ of categories is a functor $T$ from $ C $ to $B $
>  which is a bijection, both on objects and on arrows. Alternatively, but 
>  equivalently, a functor $T: C \to B$ is an isomorphism if and only if there 
>  is a functor $S: B\to C$ for which both composites $ST$ and $TS$ are 
>  identity functors; then $S$ is the two-sided inverse $S = T^{-1}$. 
> 
> 
>

Answer: 
As far as I know there is no rigorous definition of a forgetful functor. However often the term "forgetful functor" is used in conjunction with [generalized concrete categories](https://en.wikipedia.org/wiki/Concrete_category#Relative_concreteness) (here by "generalized" I mean that we can use any fixed category $\textbf{X}$ instead of $\textbf{Set}$). In that scenario it is faithful by the definition.

I've never heard about a case when forgetful functor is not faithful. I'm not sure what wiki means by "Forgetful functors are **almost always** faithful." (emphasis mine)

And in this setup forgetful functors can be isomorphisms, e.g. the identity $\textbf{Set}\to\textbf{Set}$.
One simple, rigorous definition of "forgetful functor" has been suggested. A [forgetful functor](https://ncatlab.org/nlab/show/forgetful+functor) is a functor. That is, *every* functor is a "forgetful" functor. The way this is made more meaningful is through the concept of [essential $k$-surjectivity](https://ncatlab.org/nlab/show/k-surjective+functor) and illustrated with the concepts of [stuff, structure, and property](https://ncatlab.org/nlab/show/stuff%2C+structure%2C+property). Basically, every functor short of an equivalence of categories (which is "forgetful" in a degenerate way) can be viewed as "forgetting" something.

As an example, the inclusion of abelian groups into groups, which arguably doesn't forget anything in some colloquial sense (it's at least full and faithful), can be viewed as forgetting the property of being abelian.

To address your question, a functor that is not faithful forgets stuff. An essentially surjective and full functor forgets purely stuff. A faithful functor can forget at most structure, not stuff. This is probably not super-helpful as the distinction between stuff and structure is not super-obvious.