reserve S for non empty non void ManySortedSign,
  A for MSAlgebra over S;
reserve A for non-empty MSAlgebra over S;

theorem Th25:
  for A1,A2 being non-empty MSAlgebra over S for h being
  ManySortedFunction of A1,A2 st h is_homomorphism A1,A2 for s1,s2 being
SortSymbol of S st TranslationRel S reduces s1,s2 for t being Translation of A1
  ,s1,s2 ex T being Translation of A2,s1,s2 st T*(h.s1) = (h.s2)*t
proof
  let A1,A2 be non-empty MSAlgebra over S;
  let h be ManySortedFunction of A1,A2 such that
A1: h is_homomorphism A1,A2;
  defpred P[Function, SortSymbol of S, SortSymbol of S] means ex T being
  Translation of A2,$2,$3 st T*(h.$2) = (h.$3)*$1;
A2: for s1,s2,s3 being SortSymbol of S st TranslationRel S reduces s1,s2 for
  t being Translation of A1,s1,s2 st P[t,s1,s2] for f being Function st f
  is_e.translation_of A1,s2,s3 holds P[f*t,s1,s3]
  proof
    let s1,s2,s3 be SortSymbol of S such that
A3: TranslationRel S reduces s1,s2;
    let t be Translation of A1,s1,s2;
    given T being Translation of A2,s1,s2 such that
A4: T*(h.s1) = (h.s2)*t;
    let f be Function;
    assume f is_e.translation_of A1,s2,s3;
    then consider
    T1 being Function of (the Sorts of A2).s2, (the Sorts of A2) .s3
    such that
A5: T1 is_e.translation_of A2,s2,s3 and
A6: T1*(h.s2) = (h.s3)*f by A1,Th23;
    reconsider T2 = T1*T as Translation of A2,s1,s3 by A3,A5,Th19;
    take T2;
    thus T2*(h.s1) = T1*(T*(h.s1)) by RELAT_1:36
      .= (h.s3)*f*t by A4,A6,RELAT_1:36
      .= (h.s3)*(f*t) by RELAT_1:36;
  end;
A7: for s being SortSymbol of S holds P[id ((the Sorts of A1).s),s,s]
  proof
    let s be SortSymbol of S;
A8: (id ((the Sorts of A2).s))*(h.s) = h.s by FUNCT_2:17;
A9: (h.s)*(id ((the Sorts of A1).s)) = h.s by FUNCT_2:17;
    id ((the Sorts of A2).s) is Translation of A2,s,s by Th16;
    hence thesis by A8,A9;
  end;
  thus for s1,s2 being SortSymbol of S st TranslationRel S reduces s1,s2 for t
  being Translation of A1,s1,s2 holds P[t,s1,s2] from TranslationInd(A7,A2);
end;
