let D be non empty set ; :: thesis: for A, M being BinOp of D
for f being FinSequence of D
for F being finite set st M is commutative & M is associative & A is having_a_unity & A is commutative & A is associative holds
for E being Enumeration of F
for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let A, M be BinOp of D; :: thesis: for f being FinSequence of D
for F being finite set st M is commutative & M is associative & A is having_a_unity & A is commutative & A is associative holds
for E being Enumeration of F
for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let f be FinSequence of D; :: thesis: for F being finite set st M is commutative & M is associative & A is having_a_unity & A is commutative & A is associative holds
for E being Enumeration of F
for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let F be finite set ; :: thesis: ( M is commutative & M is associative & A is having_a_unity & A is commutative & A is associative implies for E being Enumeration of F
for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) )

assume that
A1: ( M is commutative & M is associative ) and
A2: ( A is having_a_unity & A is commutative & A is associative ) ; :: thesis: for E being Enumeration of F
for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let E be Enumeration of F; :: thesis: for p being Permutation of (dom E) st ( M is having_a_unity or len E >= 1 ) holds
for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let p be Permutation of (dom E); :: thesis: ( ( M is having_a_unity or len E >= 1 ) implies for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) )

assume A3: ( M is having_a_unity or len E >= 1 ) ; :: thesis: for CE, CEp being non-empty non empty FinSequence of D * st CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) holds
for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let CE, CEp be non-empty non empty FinSequence of D * ; :: thesis: ( CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) implies for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) )

assume A4: ( CE = (SignGenOp (f,A,F)) * E & CEp = (SignGenOp (f,A,F)) * (E * p) ) ; :: thesis: for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

defpred S1[ set ] means for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st S = $1 & Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)));
A5: ( dom p = dom E & dom E = rng p ) by FUNCT_2:52, FUNCT_2:def 3;
A6: S1[ {}. (dom (App CE))]
proof
let S be Element of Fin (dom (App CE)); :: thesis: for Sp being Element of Fin (dom (App CEp)) st S = {}. (dom (App CE)) & Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let Sp be Element of Fin (dom (App CEp)); :: thesis: ( S = {}. (dom (App CE)) & Sp = { (s * p) where s is FinSequence of NAT : s in S } implies A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) )
assume A7: ( S = {}. (dom (App CE)) & Sp = { (s * p) where s is FinSequence of NAT : s in S } ) ; :: thesis: A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))
Sp = {}
proof
assume Sp <> {} ; :: thesis: contradiction
then consider x being object such that
A8: x in Sp by XBOOLE_0:def 1;
ex s being FinSequence of NAT st
( x = s * p & s in S ) by A8, A7;
hence contradiction by A7; :: thesis: verum
end;
then Sp = {}. (dom (App CEp)) ;
then A $$ (Sp,(M "**" (App CEp))) = the_unity_wrt A by A2, SETWISEO:31
.= A $$ (S,(M "**" (App CE))) by A7, A2, SETWISEO:31 ;
hence A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) ; :: thesis: verum
end;
A9: for B9 being Element of Fin (dom (App CE))
for b being Element of dom (App CE) st S1[B9] & not b in B9 holds
S1[B9 \/ {b}]
proof
let B9 be Element of Fin (dom (App CE)); :: thesis: for b being Element of dom (App CE) st S1[B9] & not b in B9 holds
S1[B9 \/ {b}]

let b be Element of dom (App CE); :: thesis: ( S1[B9] & not b in B9 implies S1[B9 \/ {b}] )
assume A10: ( S1[B9] & not b in B9 ) ; :: thesis: S1[B9 \/ {b}]
let S1 be Element of Fin (dom (App CE)); :: thesis: for Sp being Element of Fin (dom (App CEp)) st S1 = B9 \/ {b} & Sp = { (s * p) where s is FinSequence of NAT : s in S1 } holds
A $$ (S1,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp)))

let S2 be Element of Fin (dom (App CEp)); :: thesis: ( S1 = B9 \/ {b} & S2 = { (s * p) where s is FinSequence of NAT : s in S1 } implies A $$ (S1,(M "**" (App CE))) = A $$ (S2,(M "**" (App CEp))) )
assume A11: ( S1 = B9 \/ {b} & S2 = { (s * p) where s is FinSequence of NAT : s in S1 } ) ; :: thesis: A $$ (S1,(M "**" (App CE))) = A $$ (S2,(M "**" (App CEp)))
set B2 = { (s * p) where s is FinSequence of NAT : s in B9 } ;
reconsider B2 = { (s * p) where s is FinSequence of NAT : s in B9 } as Element of Fin (dom (App CEp)) by A4, Th113;
A12: ( len b = len CE & len CE = len E ) by Th47, A4, CARD_1:def 7;
then A13: dom E = dom b by FINSEQ_3:30;
b in doms CE ;
then reconsider c = b as FinSequence of NAT by FINSEQ_1:def 11;
A14: B2 c= S2
proof
let y be object ; :: according to TARSKI:def 3 :: thesis: ( not y in B2 or y in S2 )
assume A15: y in B2 ; :: thesis: y in S2
consider s being FinSequence of NAT such that
A16: ( y = s * p & s in B9 ) by A15;
s in S1 by A16, A11, XBOOLE_0:def 3;
hence y in S2 by A16, A11; :: thesis: verum
end;
c in S1 by A11, ZFMISC_1:136;
then A17: c * p in S2 by A11;
then A18: {(c * p)} c= S2 by ZFMISC_1:31;
S2 c= dom (App CEp) by FINSUB_1:def 5;
then reconsider cp = c * p as Element of dom (App CEp) by A17;
A19: not cp in B2
proof
assume cp in B2 ; :: thesis: contradiction
then consider s being FinSequence of NAT such that
A20: ( cp = s * p & s in B9 ) ;
B9 c= dom (App CE) by FINSUB_1:def 5;
then s in dom (App CE) by A20;
then len s = len CE by Th47;
then A21: dom E = dom s by A12, FINSEQ_3:30;
A22: p * (p ") = id (rng p) by FUNCT_1:39;
(c * p) * (p ") = s * (p * (p ")) by A20, RELAT_1:36;
then c * (p * (p ")) = s * (p * (p ")) by RELAT_1:36;
then c * (p * (p ")) = s by A22, A5, A21, RELAT_1:52;
hence contradiction by A20, A10, A22, A5, A13, RELAT_1:52; :: thesis: verum
end;
S2 c= B2 \/ {(b * p)}
proof
let y be object ; :: according to TARSKI:def 3 :: thesis: ( not y in S2 or y in B2 \/ {(b * p)} )
assume A23: y in S2 ; :: thesis: y in B2 \/ {(b * p)}
consider s being FinSequence of NAT such that
A24: ( y = s * p & s in S1 ) by A23, A11;
( s in B9 or s = c ) by A11, A24, ZFMISC_1:136;
then ( y in B2 or y in {(b * p)} ) by A24, ZFMISC_1:31;
hence y in B2 \/ {(b * p)} by XBOOLE_0:def 3; :: thesis: verum
end;
then A25: B2 \/ {cp} = S2 by A18, A14, XBOOLE_1:8;
(M "**" (App CE)) . c = (M "**" (App CEp)) . cp by Th112, A1, A4, A12, A3;
hence A $$ (S1,(M "**" (App CE))) = A . ((A $$ (B9,(M "**" (App CE)))),((M "**" (App CEp)) . cp)) by A2, A10, A11, SETWOP_2:2
.= A . ((A $$ (B2,(M "**" (App CEp)))),((M "**" (App CEp)) . cp)) by A10
.= A $$ (S2,(M "**" (App CEp))) by A25, A2, A19, SETWOP_2:2 ;
:: thesis: verum
end;
for B being Element of Fin (dom (App CE)) holds S1[B] from SETWISEO:sch 2(A6, A9);
hence for S being Element of Fin (dom (App CE))
for Sp being Element of Fin (dom (App CEp)) st Sp = { (s * p) where s is FinSequence of NAT : s in S } holds
A $$ (S,(M "**" (App CE))) = A $$ (Sp,(M "**" (App CEp))) ; :: thesis: verum