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: 
The notion forgetful functor is not precisely defined and there are various discussions on what should be considered a forgetful functor (forgetting structure vs. forgetting properties). When used the term is used colloquially and should simply point out that the functor is the result of the human ability to forget things. It immediately describes what the functor does (e.g., the forgetful functor from $Ab$ to $Grp$ forgets that the group you have is abelian (forgetting a property) while the forgetful functor from $Ab$ to $Set$ forgets that you have a group and just remembers the set of elements (forgetting structure)). 

Now, since what matters in a category are the morphisms and not the objects, saying 'forgetful functor' may be a bit subtle. For instance, there is a forgetful functor from the category of frames to the category of complete semi lattices even though the objects are identical. What is being forgotten here is the fact that morphisms of frames respect arbitrary joins as well as finite meets while morphisms of complete semi lattices preserve arbitrary joins (and may or may not preserve finite meets). The two categories, while having the same objects, are vastly different. 

Another example is the category of frames and of locales. This time there is no forgetful functor even though, again, the categories have the same objects. The category of locales is the opposite of the category of frames, so it is very difficult to forget things when you are inverting the direction of arrows. 

To conclude, 'forgetful' is not precisely defined. A forgetful functor is very often assumed faithful, but you can concoct a situation where you forget stuff and somehow loose faithfulness. Since forgetting is in the eye of the beholder, or the mind of the observer, (nearly) everything is possible.
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.