Concrete category

In mathematics, a concrete category is a category that is equipped with a faithful functor to the category of sets (or sometimes to another category, "see Relative concreteness below"). This functor makes it possible to think of the objects of the category as sets with additional structure, and of its morphisms as structure-preserving functions. Many important categories have obvious interpretations as concrete categories, for example the category of topological spaces and the category of groups, and trivially also the category of sets itself. On the other hand, the homotopy category of topological spaces is not concretizable, i.e. it does not admit a faithful functor to the category of sets.
A concrete category, when defined without reference to the notion of a category, consists of a class of "objects", each equipped with an "underlying set"; and for any two objects "A" and "B" a set of functions, called "morphisms", from the underlying set of "A" to the underlying set of "B". Furthermore, for every object "A", the identity function on the underlying set of "A" must be a morphism from "A" to "A", and the composition of a morphism from "A" to "B" followed by a morphism from "B" to "C" must be a morphism from "A" to "C".
Definition.
A concrete category is a pair ("C","U") such that
The functor "U" is to be thought of as a forgetful functor, which assigns to every object of "C" its "underlying set", and to every morphism in "C" its "underlying function".
A category "C" is concretizable if there exists a concrete category ("C","U");
i.e., if there exists a faithful functor "U": "C" → Set. All small categories are concretizable: define "U" so that its object part maps each object "b" of "C" to the set of all morphisms of "C" whose codomain is "b" (i.e. all morphisms of the form "f": "a" → "b" for any object "a" of "C"), and its morphism part maps each morphism "g": "b" → "c" of "C" to the function "U"("g"): "U"("b") → "U"("c") which maps each member "f": "a" → "b" of "U"("b") to the composition "gf": "a" → "c", a member of "U"("c"). (Item 6 under Further examples expresses the same "U" in less elementary language via presheaves.) The Counter-examples section exhibits two large categories that are not concretizable.
Remarks.
It is important to note that, contrary to intuition, concreteness is not a property which a category may or may not satisfy, but rather a structure with which a category may or may not be equipped. In particular, a category "C" may admit several faithful functors into Set. Hence there may be several concrete categories ("C", "U") all corresponding to the same category "C".
In practice, however, the choice of faithful functor is often clear and in this case we simply speak of the "concrete category "C"". For example, "the concrete category Set" means the pair (Set, "I") where "I" denotes the identity functor Set → Set.
The requirement that "U" be faithful means that it maps different morphisms between the same objects to different functions. However, "U" may map different objects to the same set and, if this occurs, it will also map different morphisms to the same function.
For example, if "S" and "T" are two different topologies on the same set "X", then 
("X", "S") and ("X", "T") are distinct objects in the category Top of topological spaces and continuous maps, but mapped to the same set "X" by the forgetful functor Top → Set. Moreover, the identity morphism ("X", "S") → ("X", "S") and the identity morphism ("X", "T") → ("X", "T") are considered distinct morphisms in Top, but they have the same underlying function, namely the identity function on "X".
Similarly, any set with four elements can be given two non-isomorphic group structures: one isomorphic to formula_1, and the other isomorphic to formula_2.
Counter-examples.
The category hTop, where the objects are topological spaces and the morphisms are homotopy classes of continuous functions, is an example of a category that is not concretizable. 
While the objects are sets (with additional structure), the morphisms are not actual functions between them, but rather classes of functions. 
The fact that there does not exist "any" faithful functor from hTop to Set was first proven by Peter Freyd.
In the same article, Freyd cites an earlier result that the category of "small categories and natural equivalence-classes of functors" also fails to be concretizable.
Implicit structure of concrete categories.
Given a concrete category ("C", "U") and a cardinal number "N", let "UN" be the functor "C" → Set determined by "UN(c) = (U(c))N".
Then a subfunctor of "UN" is called an "N-ary predicate" and a 
natural transformation "UN" → "U" an "N-ary operation".
The class of all "N"-ary predicates and "N"-ary operations of a concrete category ("C","U"), with "N" ranging over the class of all cardinal numbers, forms a large signature. The category of models for this signature then contains a full subcategory which is equivalent to "C".
Relative concreteness.
In some parts of category theory, most notably topos theory, it is common to replace the category Set with a different category "X", often called a "base category". 
For this reason, it makes sense to call a pair ("C", "U") where "C" is a category and "U" a faithful functor "C" → "X" a concrete category over "X".
For example, it may be useful to think of the models of a theory with "N" sorts as forming a concrete category over Set"N".
In this context, a concrete category over Set is sometimes called a "construct".