 reserve G for Group;
 reserve H for Subgroup of G;
 reserve a, b, c, x, y for Element of G;
 reserve h for Homomorphism of G, G;
 reserve q, q1 for set;

theorem Th12:
  for f being Element of InnAut G holds f is Element of Aut G
proof
  let f be Element of InnAut G;
A1: f is Element of Funcs (the carrier of G, the carrier of G) by FUNCT_2:9;
  now
    let x,y;
    consider a such that
A2: for x holds f.x = x |^ a by A1,Def4;
    thus f.(x * y) = (x * y) |^ a by A2
      .= a" * x * y * a by GROUP_1:def 3
      .= (a" * x) * (y * a) by GROUP_1:def 3
      .= (a" * x) * 1_G * (y * a) by GROUP_1:def 4
      .= a" * x * (a * a") * (y * a) by GROUP_1:def 5
      .= a" * x * a * a" * (y * a) by GROUP_1:def 3
      .= (a" * x * a) * a" * y * a by GROUP_1:def 3
      .= (a" * x * a) * (a" * y) * a by GROUP_1:def 3
      .= (x |^ a) * (y |^ a) by GROUP_1:def 3
      .= f.x * (y |^ a) by A2
      .= f.x * f.y by A2;
  end;
  then reconsider f as Homomorphism of G, G by GROUP_6:def 6;
A3: f is one-to-one
  proof
    let q,q1 be object;
    assume that
A4: q in dom f & q1 in dom f and
A5: f.q = f.q1;
    consider x, y such that
A6: x = q & y = q1 by A4;
    consider a such that
A7: for x holds f.x = x |^ a by A1,Def4;
    f.x = y |^ a by A7,A5,A6;
    then x |^ a = y |^ a by A7;
    then a * (a" * (x * a)) = a * (a" * y * a) by GROUP_1:def 3;
    then (a * a") * (x * a) = a * (a" * y * a) by GROUP_1:def 3;
    then (a * a") * (x * a) = a * (a" * (y * a)) by GROUP_1:def 3;
    then (a * a") * (x * a) = (a * a") * (y * a) by GROUP_1:def 3;
    then 1_G * (x * a) = (a * a") * (y * a) by GROUP_1:def 5;
    then 1_G * (x * a) = 1_G * (y * a) by GROUP_1:def 5;
    then x * a = 1_G * (y * a) by GROUP_1:def 4;
    then x * a * a" = y * a * a" by GROUP_1:def 4;
    then x * (a * a") = y * a * a" by GROUP_1:def 3;
    then x * (a * a") = y * (a * a") by GROUP_1:def 3;
    then x * 1_G = y * (a * a") by GROUP_1:def 5;
    then x * 1_G = y * 1_G by GROUP_1:def 5;
    then x = y * 1_G by GROUP_1:def 4;
    hence thesis by A6,GROUP_1:def 4;
  end;
  for q being object st q in the carrier of G
    ex q1 being object st q1 in dom f & q=f.q1
  proof
    let q be object;
    assume q in the carrier of G;
    then consider y such that
A8: y = q;
    consider a such that
A9: for x holds f.x = x |^ a by A1,Def4;
    take q1 = a * y * a";
    ex f1 being Function st f = f1 & dom f1 = the carrier of G & rng f1
    c= the carrier of G by A1,FUNCT_2:def 2;
    hence q1 in dom f;
    y = 1_G * y by GROUP_1:def 4
      .= 1_G * y * 1_G by GROUP_1:def 4
      .= a" * a * y * 1_G by GROUP_1:def 5
      .= a" * a * y * (a" * a) by GROUP_1:def 5
      .= (a" * a * y) * a" * a by GROUP_1:def 3
      .= (a" * a * (y * a")) * a by GROUP_1:def 3
      .= a" * (a * (y * a")) * a by GROUP_1:def 3
      .= q1 |^ a by GROUP_1:def 3
      .= f.q1 by A9;
    hence thesis by A8;
  end;
  then the carrier of G c= rng f by FUNCT_1:9;
  then rng f = the carrier of G by XBOOLE_0:def 10;
  then f is onto;
  hence thesis by A3,Def1;
end;
