Augment the definitions of surjection and homomorphism.
However, before we do so, we must clearly state: a surjection operates on a set, and maps elements of said set, to elements of another set. It is a relation between sets. A homomorphism too is a relation on sets. However those sets are part of binary structures with associated binary operations. We can call those special sets bicombinable sets.
A SUR-jection is an "onto" mapping.
The SUR-jection or SUR-jective function maps elements of a set "onto" the entirety/totality of elements in a set B (every B is included). The elements of the set B are "fully recruited"/"fully engaged"/"fully employed" in the action of the surjection on set A. A SUR-jection is thus also an "enveloping function", in its action of "enveloping" all elements of the target set/codomain.
Other names for a SUR-jection include "all you can eat" function, or "codomain covering function".
A homomorphism is a function that maps a "binary combo" (or "bicombo") of elements in the "domain", to the "binary combo" ("bimcombo") of the mapped or modified ("homomorphism-applied") elements in the range ("homomorphed elements").
A homomorphism acts on binary structures, not necessarily groups.
If this homomorphism captures the entirety of the range-set, it is surjective.
A little bit of thought will assure the PyCryptonista that surjectivity in homomorphisms is quite a desirable property.
And so begins the tale of what to call a surjective homomorphism. Remember a homomorphism is just a function with a special property which only makes sense on bi-combinable sets.
In a way the homomorphism function is just a tool to express a relation between the binary operators in two bi-combinable sets.