 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 ThInjectiveIPO:
  for G being 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 ((the multMagma of G = gr Union (Carrier F))
   & (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 G be Group;
  let I be non empty set;
  let F be normal Subgroup-Family of I,G;
  assume A1: F is one-to-one;
  thus G is_internal_product_of F implies
  ((the multMagma of G = gr Union (Carrier F))
   & (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
    assume Z2: G is_internal_product_of F;
    hence the multMagma of G = gr Union (Carrier F);
    let i be Element of I;
    A2: {i} c= {j where j is Element of I : F.i = F.j}
    proof
      for x being object st x in {i}
      holds x in {j where j is Element of I : F.i = F.j}
      proof
        let x be object;
        assume x in {i};
        then x = i by TARSKI:def 1;
        hence x in {j where j is Element of I : F.i = F.j};
      end;
      hence thesis by TARSKI:def 3;
    end;
    for x being object st x in {j where j is Element of I : F.i = F.j}
    holds x in {i}
    proof
      let x be object;
      assume x in {j where j is Element of I : F.i = F.j};
      then consider j being Element of I such that
      B2: x = j & F.i = F.j;
      dom F = I by PARTFUN1:def 2;
      then i = j by A1, B2;
      hence x in {i} by B2, TARSKI:def 1;
    end;
    then A3: {j where j is Element of I : F.i = F.j} c= {i} by TARSKI:def 3;
    let J be Subset of I;
    assume J = I \ {i};
    then Z4: J = I \ {j where j is Element of I : F.i = F.j}
    by A2, A3, XBOOLE_0:def 10;
    let N be strict normal Subgroup of G;
    assume N = gr (Union (Carrier (F|J)));
    hence F.i /\ N = (1).G by Z2, Z4, ThIPO;
  end;
  assume Z6: the multMagma of G = gr Union (Carrier F);
  assume Z7: 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;
  for i being Element of I
  for J being Subset of I st J = I \ {j where j is Element of I : F.i = F.j}
  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 \ {j where j is Element of I : F.i = F.j};
    A2: {i} c= {j where j is Element of I : F.i = F.j}
    proof
      for x being object st x in {i}
      holds x in {j where j is Element of I : F.i = F.j}
      proof
        let x be object;
        assume x in {i};
        then x = i by TARSKI:def 1;
        hence x in {j where j is Element of I : F.i = F.j};
      end;
      hence thesis by TARSKI:def 3;
    end;
    for x being object st x in {j where j is Element of I : F.i = F.j}
    holds x in {i}
    proof
      let x be object;
      assume x in {j where j is Element of I : F.i = F.j};
      then consider j being Element of I such that
      B1: x = j & F.i = F.j;
      dom F = I by PARTFUN1:def 2;
      then i = j by A1, B1;
      hence x in {i} by B1, TARSKI:def 1;
    end;
    then {j where j is Element of I : F.i = F.j} c= {i} by TARSKI:def 3;
    then A3: {j where j is Element of I : F.i = F.j} = {i}
      by A2, XBOOLE_0:def 10;
    let N be strict normal Subgroup of G;
    assume B3: N = gr (Union (Carrier (F|J)));
    thus F.i /\ N = (1).G by Z7,B2,B3,A3;
  end;
  hence G is_internal_product_of F by Z6, ThIPO;
end;
