reserve x,y for set;
reserve C,C9,D,D9,E for non empty set;
reserve c for Element of C;
reserve c9 for Element of C9;
reserve d,d1,d2,d3,d4,e for Element of D;
reserve d9 for Element of D9;
reserve i,j for natural Number;
reserve F for Function of [:D,D9:],E;
reserve p,q for FinSequence of D,
  p9,q9 for FinSequence of D9;
reserve f,f9 for Function of C,D,
  h for Function of D,E;
reserve T,T1,T2,T3 for Tuple of i,D;
reserve T9 for Tuple of i, D9;
reserve S for Tuple of j, D;
reserve S9 for Tuple of j, D9;
reserve F,G for BinOp of D;
reserve u for UnOp of D;
reserve H for BinOp of E;

theorem
  F is commutative associative & F is having_a_unity &
  F is having_an_inverseOp & G = F*(id D,the_inverseOp_wrt F) implies
  for d1,d2,d3,d4 holds F.(G.(d1,d2),G.(d3,d4))= G.(F.(d1,d3),F.(d2,d4))
proof
  assume that
A1: F is commutative and
A2: F is associative and
A3: F is having_a_unity & F is having_an_inverseOp and
A4: G = F*(id D,the_inverseOp_wrt F);
  set u = the_inverseOp_wrt F;
A5: u is_distributive_wrt F by A1,A2,A3,Th63;
  let d1,d2,d3,d4;
  thus F.(G.(d1,d2),G.(d3,d4)) = F.(F.(d1,u.d2),G.(d3,d4)) by A4,Th81
    .= F.(F.(d1,u.d2),F.(d3,u.d4)) by A4,Th81
    .= F.(d1,F.(u.d2,F.(d3,u.d4))) by A2
    .= F.(d1,F.(F.(u.d2,d3),u.d4)) by A2
    .= F.(d1,F.(F.(d3,u.d2),u.d4)) by A1
    .= F.(d1,F.(d3,F.(u.d2,u.d4))) by A2
    .= F.(F.(d1,d3),F.(u.d2,u.d4)) by A2
    .= F.(F.(d1,d3),u.(F.(d2,d4))) by A5
    .= G.(F.(d1,d3),F.(d2,d4)) by A4,Th81;
end;
