 reserve G, A for Group;
 reserve phi for Homomorphism of A,AutGroup(G);
 reserve G, A for Group;
 reserve phi for Homomorphism of A,AutGroup(G);

theorem :: TH65
  for G being Group
  for N being strict normal Subgroup of G
  for H being Subgroup of G
  st H,N are_complements_in G
  for alpha being Homomorphism of H,AutGroup N
  st (for h,n being Element of G st h in H & n in N
      for a being Homomorphism of N,N st a = alpha.h
      holds a.n = n |^ (h"))
  ex beta being Homomorphism of semidirect_product(N,H,alpha), G
  st (for gh,gn being Element of G
      for h being Element of H
      for n being Element of N st gh = h & gn = n
      holds beta.(<*n,h*>) = gn*gh)
   & beta is bijective
proof
  let G be Group;
  let N be strict normal Subgroup of G;
  let H be Subgroup of G;
  assume A1: H,N are_complements_in G;
  let alpha be Homomorphism of H,AutGroup N;
  assume A2: for h,n being Element of G st h in H & n in N
  for a being Homomorphism of N,N st a=alpha.h
  holds a.n = n |^ (h");
  set S = semidirect_product(N,H,alpha);
  consider beta being Function of S, G such that
  A3: (for n,h being Element of G st n in N & h in H
       holds beta.(<*n,h*>) = n*h)
  & (beta is one-to-one iff N /\ H = (1).G) by Th60;

  for x,y being Element of S
  holds beta.(x * y) = (beta.x) * (beta.y)
  proof
    let x,y be Element of S;
    consider n1 being Element of N, a1 being Element of H such that
    B1: x = <*n1,a1*> by Th12;
    reconsider ga1=a1,gn1=n1 as Element of G by GROUP_2:42;
    consider n2 being Element of N, a2 being Element of H such that
    B2: y = <*n2,a2*> by Th12;
    reconsider ga2=a2,gn2=n2 as Element of G by GROUP_2:42;
    B6: ga1 in H & gn1 in N & ga2 in H & gn2 in N;
    alpha.ga1 in AutGroup N by FUNCT_2:5;
    then reconsider alphaga1=alpha.ga1 as Homomorphism of N,N
      by AUTGROUP:def 1;
    B7: gn2 |^ (ga1") = (((ga1")")*gn2) * (ga1") by GROUP_3:def 2
                     .= (ga1 * gn2) * (ga1");
    beta.x = gn1*ga1 & beta.y = gn2*ga2 by A3,B2,B1,B6;
    then B5: (beta.x) * (beta.y) = gn1 * ga1 * gn2 * ga2 by GROUP_1:def 3
    .= gn1 * ga1 * gn2 * (1_G) * ga2 by GROUP_1:def 4
    .= gn1 * ga1 * gn2 * ((ga1") * ga1) * ga2 by GROUP_1:def 5
    .= gn1 * ga1 * gn2 * (ga1") * ga1 * ga2 by GROUP_1:def 3
    .= gn1 * (ga1 * gn2) * (ga1") * ga1 * ga2 by GROUP_1:def 3
    .= gn1 * (gn2 |^ (ga1")) * ga1 * ga2 by B7, GROUP_1:def 3;
    B4: (alphaga1 . gn2) = gn2 |^ (ga1") & gn2 |^ (ga1") in N
      by A2,B6,AUTGROUP:1;
    then B10: ga1 * ga2 in H & gn1 * (gn2 |^ (ga1")) in N by B6, GROUP_2:50;
    reconsider alphaa1=alpha.a1 as Homomorphism of N,N by AUTGROUP:def 1;

    B11: n1 * ((alphaa1).n2) = (the multF of G).(gn1, (alphaga1).gn2)
    proof
      (alphaa1).n2 = (alphaga1).gn2;
      then (alphaga1).gn2 in N;
      then (alphaga1).gn2 in G by GROUP_2:40;
      then reconsider y = (alphaga1).gn2 as Element of G;
      reconsider x = (alphaa1).n2 as Element of N;
      gn1 * y = (the multF of G).(gn1, (alphaga1).gn2);
      hence thesis by GROUP_2:43;
    end;
    x * y = <*n1 * ((alphaa1).n2), a1*a2 *> by B1,B2,Th14
         .= <* gn1 * (gn2 |^ (ga1")), ga1*ga2 *> by B4, B11, GROUP_2:43;
    then beta.(x * y) = (gn1 * (gn2 |^ (ga1"))) * (ga1 * ga2) by A3,B10
                     .= (beta.x) * (beta.y) by B5, GROUP_1:def 3;
    hence beta.(x * y) = (beta.x) * (beta.y);
  end;

  then reconsider beta as Homomorphism of S, G by GROUP_6:def 6;
  take beta;

  thus for gh,gn being Element of G
  for h being Element of H
  for n being Element of N st gh = h & gn = n
  holds beta.(<*n,h*>) = gn*gh
  proof
    let gh,gn be Element of G;
    let h be Element of H;
    let n be Element of N;
    assume B1: gh = h & gn = n;
    then gh in H & gn in N;
    hence beta.(<*n,h*>) = gn*gh by B1,A3;
  end;

  for y being Element of G
  ex x being Element of S
  st beta.x = y
  proof
    let y be Element of G;
    y in the carrier of G;
    then y in N * H by A1,Th64;
    then consider n,h being Element of G such that
    B1: y = n * h & n in N & h in H by GROUP_5:4;
    reconsider h1=h as Element of H by B1;
    reconsider n1=n as Element of N by B1;
    reconsider x = <*n1,h1*> as Element of S by Th9;
    take x;
    thus beta.x = y by B1,A3;
  end;

  then beta is onto by GROUP_6:58;
  hence thesis by A1, A3;
end;
