reserve S for non void non empty ManySortedSign,
  U1, U2, U3 for non-empty MSAlgebra over S,
  I for set,
  A for ManySortedSet of I,
  B, C for non-empty ManySortedSet of I;

theorem Th14:
  for X be non-empty ManySortedSet of the carrier of S for h1, h2
be ManySortedFunction of FreeMSA X, U1 st h1 is_homomorphism FreeMSA X, U1 & h2
is_homomorphism FreeMSA X, U1 & h1 || FreeGen (X) = h2 || FreeGen (X) holds h1
  = h2
proof
  let X be non-empty ManySortedSet of the carrier of S, h1, h2 be
  ManySortedFunction of FreeMSA X, U1;
  assume that
A1: h1 is_homomorphism FreeMSA X, U1 and
A2: h2 is_homomorphism FreeMSA X, U1 and
A3: h1 || FreeGen (X) = h2 || FreeGen (X);
A4: h2 is_homomorphism FreeMSA X, U1 by A2;
  defpred P[SortSymbol of S,set,set] means h1.$1.$3 = $2;
A5: for s be SortSymbol of S, x, y be set st y in FreeGen(s,X) holds h2.s.y
  = x iff P[s,x,y]
  proof
    set FG = FreeGen X;
    let s be SortSymbol of S, x, y be set;
    assume y in FreeGen(s, X);
    then
A6: y in FG.s by MSAFREE:def 16;
A7: (h1 || FG).s = (h1.s) | (FG.s) & (h2 || FG).s = (h2.s) | (FG.s) by
MSAFREE:def 1;
    ((h1.s) | (FG.s)).y = h1.s.y by A6,FUNCT_1:49;
    hence thesis by A3,A7,A6,FUNCT_1:49;
  end;
A8: for s be SortSymbol of S, x, y be set st y in FreeGen(s,X) holds h1.s.y
  = x iff P[s,x,y];
A9: h1 is_homomorphism FreeMSA X, U1 by A1;
  thus h1 = h2 from MSAFREE1:sch 3 (A9, A8, A4, A5);
end;
