In order to define a free product with amalgamation $A \ast_C B$ you need to define $A,B,C$ and embeddings of $C$ into $A$ and $B$. Alternatively, instead of $C$ you can use a homomorphism $phi: A \rightarrow B$ and its inverse. A third option is to pick subgroups $D \subset A$ and $E \subset B$ and give an isomorphism between them.
All three of these options require you to define some groups and some morphisms. You can define a group nicely by giving a presentation but defining maps usually takes a few lines. So, I’d like a quicker way of describing the kinds of maps we need here.
Let’s take the third option. If we have generating sets so that $D = \langle X \rangle$ and $E = \langle Y \rangle$, then if we can write each of the elements of $X$ as words in $Y^*$ then that defines the required isomorphism completely. After you’ve done that, the generating set $Y$ might as well just be those words.
So how about this as a presentation for an FPA?
\[ \langle a_1, a_2, \dots | R_A \rangle [ x_1 = y_1, x_2 = y_2, \dots ] \langle b_1, b_2, \dots | R_B \rangle \]
The bits in angle brackets are presentations of $A$ and $B$. The $x_i$ are words from $A$ and generate $D$, and the $y_i$ are words from $B$ and generate $E$.
Because this is all on one line and delimited adequately, you can chain things together and use brackets and all that, like this contrived example:
\[ \left ( \langle a,b \rangle [ b = c ] \langle c,d | cd = dc \rangle \right ) [ a=e ] \langle e,f \rangle \]
For HNN extensions, you just need to say what the original group is, what the extending letter is, and what the identified subgroups are. So how about something like:
\[ \langle g_1, g_2, \dots | R_G \rangle [ t | x_1 = y_1, x_2 = y_2, \dots ] \]
Apart from the different kinds of brackets being hard to distinguish visually, what have I missed?