We test that the composition law of \gdo\ is indeed associative, by defining it general and verifying associativity on random (and hence likely generic) morphisms. First, we define the composition law of
two morphisms. The program first determines $E_i$, $F_i$, and $G_i$ from $Q_i$ ($i=1,2$) by taking partial derivatives, and then outputs the scalar $\omega$ and quadratic $Q$, with equations~\eqref{eq:gdocompositions} converted nearly literally into code (see also \cite[GDOCompositions.nb]{Self}):

\noindent\nbpdfInput{nb2tex_pdfs/GDOCompositions/1.pdf}

Next we implement ``random morphisms'' (\verb"RM") by picking their quadratic parts to have small
random integer coefficients. We also set $M_1$, $M_2$, and $M_3$ to be random morphisms in
$\mor(\{1,2\}\to\{1,2,3\})$, $\mor(\{1,2,3\}\to\{1,2,3\})$, and $\mor(\{1,2,3\}\to\{1,2\})$, respectively:

\noindent\nbpdfInput{nb2tex_pdfs/GDOCompositions/2.pdf}

\noindent\nbpdfOutput{nb2tex_pdfs/GDOCompositions/3.pdf}

Just to get an appreciation of what compositions look like, we compute $(M_1\act M_2)\act M_3$:

\noindent\nbpdfInput{nb2tex_pdfs/GDOCompositions/4.pdf}

\noindent\nbpdfOutput{nb2tex_pdfs/GDOCompositions/5.pdf}

Finally, we verify that composition is associative:

\noindent\nbpdfInput{nb2tex_pdfs/GDOCompositions/6.pdf}

\noindent\nbpdfOutput{nb2tex_pdfs/GDOCompositions/7.pdf}

The last \verb"True" above is an in-practice proof of Theorem~\ref{thm:GDO},~(i).