reserve x,y for object;
reserve S for non void non empty ManySortedSign,
  o for OperSymbol of S,
  U0,U1, U2 for MSAlgebra over S;
reserve U0 for non-empty MSAlgebra over S;

theorem Th29:
  MSAlg_join(U0) is commutative
proof
  set o = MSAlg_join(U0);
  for x,y be Element of MSSub(U0) holds o.(x,y)=o.(y,x)
  proof
    let x,y be Element of MSSub(U0);
    reconsider U1=x,U2=y as strict MSSubAlgebra of U0 by Def19;
    set B=(the Sorts of U1) (\/) (the Sorts of U2);
    the Sorts of U2 is MSSubset of U0 by Def9;
    then
A1: the Sorts of U2 c= the Sorts of U0 by PBOOLE:def 18;
    the Sorts of U1 is MSSubset of U0 by Def9;
    then the Sorts of U1 c=the Sorts of U0 by PBOOLE:def 18;
    then B c= the Sorts of U0 by A1,PBOOLE:16;
    then reconsider B as MSSubset of U0 by PBOOLE:def 18;
A2: U1"\/" U2 = GenMSAlg(B) by Def18;
    o.(x,y) = U1 "\/" U2 & o.(y,x) = U2 "\/" U1 by Def20;
    hence thesis by A2,Def18;
  end;
  hence thesis by BINOP_1:def 2;
end;
