 reserve I for non empty set;
 reserve i for Element of I;
 reserve F for Group-Family of I;
 reserve G for Group;
reserve S for Subgroup-Family of F;
reserve f for Homomorphism-Family of G, F;

theorem :: ThRecognition:
  for G being strict Group
  for I being non empty set
  for F being normal Subgroup-Family of I,G
  st F is one-to-one
  holds G is_internal_product_of F iff F is internal DirectSumComponents of G,I
proof
  let G be strict Group;
  let I be non empty set;
  let F be normal Subgroup-Family of I,G;
  assume A1: F is one-to-one;
  A2: for i being Element of I
  for J being Subset of I
  holds Carrier (F|J) = (Carrier F) | J
  proof
    let i be Element of I;
    let J be Subset of I;
    per cases;
    suppose J is empty;
      hence thesis;
    end;
    suppose J is non empty;
      then reconsider J as non empty Subset of I;
      for j being Element of J
      holds (Carrier (F|J)).j = ((Carrier F) | J).j
      proof
        let j be Element of J;
        j in J;
        then j in dom (F|J) by PARTFUN1:def 2;
        then B1: (F|J).j = F.j by FUNCT_1:47;
        B2: (Carrier (F|J)).j = the carrier of F.j by B1, Th9
                             .= (Carrier F).j by Th9;
        dom ((Carrier F)|J) = J by PARTFUN1:def 2;
        hence (Carrier (F|J)).j = ((Carrier F) | J).j by B2, FUNCT_1:47;
      end;
      hence thesis by PBOOLE:def 21;
    end;
  end;
  thus G is_internal_product_of F implies
    F is internal DirectSumComponents of G,I
  proof
    assume A3: G is_internal_product_of F;
    A4: (for i being Element of I holds F.i is normal Subgroup of G);
    A6: for i being Element of I
    ex UFi being Subset of G
    st (UFi = Union ((Carrier F) | (I \ {i}))
    & ([#] (gr UFi)) /\ ([#] (F . i)) = {(1_ G)})
    proof
      let i be Element of I;
      set J = I \ {i};
      take UFi = Union (Carrier (F|(I \ {i})));
      thus UFi = Union ((Carrier F) | (I \ {i})) by A2;
      consider N being strict normal Subgroup of G such that
      B3: N = gr (Union (Carrier (F|(I \ {i}))))
      by ThJoinNormUnionRes;
      B4: ((F.i) /\ N) = (1).G by A1,A3,B3,ThInjectiveIPO;
      [#] ((F.i) /\ N) = (carr (F.i)) /\ (carr N) by GROUP_2:def 10
                      .= ([#] (F.i)) /\ ([#] (gr UFi)) by B3;
      hence ([#] (gr UFi)) /\ ([#] (F . i)) = {(1_ G)} by B4, GROUP_2:def 7;
    end;
    thus F is internal DirectSumComponents of G,I by A3,A4,A6,GROUP_20:16;
  end;
  thus F is internal DirectSumComponents of G,I implies
    G is_internal_product_of F
  proof
    assume A3: F is internal DirectSumComponents of G,I;
    A5: ex UF being Subset of G st (UF = Union (Carrier F) & gr UF = G)
    by A3, GROUP_20:16;
    for i being Element of I
    for J being Subset of I st J = I \ {i}
    for N being strict normal Subgroup of G
    st N = gr (Union (Carrier (F|J)))
    holds F.i /\ N = (1).G
    proof
      let i be Element of I;
      let J be Subset of I;
      assume B2: J = I \ {i};
      let N be strict normal Subgroup of G;
      assume B3: N = gr (Union (Carrier (F|J)));
      consider UFi being Subset of G such that
      B4: UFi = Union ((Carrier F)|(I \ {i})) and
      B5: ([#] (gr UFi)) /\ ([#] (F.i)) = {(1_ G)} by A3, GROUP_20:16;
      N = gr UFi by A2, B2, B3, B4;
      then B6: ([#] N) /\ ([#] (F.i)) = carr (1).G by B5,GROUP_2:def 7;
      reconsider Fi=F.i as Subgroup of G;
      carr ((N qua Subgroup of G) /\ (Fi))
      = (carr (N qua Subgroup of G)) /\ (carr (Fi)) by GROUP_2:81;
      hence thesis by B6, GROUP_2:59;
    end;
    hence G is_internal_product_of F by A1, A5, ThInjectiveIPO;
  end;
end;
