 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 :::ThEquivDefs:
  for G being Group
  for I being non empty set
  for F being componentwise_strict Subgroup-Family of I,G
  for Fam being Subset of Subgroups G st Fam = rng F
  holds G is_internal_product_of F
  iff G is_internal_product_of Fam
proof
  let G be Group;
  let I be non empty set;
  let F be componentwise_strict Subgroup-Family of I,G;
  let Fam be Subset of Subgroups G;
  assume A1: Fam = rng F;
  thus G is_internal_product_of F implies G is_internal_product_of Fam
  proof
    assume B1: G is_internal_product_of F;
    B2: for H being strict Subgroup of G st H in Fam
    holds H is normal Subgroup of G
    proof
      let H be strict Subgroup of G;
      assume H in Fam;
      then consider i being Element of I such that
      Z1: H = F.i by A1, MssRng;
      thus H is normal Subgroup of G by B1, Z1;
    end;
    B3: ex A being Subset of G
        st A = union { UH where UH is Subset of G :
                       ex H being strict Subgroup of G
                       st H in Fam & UH = the carrier of H }
        & the multMagma of G = gr A
    proof
      consider A being Subset of G such that
      Z1: A = Union (Carrier F);
      take A;
      thus union { A where A is Subset of G :
                   ex H being strict Subgroup of G
                   st H in Fam & A = the carrier of H }
      = A by A1,Z1,ThCarrG;
      thus the multMagma of G = gr A by Z1, B1;
    end;
    for H being strict Subgroup of G st H in Fam
    for A being Subset of G
    st A = union { UK where UK is Subset of G :
                   ex K being strict Subgroup of G
                   st K in Fam & UK = the carrier of K
                    & K <> H }
    holds H /\ gr A = (1).G
    proof
      let H be strict Subgroup of G;
      assume Z1: H in Fam;
      let A be Subset of G;
      assume Z2: A = union { UK where UK is Subset of G :
                             ex K being strict Subgroup of G
                             st K in Fam & UK = the carrier of K & K <> H };
      consider i being Element of I such that
      Z3: H = F.i by A1,Z1,MssRng;
      reconsider J=I \ {j where j is Element of I : F.i = F.j} as Subset of I;
      for i being Element of I holds F.i is normal Subgroup of G by B1;
      then F is normal Subgroup-Family of I,G by ThS1;
      then consider N being strict normal Subgroup of G such that
      Z5: N = gr Union (Carrier (F|J)) by ThJoinNormUnionRes;
      H = F/.i & F/.i /\ N = (1).G by B1, Z3, Z5, Def20;
      hence H /\ gr A = (1).G by A1, Z2, Z3, Z5, ThUnionFam;
    end;
    hence G is_internal_product_of Fam by B2, B3;
  end;
  assume B1: G is_internal_product_of Fam;
  B2: for i being Element of I holds F.i is normal Subgroup of G
  proof
    let i be Element of I;
    F.i is Subgroup of G & F.i is strict Subgroup of G by ThS2;
    hence F.i is normal Subgroup of G by A1, B1, MssRng;
  end;
  for i being Element of I
  for N being strict normal Subgroup of G
  st N = gr (Union (Carrier (F|(I \ {j where j is Element of I : F.i = F.j}))))
  holds F/.i /\ N = (1).G
  proof
    let i be Element of I;
    let N be strict normal Subgroup of G;
    assume Z2: N = gr (Union (Carrier (F|(I \ {j where
      j is Element of I : F.i = F.j}))));
    reconsider H=F.i as strict Subgroup of G by Def19;
    reconsider H as strict normal Subgroup of G by A1, B1, MssRng;
    reconsider J = I \ {j where j is Element of I : F.i = F.j} as Subset of I;
    Z4: union { A0 where A0 is Subset of G :
                ex K being strict Subgroup of G
                st K in Fam & A0 = the carrier of K & K <> H }
    = Union (Carrier (F|J)) by A1, ThUnionFam; then
    reconsider A = union { A0 where A0 is Subset of G :
                           ex K being strict Subgroup of G
                           st K in Fam & A0 = the carrier of K & K <> H }
    as Subset of G;
    H /\ N = (1).G by A1, B1, Z2, Z4, MssRng;
    hence thesis by Def20;
  end;
  hence G is_internal_product_of F by A1, B1, B2, ThCarrG;
end;
