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?