reserve i for Element of NAT;

theorem
  for G being Group for H,F2 being Subgroup of G
  for F1 being normal Subgroup of F2 holds
  for G2 being Subgroup of G st G2 = H /\ F2
  for G1 being normal Subgroup of G2 st G1 = H /\ F1
  ex G3 being Subgroup of F2./.F1 st G2./.G1, G3 are_isomorphic
proof
  let G be Group;
  let H,F2 be Subgroup of G;
  let F1 be normal Subgroup of F2;
  reconsider G2=H /\ F2 as strict Subgroup of G;
  consider f being Function such that
A1: f=(nat_hom F1)|(the carrier of H);
  reconsider f1=nat_hom F1 as Function of the carrier of F2,the carrier of F2
  ./.F1;
A2: the carrier of F2=carr(F2) & the carrier of H= carr(H);
  dom f1=the carrier of F2 by FUNCT_2:def 1;
  then
A3: dom f=(the carrier of F2) /\ (the carrier of H) by A1,RELAT_1:61
    .=carr(F2/\ H) by A2,GROUP_2:81
    .= the carrier of (H /\ F2);
  rng ((nat_hom F1)|(the carrier of H)) c=rng (nat_hom F1) by RELAT_1:70;
  then reconsider
  f as Function of the carrier of H/\F2,the carrier of F2./.F1 by A1,A3,
FUNCT_2:2;
  for a,b being Element of H /\F2 holds f.(a * b) = f.a * f.b
  proof
    let a,b be Element of H /\F2;
A4: the carrier of H /\F2=carr(H) /\ carr(F2) by GROUP_2:def 10;
    then reconsider a9=a, b9=b as Element of F2 by XBOOLE_0:def 4;
    b in carr(H) by A4,XBOOLE_0:def 4;
    then
A5: ((nat_hom F1)|(the carrier of H)).b=(nat_hom F1).b by FUNCT_1:49;
    a*b in carr(H) by A4,XBOOLE_0:def 4;
    then
A6: ((nat_hom F1)|(the carrier of H)).(a*b)=(nat_hom F1).(a*b) by FUNCT_1:49;
    H /\ F2 is Subgroup of F2 by GROUP_2:88;
    then
A7: a*b=a9 *b9 by GROUP_2:43;
    a in carr(H) by A4,XBOOLE_0:def 4;
    then ((nat_hom F1)|(the carrier of H)).a=(nat_hom F1).a by FUNCT_1:49;
    hence thesis by A1,A7,A5,A6,GROUP_6:def 6;
  end;
  then reconsider f as Homomorphism of H/\F2,F2./.F1 by GROUP_6:def 6;
A8: (the carrier of H) /\ (the carrier of F2) =carr(H/\ F2) by A2,GROUP_2:81
    .= the carrier of (H /\ F2);
A9: Ker f=H /\ F1
  proof
    reconsider L=Ker f as Subgroup of G by GROUP_2:56;
    for g be Element of G holds g in L iff g in H /\ F1
    proof
      let x be Element of G;
      thus x in L implies x in H /\ F1
      proof
        assume
A10:    x in L;
        then x in carr(Ker f) by STRUCT_0:def 5;
        then reconsider a=x as Element of H/\F2;
A11:    the carrier of H /\F2=carr(H) /\ carr(F2) by GROUP_2:def 10;
        then reconsider a9=a as Element of F2 by XBOOLE_0:def 4;
A12:    a in carr(H) by A11,XBOOLE_0:def 4;
        then
A13:    a in H by STRUCT_0:def 5;
        ((nat_hom F1)|(the carrier of H)).a=(nat_hom F1).a by A12,FUNCT_1:49;
        then
A14:    f.a= a9 *F1 by A1,GROUP_6:def 8;
        f.a =1_(F2./.F1) by A10,GROUP_6:41
          .=carr F1 by GROUP_6:24;
        then a9 in F1 by A14,GROUP_2:113;
        hence thesis by A13,GROUP_2:82;
      end;
      thus x in H /\ F1 implies x in L
      proof
        reconsider F19=F1 as Subgroup of G;
A15:    (the carrier of H) /\ (the carrier of F1) =carr(H) /\ carr(F19)
          .= the carrier of (H /\ F1) by GROUP_2:def 10;
        assume x in H /\ F1;
        then
A16:    x in carr(H /\F1) by STRUCT_0:def 5;
        the carrier of F1 c= the carrier of F2 by GROUP_2:def 5;
        then the carrier of (H /\ F1) c= the carrier of (H /\ F2) by A8,A15,
XBOOLE_1:26;
        then reconsider a=x as Element of H/\F2 by A16;
        x in the carrier of F1 by A16,A15,XBOOLE_0:def 4;
        then
A17:    a in F1 by STRUCT_0:def 5;
A18:    the carrier of H /\F2=carr(H) /\ carr(F2) by GROUP_2:def 10;
        then reconsider a9=a as Element of F2 by XBOOLE_0:def 4;
        a in carr(H) by A18,XBOOLE_0:def 4;
        then ((nat_hom F1)|(the carrier of H)).a=(nat_hom F1).a by FUNCT_1:49;
        then f.a= a9 *F1 by A1,GROUP_6:def 8
          .=carr F1 by A17,GROUP_2:113
          .=1_(F2./.F1) by GROUP_6:24;
        hence thesis by GROUP_6:41;
      end;
    end;
    hence thesis by GROUP_2:def 6;
  end;
  reconsider G1=Ker f as normal Subgroup of G2;
  G2 ./. G1,Image f are_isomorphic by GROUP_6:78;
  hence thesis by A9;
end;
