 reserve m,n for Nat;
 reserve i,j for Integer;
 reserve S for non empty multMagma;
 reserve r,r1,r2,s,s1,s2,t for Element of S;
 reserve G for Group-like non empty multMagma;
 reserve e,h for Element of G;
 reserve G for Group;
 reserve f,g,h for Element of G;
 reserve u for UnOp of G;

theorem Th38:
  g * h = h * g implies g |^ i * (h |^ j) = h |^ j * (g |^ i)
proof
  assume
A1: g * h = h * g;
  per cases;
  suppose
    i >= 0 & j >= 0;
    then g |^ i = g |^ |.i.| & h |^ j = h |^ |.j.| by Def8;
    hence thesis by A1,Lm10;
  end;
  suppose
A2: i >= 0 & j < 0;
A3: g|^|.i.| * (h|^|.j.|) = h|^|.j.| * (g|^|.i.|) by A1,Lm10;
    g |^ i = g |^ |.i.| & h |^ j = (h |^ |.j.|)" by A2,Def8;
    hence thesis by A3,Th19;
  end;
  suppose
A4: i < 0 & j >= 0;
A5: g|^|.i.| * (h|^|.j.|) = h|^|.j.| * (g|^|.i.|) by A1,Lm10;
    g |^ i = (g |^ |.i.|)" & h |^ j = h |^ |.j.| by A4,Def8;
    hence thesis by A5,Th19;
  end;
  suppose
    i < 0 & j < 0;
    then
A6: g |^ i = (g |^ |.i.|)" & h |^ j = (h |^ |.j.|)" by Def8;
    hence g |^ i * (h |^ j) = (h |^ |.j.| * (g |^ |.i.|))" by Th16
      .= (g |^ |.i.| * (h |^ |.j.|))" by A1,Lm10
      .= h |^ j * (g |^ i) by A6,Th16;
  end;
end;
