A category is given by two pieces of data: a class of objects and, for any two objects X and Y, a set of morphisms from X to Y. Morphisms are often depicted as arrows between those objects. In the case of a concrete category, X and Y are sets of some kind and a morphism f is a function from X to Y satisfying some condition; this example supplies the notation f: X -> Y. But not every category is concrete, so these aren't the only types of morphisms.

Suppose that whenever g: Y -> Z and h: Y -> Z and g o f = h o f, it always turns out that g = h. Then f is an epimorphism. Every retraction must be an epimorphism.

Suppose that whenever g: W -> X and h: W -> X and f o g = f o h, it always turns out that g = h. Then f is a monomorphism. Every section must be a monomorphism.

If f is both an epimorphism and a monomorphism, then f is a bimorphism[?]. Note that not every bimorphism is an isomorphism! However, any morphism that is both an epimorphism and a section, or both a monomorphism and a retraction, must be an isomorphism.