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;
