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 Th112:
  M is commutative associative
implies
  for E be Enumeration of F, p be Permutation of dom E
    for s be FinSequence st
      s in doms (SignGenOp(f,A,F) * E) & (len s >=1 or M is having_a_unity)
    holds
      (M "**" App (SignGenOp(f,A,F) * E)).s =
      (M "**" App (SignGenOp(f,A,F) * (E*p))).(s*p)
proof
  assume
A1: M is commutative associative;
  let E be Enumeration of F,p be Permutation of dom E;
  let s be FinSequence such that
A2: s in doms (SignGenOp(f,A,F) * E) & (len s >=1 or M is having_a_unity);
  set Ep=E*p,sp=s*p;
  s*p in doms (SignGenOp(f,A,F) * Ep) by A2,Th110;
  then s*p in dom App (SignGenOp(f,A,F) * Ep) by Def9;
  then
A3: (M "**" App (SignGenOp(f,A,F) * Ep)).sp =
  M "**" ((App (SignGenOp(f,A,F) * Ep)).sp) by Def10;
A4: len s = len (SignGenOp(f,A,F) * E) = len E by Th47,A2,CARD_1:def 7;
  len s = len ((App (SignGenOp(f,A,F) * E)).s) by Def9,A2;
  then
A5: dom E=dom ((App (SignGenOp(f,A,F) * E)).s) by A4,FINSEQ_3:29;
  s in dom App (SignGenOp(f,A,F) * E) by A2,Def9;
  then
A6: (M "**" App (SignGenOp(f,A,F) * E)).s =
    M "**" ((App (SignGenOp(f,A,F) * E)).s) by Def10;
A7:  M is having_a_unity or len ((App (SignGenOp(f,A,F) * E)).s) >=1
   by A2,Def9;
  (App (SignGenOp(f,A,F) * Ep)).sp = ((App (SignGenOp(f,A,F) * E)).s)*p
    by A2,Th111;
  hence thesis by A3,A6,A1,FINSOP_1:7,A5,A7;
end;
