<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="0"/><View-Properties><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" bullet="none" name="Warning"/><Layout alignment="left" bullet="none" firstindent="0.0" leftmargin="0.0" linebreak="space" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" bullet="none" linespacing="0.5" name="Maple Output"/><Font background="[0,0,0]" family="Monospaced" foreground="[0,0,255]" name="Warning" opaque="false" readonly="true" size="12"/><Font background="[0,0,0]" family="Times New Roman" foreground="[0,0,255]" name="2D Output" opaque="false" readonly="true" size="12"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input" opaque="false" size="12"/></Styles><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"># Maple file for the computations in "A degree theoretic approach to solvability of 
# symmetric word equations in two positive definite letters"</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">with(linalg):</Text-field></Input><Output><Text-field layout="Warning" style="Warning">Warning, the protected names norm and trace have been redefined and unprotected
</Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">kronprod := proc (A, B) 
  options  `Maple Advisor Database 1.01 for Maple 6`,
`Copyright (c) 1998 by Robert B. Israel.  All rights reserved`; 
  local Ap, Bp, i,j;
  if nargs &gt; 2 then RETURN(kronprod(kronprod(A,B),args[3..nargs])) fi;
  if type(A,{vector,list(algebraic)}) and 
     type(B,{vector,list(algebraic)}) then 
# vector x vector = vector
    vector([seq(seq(A[i]*B[j], j=1..linalg[vectdim](B)),
                i=1..linalg[vectdim](A))])
  else # otherwise result is matrix
    if type(A,matrix) then Ap:= A 
    elif type(A,listlist) then Ap:= convert(A,matrix)
    elif type(A,list) then Ap:= matrix(map(t-&gt;[t],A))
    elif type(A,specfunc(list,transpose)) then Ap:= matrix([op(A)])
    else Ap:= convert(A,matrix) 
    fi;
    if type(B,matrix) then Bp:= B 
    elif type(B,listlist) then Bp:= convert(B,matrix)
    elif type(B,list) then Bp:= matrix(map(t-&gt;[t],B))
    elif type(B,specfunc(list,transpose)) then Bp:= matrix([op(B)])
    else Bp:= convert(B,matrix) 
    fi; 
    linalg[stackmatrix](seq(linalg[augment](
       seq(linalg[scalarmul](Bp,Ap[i,j]), j = 1 .. linalg[coldim](Ap))),
       i = 1 .. linalg[rowdim](Ap)));
  fi
end;</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SSlrcm9ucHJvZEc2ImYqNiRJIkFHRiVJIkJHRiU2JkkjQXBHRiVJI0JwR0YlSSJpR0YlSSJqR0YlNiRJSE1hcGxlfkFkdmlzb3J+RGF0YWJhc2V+MS4wMX5mb3J+TWFwbGV+NkdGJUlnbkNvcHlyaWdodH4oYyl+MTk5OH5ieX5Sb2JlcnR+Qi5+SXNyYWVsLn5+QWxsfnJpZ2h0c35yZXNlcnZlZEdGJUYlQyRAJDIiIiM5Iy1JJ1JFVFVSTkdJKnByb3RlY3RlZEdGOTYjLUYkNiQtRiQ2JDkkOSUmOSI2IzsiIiRGNkAlMy1JJXR5cGVHRjk2JEY/PCRJJ3ZlY3Rvckc2JEY5SShfc3lzbGliR0YlLUklbGlzdEdGOTYjSSphbGdlYnJhaWNHRjktRkk2JEZARkstRkw2IzcjLUkkc2VxR0Y5NiQtRlk2JComJkY/NiM4JiIiIiZGQDYjOCdGW28vRl5vO0Zbby0mSSdsaW5hbGdHRk02I0kodmVjdGRpbUdGJTYjRkAvRmpuO0Zbby1GYm82I0Y/QyVAKy1GSTYkRj9JJ21hdHJpeEdGTT44JEY/LUZJNiRGP0kpbGlzdGxpc3RHRiU+RmFwLUkoY29udmVydEdGOUZecC1GSTYkRj9GUD5GYXAtRl9wNiMtSSRtYXBHRjk2JGYqNiNJInRHRiVGJTYkSSlvcGVyYXRvckdGJUkmYXJyb3dHRiVGJTcjRj9GJUYlRiVGPy1GSTYkRj8tSSlzcGVjZnVuY0dGOTYkRlBJKnRyYW5zcG9zZUdGJT5GYXAtRl9wNiM3Iy1JI29wR0Y5RmpvRmVwQCstRkk2JEZARl9wPjglRkAtRkk2JEZARmRwPkZnci1GZ3BGZXItRkk2JEZARlA+RmdyLUZfcDYjLUZecTYkRmBxRkAtRkk2JEZARmlxPkZnci1GX3A2IzcjLUZickZmb0Zqci0mRmNvNiNJLHN0YWNrbWF0cml4R0YlNiMtRlk2JC0mRmNvNiNJKGF1Z21lbnRHRiU2Iy1GWTYkLSZGY282I0kqc2NhbGFybXVsR0YlNiRGZ3ImRmFwNiRGam5GXm8vRl5vO0Zbby0mRmNvNiNJJ2NvbGRpbUdGJTYjRmFwL0ZqbjtGW28tJkZjbzYjSSdyb3dkaW1HRiVGZXVGJUYlRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">isequal := proc (a,b)  # are a and b equal?
  if (a = b) then return(1);  end;
  return(0);
end;</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SShpc2VxdWFsRzYiZio2JEkiYUdGJUkiYkdGJUYlRiVGJUMkQCQvOSQ5JU8iIiJPIiIhRiVGJUYl</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">matrixpower := proc( M, n, p )   # finds the n-by-n matrix power M^p
  local temp, temp2;
  if (p = 1) then return(M);  end;
  if (p = 0) then return(matrix(n,n,(i,j)-&gt;isequal(i,j)));  end;
  if (modp(p,2) = 0) then
	temp := matrixpower(M,n,p/2);
	return(evalm(temp&amp;*temp));
  else
  	temp := M;
	temp2 := matrixpower(M,n,(p-1)/2);
	return(evalm(temp2&amp;*temp2&amp;*temp));
  end;
end;</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SSxtYXRyaXhwb3dlckc2ImYqNiVJIk1HRiVJIm5HRiVJInBHRiU2JEkldGVtcEdGJUkmdGVtcDJHRiVGJUYlQyVAJC85JiIiIk85JEAkL0YxIiIhTy1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0Y8SShfc3lzbGliR0YlNiU5JUY/Zio2JEkiaUdGJUkiakdGJUYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLUkoaXNlcXVhbEdGJTYkRjRGP0YlRiVGJUAlLy1JJW1vZHBHRjw2JEYxIiIjRjdDJD44JC1GJDYlRjRGPywkRjEjRjJGT08tSSZldmFsbUdGJTYjLUkjJipHRiU2JEZSRlJDJT5GUkY0PjglLUYkNiVGNEY/LCZGMUZWIyEiIkZPRjJPLUZZNiMtRmZuNiQtRmZuNiRGW29GW29GUkYlRiVGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">evalword := proc (X,B,W,n,k,start)  # evalautes a word with k products of powers at two n-by-n X and B
  		         # word W = X^p_1 B^q1 X^p2... is given as an integer vector [p_1,q_1,...]
		         # e.g. word XB^2XB^4 is [1,2,1,4]
		         # start designates where in the vector to start multiplying left to right,
local i,j, totalProd;
totalProd := evalm(matrix(n,n,(i,j)-&gt;isequal(i,j)));  # identity matrix
for i from start to k do          # construct product 	
     if (modp(i,2) = 1) then
         totalProd := evalm(totalProd&amp;*matrixpower(X,n,W[i]));
     else 
         totalProd := evalm(totalProd&amp;*matrixpower(B,n,W[i]));
     end;
od;
return evalm(totalProd);
end; </Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SSlldmFsd29yZEc2ImYqNihJIlhHRiVJIkJHRiVJIldHRiVJIm5HRiVJImtHRiVJJnN0YXJ0R0YlNiVJImlHRiVJImpHRiVJKnRvdGFsUHJvZEdGJUYlRiVDJT44Ji1JJmV2YWxtR0YlNiMtSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGO0koX3N5c2xpYkdGJTYlOSdGPmYqNiRGL0YwRiU2JEkpb3BlcmF0b3JHRiVJJmFycm93R0YlRiUtSShpc2VxdWFsR0YlNiQ5JDklRiVGJUYlPyg4JDkpIiIiOShJJXRydWVHRjtAJS8tSSVtb2RwR0Y7NiRGSiIiI0ZMPkY0LUY2NiMtSSMmKkdGJTYkRjQtSSxtYXRyaXhwb3dlckdGJTYlRkdGPiY5JjYjRko+RjQtRjY2Iy1GWTYkRjQtRmZuNiVGSEY+RmhuTy1GNjYjRjRGJUYlRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">wordjacobian := proc (X,B,W,n,k)   # finds jacobian of word W with k products of powers evaluated at n-by-n X and B
			    # word W = X^p_1 B^q1 X^p2... is given as an integer vector [p_1,q_1,...]
		              # e.g. word XB^2XB^4X is [1,2,1,4,1]	
local i,j, subword, totalSum, leftSubword, leftProd, rightSubword, rightProd;
totalSum := matrix(n^2,n^2,0);  
for i from 1 to k do    # construct tensor product sum
   if (modp(i,2) = 1) then
     for j from 0 to W[i]-1 do
         leftSubword := W;     # form left subword vector
         leftSubword[i] := j;	    
         leftProd := evalword(X,B,leftSubword,n,i,1);
         rightSubword := W;     # form right subword vector
         rightSubword[i] := W[i]-j-1;
         if ( W[i]-j-1 = 0 ) then
             rightProd := transpose(evalword(X,B,W,n,k,i+1));	       
         else
             rightProd := transpose(evalword(X,B,rightSubword,n,k,i));          
         end;              
         totalSum := evalm(totalSum) + evalm(kronprod(rightProd,leftProd));
     od;
   end;
od;
return(evalm(totalSum));
end; </Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SS13b3JkamFjb2JpYW5HNiJmKjYnSSJYR0YlSSJCR0YlSSJXR0YlSSJuR0YlSSJrR0YlNipJImlHRiVJImpHRiVJKHN1YndvcmRHRiVJKXRvdGFsU3VtR0YlSSxsZWZ0U3Vid29yZEdGJUkpbGVmdFByb2RHRiVJLXJpZ2h0U3Vid29yZEdGJUkqcmlnaHRQcm9kR0YlRiVGJUMlPjgnLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRjxJKF9zeXNsaWJHRiU2JSokOSciIiNGPyIiIT8oOCQiIiJGRTkoSSV0cnVlR0Y8QCQvLUklbW9kcEdGPDYkRkRGQUZFPyg4JUZCRkUsJiY5JjYjRkRGRSEiIkZFRkdDKT44KEZRPiZGVkZSRk4+OCktSSlldmFsd29yZEdGJTYoOSQ5JUZWRkBGREZFPjgqRlE+JkZbb0ZSLChGUEZFRk5GU0ZTRkVAJS9GXm9GQj44Ky1JKnRyYW5zcG9zZUdGJTYjLUZmbjYoRmhuRmluRlFGQEZGLCZGREZFRkVGRT5GYm8tRmRvNiMtRmZuNihGaG5GaW5GW29GQEZGRkQ+RjgsJi1JJmV2YWxtR0YlNiNGOEZFLUZhcDYjLUkpa3JvbnByb2RHRiU2JEZib0ZaRkVPRmBwRiVGJUYl</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">constructM := proc(n)   # Finds the matrix M
  local i,j,l,k,m, M,N,alpha,beta;
  m := n*(n+1)/2;
  M := matrix(m,n*n,0);  N := matrix(m*n*n,m*n*n,0);  
  for i from 1 to n do
    for j from 1 to n do
       for l from 1 to n do
          for k from l to n do
             alpha := n*(j-1)+i;
             beta := (2*n-l)*(l-1)/2+k;
             if (i = k and j = l) then M[beta,alpha] := 1;  end;                              
          od;
        od;
     od;
   od;
   return M;
   end;</Text-field></Input><Input><Text-field prompt="&gt; " style="Maple Input"/></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SStjb25zdHJ1Y3RNRzYiZio2I0kibkdGJTYrSSJpR0YlSSJqR0YlSSJsR0YlSSJrR0YlSSJtR0YlSSJNR0YlSSJOR0YlSSZhbHBoYUdGJUklYmV0YUdGJUYlRiVDJz44KCwkKiY5JCIiIiwmRjhGOUY5RjlGOSNGOSIiIz44KS1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0ZCSShfc3lzbGliR0YlNiVGNSomRjhGOUY4RjkiIiE+OCotRkA2JSooRjVGOUY4RjlGOEY5RktGRj8oOCRGOUY5RjhJJXRydWVHRkI/KDglRjlGOUY4Rk4/KDgmRjlGOUY4Rk4/KDgnRlJGOUY4Rk5DJT44KywmKiZGOEY5LCZGUEY5ISIiRjlGOUY5Rk1GOT44LCwmKiYsJkY4RjxGUkZlbkY5LCZGUkY5RmVuRjlGOUY7RlRGOUAkMy9GTUZUL0ZQRlI+JkY+NiRGZ25GV0Y5T0Y+RiVGJUYl</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">constructN := proc(n)   # Finds the matrix N
  local i,j,l,k,m, N,alpha,beta;
  m := n*(n+1)/2;
  N := matrix(n*n,m,0);  
  for i from 1 to n do
    for j from 1 to n do
       for l from 1 to n do
          for k from l to n do
             alpha := n*(j-1)+i;
             beta := (2*n-l)*(l-1)/2+k;
             if ((i = k and j = l) or (i = l and j = k))  then N[alpha,beta] := 1;  end;                              
          od;
        od;
     od;
   od;
   return N;
   end;</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SStjb25zdHJ1Y3RORzYiZio2I0kibkdGJTYqSSJpR0YlSSJqR0YlSSJsR0YlSSJrR0YlSSJtR0YlSSJOR0YlSSZhbHBoYUdGJUklYmV0YUdGJUYlRiVDJj44KCwkKiY5JCIiIiwmRjdGOEY4RjhGOCNGOCIiIz44KS1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0ZBSShfc3lzbGliR0YlNiUqJkY3RjhGN0Y4RjQiIiE/KDgkRjhGOEY3SSV0cnVlR0ZBPyg4JUY4RjhGN0ZIPyg4JkY4RjhGN0ZIPyg4J0ZMRjhGN0ZIQyU+OCosJiomRjdGOCwmRkpGOCEiIkY4RjhGOEZHRjg+OCssJiomLCZGN0Y7RkxGVUY4LCZGTEY4RlVGOEY4RjpGTkY4QCQ1My9GR0ZOL0ZKRkwzL0ZHRkwvRkpGTj4mRj02JEZRRldGOE9GPUYlRiVGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">B := diag(a,b);</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SSJCRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzckNyRJImFHRiUiIiE3JEYvSSJiR0Yl</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">X := matrix(2,2,[x,z,z,(1+z^2)/x]);</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiM+SSJYRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzckNyRJInhHRiVJInpHRiU3JEYvKiYsJiIiIkYzKiRGLyIiI0YzRjNGLiEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">bigjacobian := wordjacobian(B,X,[1,1,2,3,2,1,1],2,7):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">smalljacobian := evalm(constructM(2)&amp;*bigjacobian&amp;*constructN(2)):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">factor(det(%));</Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation>NiMsJCoqSSJhRzYiIiImSSJiR0YmRidJInhHRiYhIiYsYnEqJkYlRidGKSIjNSIiJComRihGJ0kiekdGJkYtRi4qJkYoRidGMCIiKSIjOiomRihGJ0YwIiIlIiNJKiZGKEYnRjAiIidGNiomRihGJ0YwIiIjRjMqKEYlRjVGKCIiIkYpRjJGLioqRiVGOkYoRi5GKUY1RjBGNSIjQSoqRiVGOkYoRi5GKUY1RjBGOCIjNyoqRiVGOkYoRi5GKUY6RjBGOkYzKipGJUY6RihGLkYpRjpGMEY1IiNGKipGJUY6RihGLkYpRjpGMEY4IiNAKipGJUY6RihGLkYpRjpGMEYyRjgqKkYlRjxGKEY1RilGOEYwRjpGJyokRihGJ0YuKihGJUYnRilGMkYwRjpGOCooRiVGJ0YpRjhGMEY6Ri4qKEYlRidGKUY4RjBGNUYuKihGJUY6RihGLkYpRjpGLiooRiVGPEYoRjVGKUY6Ri4qKEYoRidGKUY1RjBGNUY4KihGKEYnRilGOkYwRjgiIz0qKEYoRidGMEY6RilGNUYuKihGKEYnRjBGOkYpRjpGOCooRihGJ0YwRjVGKUY6RlAqKEYoRidGMEY4RilGNUYuKihGKEYnRjBGMkYpRjpGOCooRiVGLkYoRjpGKUYyRi4qKkYlRjxGKEY1RilGNUYwRjpGMioqRiVGLkYpRjJGMEY6RihGOkY4KipGJUYuRilGOEYwRjpGKEY6Ri0qKkYlRi5GKUY4RjBGNUYoRjpGQCoqRiVGLkYpRjVGMEY6RihGOiIiKCoqRiVGLkYpRjVGMEY1RihGOiIjOCoqRiVGLkYpRjVGMEY4RihGOkY4KipGJUY8RilGOEYwRjVGKEY1Ri4qKkYlRjxGKUY1RjBGNUYoRjUiIzkqKkYlRjxGKUY1RjBGOEYoRjVGOCoqRiVGPEYpRjpGMEY6RihGNUZAKipGJUY8RilGOkYwRjVGKEY1RlAqKkYlRjxGKUY6RjBGOEYoRjVGQCoqRiVGPEYpRjpGMEYyRihGNUYuKipGJUY1RihGPEYpRjJGMEY6Ri4qKkYlRjVGKEY8RilGOEYwRjpGMioqRiVGNUYoRjxGKUY4RjBGNUY4KipGJUY1RihGPEYpRjVGMEY6RicqKkYlRjVGKEY8RilGNUYwRjVGMioqRiVGNUYoRjxGKUY1RjBGOEYuKipGJUY6RihGLkYpRjhGMEY6RmZuKipGJUY6RihGLkYpRjhGMEY1RjgqKkYlRjpGKEYuRilGNUYwRjpGLUY8RkA=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"># all postive coefficients</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field/></Worksheet>