reserve x,y for set;
reserve C,C9,D,E for non empty set;
reserve c,c9,c1,c2,c3 for Element of C;
reserve B,B9,B1,B2 for Element of Fin C;
reserve A for Element of Fin C9;
reserve d,d1,d2,d3,d4,e for Element of D;
reserve F,G for BinOp of D;
reserve u for UnOp of D;
reserve f,f9 for Function of C,D;
reserve g for Function of C9,D;
reserve H for BinOp of E;
reserve h for Function of D,E;
reserve i,j for Nat;
reserve s for Function;
reserve p,q for FinSequence of D;
reserve T1,T2 for Element of i-tuples_on D;

theorem Th32:
  F is commutative associative & F is having_a_unity & e =
the_unity_wrt F & G.(e,e) = e & (for d1,d2,d3,d4 holds F.(G.(d1,d2),G.(d3,d4))=
G.(F.(d1,d3),F.(d2,d4))) & len p = len q implies G.(F"**"p,F"**"q) = F "**"(G.:
  (p,q))
proof
  assume that
A1: F is commutative & F is associative & F is having_a_unity & e =
  the_unity_wrt F and
A2: G.(e,e) = e and
A3: F.(G.(d1,d2),G.(d3,d4))= G.(F.(d1,d3),F.(d2,d4)) and
A4: len p = len q;
A5: len p = len(G.:(p,q)) by A4,FINSEQ_2:72;
A6: dom(G.:(p,q)) = Seg len(G.:(p,q)) by FINSEQ_1:def 3;
A7: dom q = Seg len q by FINSEQ_1:def 3;
A8: dom p = Seg len p by FINSEQ_1:def 3;
  thus G.(F "**"p,F "**"q) = G.(F $$(findom p,[#](p,e)),F "**"q) by A1,Def2
    .= G.(F $$(findom p,[#](p,e)),F $$(findom q,[#](q,e))) by A1,Def2
    .= F $$(findom p,G.:([#](p,e),[#](q,e))) by A1,A2,A3,A4,A8,A7,Th9
    .= F $$(findom(G.:(p,q)),[#](G.:(p,q),e)) by A2,A4,A5,A8,A6,Lm4
    .= F "**"(G.:(p,q)) by A1,Def2;
end;
