In this example we begin with two groups we wish to show isomorphic: H and G.   We imbed them into a free algebra by writing their relations as generating polynomials for an ideal.  Note we must also include the invertibility relations which always hold in a group.

First you must load in NCGB with the following command

<< NCGB.m

This does not take into account your path to the NC directory.   Therefore, you may have to change this command.

SNC[a, b, Inv[a], Inv[b]]

\(\(GroupHrels = 

      \ \ \ \ {\ \(-1\) + a**Inv[a], 
		\(-1\) + Inv[a]**a, 
\ \ \ \ 
        \(-1\) + Inv[c]**c, 
		\(-1\) + c**Inv[c], 
\ \ \ \ 
        \(-1\) + a**a**a**c**c**c, \(-1\) + c**c**c**a**a**a, 
\ \ \ \ 
        \(-1\) + Inv[a]**c**a**Inv[c]**Inv[c]**Inv[c]**Inv[c], 
\ \ \ \ 
        \(-1\) + Inv[c]**a**c**Inv[a]**Inv[a]**Inv[a]**Inv[a], 
\ \ \ \ 
        \(-1\) + a**a**a**a**a**a**a**a**a, 
\ \ \ \ 
        \(-1\) + c**c**c**c**c**c**c**c**c}
\)\)

\(GroupGrels
       = {
\ \ \ \ \(-1\) + a**Inv[a], 
\ \ \ \ \(-1\) + Inv[a]**a, 

        \ \ \ \ \(-1\) + b**Inv[b], 
\ \ \ \ \(-1\) + Inv[b]**b, 
\ \ \ \ 
        \(-1\) + b**b**b, 
\ \ \ \ Inv[b]**a**b - a**a**a**a, 
\ \ \ \ 
        \(-1\) + a**a**a**a**a**a**a**a**a}\)

SNC[a, b, Inv[a], Inv[b]]

\(ClearMonomialOrderAll[]; 

SetMonomialOrder[{a, b, Inv[a], Inv[b]}]; 
    \)

Next we apply NCProcess to the relations corresponding to the group G.

ans1 = NCProcess[GroupGrels, 2, "reducedG"]

This 3-tuple contains the resulting reduced basis for G as rules and as relations.  Also one can view the postscript file DmGBG2A1.ps for the spreadsheet corresponging to this run.

Next we do the same for H.

ClearMonomialOrderAll[]

SetMonomialOrder[{a, c, Inv[a], Inv[c]}]

ans2 = NCProcess[GroupHrels, 2, "reducedH"]

By looking at the output files DmGBG2A1.ps and DmGBG2A2.ps we notice that the number of nontrivial generating relations for both G and H were reduced to only 2.  G started with 3, and H started with 6, so this is encouraging information.  The simplicity of the relations makes it possible to guess that we should make the substitution c->b**Inv[a]. Upon substitution we want to check  that G and H are isomorphic.  This we do by reducing the relations in H (after the subtitution) with the relations in G, and vice versa.

ans3 = 
      Substitute[Substitute[ans2, Inv[c] -> a**Inv[b]], c -> b**Inv[a]]

SetMonomialOrder[{a, b, Inv[a], Inv[b]}]

NCSimplifyAll[ans1[[3]], ans3[[3]], 4]

NCSimplifyAll[ans3[[3]], ans1[[3]], 4]

This proves that H and G are isomorphic by double containment.