reserve x,y,X,Y for set,
  k,l,n for Nat,
  i,i1,i2,i3,j for Integer,
  G for Group,
  a,b,c,d for Element of G,
  A,B,C for Subset of G,
  H,H1,H2, H3 for Subgroup of G,
  h for Element of H,
  F,F1,F2 for FinSequence of the carrier of G,
  I,I1,I2 for FinSequence of INT;

theorem Th28:
  a in gr A iff ex F,I st len F = len I & rng F c= A & Product(F |^ I) = a
proof
  thus a in gr A implies ex F,I st len F = len I & rng F c= A & Product(F |^ I
  ) = a
  proof
    defpred P[set] means ex F,I st $1 = Product (F |^ I) & len F = len I & rng
    F c= A;
    assume
A1: a in gr A;
    reconsider B = {b : P[b]} as Subset of G from DOMAIN_1:sch 7;
A2: now
      let c,d;
      assume that
A3:   c in B and
A4:   d in B;
      ex d1 being Element of G st c = d1 & ex F,I st d1 = Product(F |^ I)
      & len F = len I & rng F c= A by A3;
      then consider F1,I1 such that
A5:   c = Product(F1 |^ I1) and
A6:   len F1 = len I1 and
A7:   rng F1 c= A;
      ex d2 being Element of G st d = d2 & ex F,I st d2 = Product(F |^ I)
      & len F = len I & rng F c= A by A4;
      then consider F2,I2 such that
A8:   d = Product(F2 |^ I2) and
A9:   len F2 = len I2 and
A10:  rng F2 c= A;
A11:  len(F1 ^ F2) = len I1 + len I2 by A6,A9,FINSEQ_1:22
        .= len(I1 ^ I2) by FINSEQ_1:22;
      rng(F1 ^ F2) = rng F1 \/ rng F2 by FINSEQ_1:31;
      then
A12:  rng(F1 ^ F2) c= A by A7,A10,XBOOLE_1:8;
      c * d = Product((F1 |^ I1) ^ (F2 |^ I2)) by A5,A8,FINSOP_1:5
        .= Product((F1 ^ F2) |^ (I1 ^ I2)) by A6,A9,Th19;
      hence c * d in B by A12,A11;
    end;
A13: now
      let c;
      assume c in B;
      then
      ex d1 being Element of G st c = d1 & ex F,I st d1 = Product(F |^ I)
      & len F = len I & rng F c= A;
      then consider F1,I1 such that
A14:  c = Product(F1 |^ I1) and
A15:  len F1 = len I1 and
A16:  rng F1 c= A;
      deffunc F(Nat) = F1.(len F1 - $1 + 1);
      consider F2 being FinSequence such that
A17:  len F2 = len F1 and
A18:  for k be Nat st k in dom F2 holds F2.k = F(k) from FINSEQ_1:sch
      2;
A19:  Seg len I1 = dom I1 by FINSEQ_1:def 3;
A20:  rng F2 c= rng F1
      proof
        let x be object;
        assume x in rng F2;
        then consider y being object such that
A21:    y in dom F2 and
A22:    F2.y = x by FUNCT_1:def 3;
        reconsider y as Element of NAT by A21;
        reconsider n = len F1 - y + 1 as Element of NAT by A17,A21,Lm3;
        1 <= n & n <= len F1 by A17,A21,Lm3;
        then
A23:    n in dom F1 by FINSEQ_3:25;
        x = F1.(len F1 - y + 1) by A18,A21,A22;
        hence thesis by A23,FUNCT_1:def 3;
      end;
      then
A24:  rng F2 c= A by A16;
      defpred P[Nat,object] means ex i st i = I1.(len I1 - $1 + 1) & $2 = - i;
A25:  for k be Nat st k in Seg len I1 ex x being object st P[k,x]
      proof
        let k be Nat;
        assume k in Seg len I1;
        then
A26:    k in dom I1 by FINSEQ_1:def 3;
        then reconsider n = len I1 - k + 1 as Element of NAT by Lm3;
        1 <= n & n <= len I1 by A26,Lm3;
        then n in dom I1 by FINSEQ_3:25;
        then
A27:    I1.n in rng I1 by FUNCT_1:def 3;
        rng I1 c= INT by FINSEQ_1:def 4;
        then reconsider i = I1.n as Element of INT qua non empty set by A27;
        take -i,i;
        thus thesis;
      end;
      consider I2 being FinSequence such that
A28:  dom I2 = Seg len I1 and
A29:  for k be Nat st k in Seg len I1 holds P[k,I2.k] from FINSEQ_1:
      sch 1(A25);
A30:  len F2 = len I2 by A15,A17,A28,FINSEQ_1:def 3;
A31:  rng I2 c= INT
      proof
        let x be object;
        assume x in rng I2;
        then consider y being object such that
A32:    y in dom I2 and
A33:    x = I2.y by FUNCT_1:def 3;
        reconsider y as Element of NAT by A32;
        ex i st i = I1.(len I1 - y + 1) & x = - i by A28,A29,A32,A33;
        hence thesis by INT_1:def 2;
      end;
      rng F1 c= the carrier of G by FINSEQ_1:def 4;
      then
A34:  rng F2 c= the carrier of G by A20;
      set p = F1 |^ I1;
A35:  Seg len F1 = dom F1 by FINSEQ_1:def 3;
A36:  len p = len F1 by Def3;
A37:  dom F2 = dom I2 by A15,A17,A28,FINSEQ_1:def 3;
      reconsider I2 as FinSequence of INT by A31,FINSEQ_1:def 4;
      reconsider F2 as FinSequence of the carrier of G by A34,FINSEQ_1:def 4;
      set q = F2 |^ I2;
A38:  len q = len F2 by Def3;
      then
A39:  dom q = dom F2 by FINSEQ_3:29;
A40:  dom F1 = dom I1 by A15,FINSEQ_3:29;
      now
        let k;
A41:    I2/.k = @(I2/.k);
        assume
A42:    k in dom q;
        then reconsider n = len p - k + 1 as Element of NAT by A17,A36,A38,Lm3;
A43:    I1/.n = @(I1/.n) & q/.k = q.k by A42,PARTFUN1:def 6;
        dom q = dom I1 by A15,A17,A38,FINSEQ_3:29;
        then consider i such that
A44:    i = I1.n and
A45:    I2.k = - i by A15,A29,A19,A36,A42;
        I2.k = I2/.k by A37,A39,A42,PARTFUN1:def 6;
        then
A46:    q.k = (F2/.k) |^ (- i) by A39,A42,A45,A41,Def3;
A47:    F2/.k = F2.k & F2.k = F1.n by A18,A36,A39,A42,PARTFUN1:def 6;
        1 <= n & len p >= n by A17,A36,A38,A42,Lm3;
        then
A48:    n in dom I2 by A17,A30,A36,FINSEQ_3:25;
        then
A49:    I1.n = I1/.n by A28,A19,PARTFUN1:def 6;
        F1/.n= F1.n by A15,A35,A28,A48,PARTFUN1:def 6;
        then q.k = ((F1/.n) |^ i)" by A46,A47,GROUP_1:36;
        hence (q/.k)" = p.(len p - k + 1) by A40,A28,A19,A48,A44,A49,A43,Def3;
      end;
      then Product p" = Product q by A17,A36,A38,Th14;
      hence c" in B by A14,A30,A24;
    end;
A50: len {} = 0;
A51: rng <*> the carrier of G = {} & {} c= A;
    1_G = Product <*> the carrier of G & (<*> the carrier of G) |^ (<*>
    INT) = {} by Th8,Th21;
    then 1_G in B by A51,A50;
    then consider H being strict Subgroup of G such that
A52: the carrier of H = B by A2,A13,GROUP_2:52;
    A c= B
    proof
      reconsider p = 1 as Integer;
      let x be object;
      assume
A53:  x in A;
      then reconsider a = x as Element of G;
A54:  rng<* a *> = {a} & {a} c= A by A53,FINSEQ_1:39,ZFMISC_1:31;
A55:  len<* a *> = 1 & len<* @p *> = 1 by FINSEQ_1:39;
      Product(<* a *> |^ <* @p *>) = Product<* a |^ 1 *> by Th22
        .= a |^ 1 by FINSOP_1:11
        .= a by GROUP_1:26;
      hence thesis by A55,A54;
    end;
    then gr A is Subgroup of H by A52,Def4;
    then a in H by A1,GROUP_2:40;
    then a in B by A52,STRUCT_0:def 5;
    then
    ex b st b = a & ex F,I st b = Product(F |^ I) & len F = len I & rng F c= A;
    hence thesis;
  end;
  given F,I such that
  len F = len I and
A56: rng F c= A and
A57: Product(F |^ I) = a;
  A c= the carrier of gr A by Def4;
  then rng F c= carr gr A by A56;
  hence thesis by A57,Th20;
end;
