I have some symbol for homomorphisms with a certain property "property" whose code is something like
\newcommand*{\verylongrightarrow}{\relbar\joinrel\relbar\joinrel\relbar\joinrel\rightarrow}
\newcommand{\homprop}{\mathrel{\overset{\textup{property}}{\verylongrightarrow}}}
(The idea is to insert the word "property" above the arrow. Of course "property" is just a dummy word, for the purpose.)
Now I use the symbol \twoheadrightarrow to indicate that a homomorphism is surjective.
If the homomorphism happens to be surjective and have property "property", I'd like to add "property" above the arrow like before.
This is done more or less right, except that, when above \twoheadrightarrow, I get the text a bit higher than with \rightarrow.
A solution that came to my mind was to use a \raisebox.
However, this is even worse, because (I suppose this is the reason) it creates a new box that 'forgets' that it is inside the \overset scope and prints the name of the property in normal size.
Is there a better way of doing this?
(I really don't know if I choose the tags correctly. Please feel free to edit.)


\xrightarrow{\text{property}}and family? You may find one already defined with two heads, or, if not, you could define them yourself. About the different vertical position, I've had problems myself and don't know the answer (this has to do with how TeX core behaves with\halignand other primitives), but you can always use\textor\scriptstylewhen needed to get the right size. – Manuel Sep 25 '16 at 09:57