Hopfian object
In the branch of mathematics called category theory, a hopfian object is an object "A" such that any epimorphism of "A" onto "A" is necessarily an automorphism. The dual notion is that of a cohopfian object, which is an object "B" such that every monomorphism from "B" into "B" is necessarily an automorphism. The two conditions have been studied in the categories of groups, rings, modules, and topological spaces. The terms "hopfian" and "cohopfian" have arisen since the 1960s, and are said to be in honor of Heinz Hopf and his use of the concept of the hopfian  group in his work on fundamental groups of surfaces. Properties. Both conditions may be viewed as types of finiteness conditions in their category. For example, assuming Zermelo–Fraenkel set theory with the axiom of choice and working in the category of sets, the hopfian and cohopfian objects are precisely the finite sets. From this it is easy to see that all finite groups, finite modules and finite rings are hopfian and cohopfian in their categories. Hopfian objects and cohopfian objects have an elementary interaction with projective objects and injective objects. The two results are: The proof for the first statement  is short: Let "A" be an injective hopfian object, and let "f" be an injective morphism from "A" to "A". By injectivity, "f" factors through the identity map "I" on "A", yielding a morphism "g" such that "gf"="I". As a result, "g" is a surjective morphism and hence an automorphism, and then "f" is necessarily the inverse automorphism to "g". This proof can be dualized to prove the second statement. Hopfian and cohopfian modules. Here are several basic results in the category of modules. It is especially important to remember that "R" being hopfian or cohopfian as a module is  different from "R" being hopfian or cohopfian as a ring. Hopfian and cohopfian rings. The situation in the category of rings is quite different from the category of modules. The morphisms in the category of rings with unity are required to preserve the identity, that is, to send 1 to 1.