reserve i,j,n,k,m for Nat,
     a,b,x,y,z for object,
     F,G for FinSequence-yielding FinSequence,
     f,g,p,q for FinSequence,
     X,Y for set,
     D for non empty set;
reserve
  B,A,M for BinOp of D,
  F,G for D* -valued FinSequence,
  f for FinSequence of D,
  d,d1,d2 for Element of D;
reserve
  F,G for non-empty non empty FinSequence of D*,
  f for non empty FinSequence of D;
reserve f,g for FinSequence of D,
        a,b,c for set,
        F,F1,F2 for finite set;

theorem
  A is having_a_unity commutative associative
implies
  for E1 be Enumeration of F1 st union F1 c= dom f
    for g be Permutation of dom f
       for gE1 be Enumeration of .:g.:F1 st gE1 = (.:g)*E1
for fg be FinSequence of D st fg = f*g"
  for CE1,CE2 be non-empty non empty FinSequence of D* st
        CE1 = SignGenOp(f,A,F1) * E1 & CE2 = SignGenOp(fg,A,.:g.:F1) * gE1
  for S1 be Element of Fin dom App CE1,
      S2 be Element of Fin dom App CE2 st
  S2 = {g*s where s is FinSequence of NAT: s in S1}holds
  A $$ (S1,M "**" App CE1) = A $$ (S2,M "**" App CE2)
proof
  assume
A1:A is having_a_unity commutative associative;
  let E1 be Enumeration of F1 such that
A2:union F1 c= dom f;
  let g be Permutation of dom f;
  let gE1 be Enumeration of .:g.:F1 such that
A3:gE1 = (.:g)*E1;
  let fg be FinSequence of D such that
A4: fg = f*g";
  let CE1,CE2 be non-empty non empty FinSequence of D* such that
A5:CE1 = SignGenOp(f,A,F1) * E1 & CE2 = SignGenOp(fg,A,.:g.:F1) * gE1;
  defpred P[set] means for S1 be Element of Fin dom App CE1,
  S2 be Element of Fin dom App CE2 st S1=$1 &
  S2 = {g*s where s is FinSequence of NAT: s in S1}holds
  A $$ (S1,M "**" App CE1) = A $$ (S2,M "**" App CE2);
A6:P[{}.dom App CE1]
  proof
    let S1 be Element of Fin dom App CE1,
    S2 be Element of Fin dom App CE2 such that
A7: S1={}.dom App CE1 &
    S2 = {g*s where s is FinSequence of NAT: s in S1};
    S2={}
    proof
      assume S2<>{};
      then consider x such that
A8:   x in S2 by XBOOLE_0:def 1;
      ex s be FinSequence of NAT st x= g*s & s in S1 by A8,A7;
      hence thesis by A7;
    end;
    then S2 = {}.dom App CE2;
    then A $$ (S2,M "**" App CE2) = the_unity_wrt A by A1,SETWISEO:31
    .= A $$ (S1,M "**" App CE1) by A7,A1,SETWISEO:31;
    hence thesis;
  end;
A9: for B9 being (Element of Fin dom App CE1),
     b being Element of dom App CE1 holds
  P[B9] & not b in B9 implies P[B9 \/ {b}]
  proof
    let B9 be Element of Fin dom App CE1,
    b be Element of dom App CE1 such that
A10: P[B9 ] & not b in B9;
    let S1 be Element of Fin dom App CE1,
    S2 be Element of Fin dom App CE2 such that
A11: S1=B9 \/ {b} &
    S2 = {g*s where s is FinSequence of NAT: s in S1};
    set B2 = {g*s where s is FinSequence of NAT: s in B9};
    reconsider B2 as Element of Fin dom App CE2 by A2,A3,A4,A5,Th100;
    b in doms CE1;
    then reconsider c =b as FinSequence of NAT by FINSEQ_1:def 11;
A12: B2 c= S2
    proof
      let y such that
A13: y in B2;
      consider s be FinSequence of NAT such that
A14:  y=g*s & s in B9 by A13;
      s in S1 by A14,A11,XBOOLE_0:def 3;
      hence thesis by A14,A11;
    end;
    c in S1 by A11,ZFMISC_1:136;
    then
A15: g*c in S2 by A11;
    then
A16: {g*b} c= S2 by ZFMISC_1:31;
    S2 c= dom App CE2 by FINSUB_1:def 5;
    then reconsider gc = g*c as Element of dom App CE2 by A15;
A17: dom f = dom g by FUNCT_2:52;
A18: rng c c= dom f
    proof
      let y such that
A19: y in rng c;
      consider x such that
A20: x in dom c & c.x = y by A19,FUNCT_1:def 3;
A21: c.x in dom (CE1.x) by A20,Th47;
      then x in dom CE1 by RELAT_1:38,FUNCT_1:def 2;
      then CE1.x = SignGen(f,A,E1.x) by A5,Th80;
      hence thesis by A20,A21,Def11;
    end;
A22: not gc in B2
    proof
      assume gc in B2;
      then consider s be FinSequence of NAT such that
A23:  gc =g*s & s in B9;
A24:  rng s c= dom f
      proof
        let y such that
A25:    y in rng s;
        consider x such that
A26:    x in dom s & s.x = y by A25,FUNCT_1:def 3;
        B9 c= dom App CE1 by FINSUB_1:def 5;
        then s in dom App CE1 by A23;
        then
A27:    s.x in dom (CE1.x) by A26,Th47;
        then x in dom CE1 by RELAT_1:38,FUNCT_1:def 2;
        then CE1.x = SignGen(f,A,E1.x) by A5,Th80;
        hence thesis by A26,A27,Def11;
      end;
      g"*gc = (g"*g)*s by A23,RELAT_1:36;
      then (g"*g)*c = (g"*g)*s & g"*g = id dom g by RELAT_1:36,FUNCT_1:39;
      then (id dom g)*c = s by A24,A17,RELAT_1:53;
      hence thesis by A10,A23,A18,A17,RELAT_1:53;
    end;
    S2 c= B2 \/{g*b}
    proof
      let y such that
A28:  y in S2;
      consider s be FinSequence of NAT such that
A29:  y = g*s & s in S1 by A28,A11;
      s in B9 or s=c by A11,A29,ZFMISC_1:136;
      then y in B2 or y in {g*b} by A29,ZFMISC_1:31;
      hence thesis by XBOOLE_0:def 3;
    end;
    then
A30: B2 \/{gc} = S2 by A16,A12,XBOOLE_1:8;
    dom (g") = dom f = rng (g") by FUNCT_2:52,def 3;
    then
A31:dom (f*g") = dom f by RELAT_1:27;
A32:fg = (f*g") | dom fg by A4;
A33: g.:dom f c= dom fg by A31,A4;
    (App CE1).c = (App CE2).gc by A3,A5,A2,A33,A32,Th99,A18,A17;
    then (M "**" App CE1).c = M "**" (App CE2).gc by Def10
    .= (M "**" App CE2).gc by Def10;
    hence A $$ ( S1,M "**" App CE1)
    = A.(A $$ ( B9, M "**" App CE1), (M "**" App CE2).gc)
    by A1,A10,A11,SETWOP_2:2
    .= A.(A $$ ( B2,M "**" App CE2), (M "**" App CE2).gc) by A10
    .= A $$ ( S2, M "**" App CE2) by A30,A1,A22,SETWOP_2:2;
  end;
  for B being Element of Fin dom App CE1 holds P[B]
    from SETWISEO:sch 2(A6,A9);
  hence thesis;
end;
