reserve S for non void non empty ManySortedSign,
  U1,U2 for MSAlgebra over S,
  o for OperSymbol of S,
  n for Nat;

theorem Th9:
  for U1 being MSAlgebra over S holds
    id (the Sorts of U1) is_homomorphism U1,U1
proof
  let U1 be MSAlgebra over S;
  set F = id (the Sorts of U1);
  let o be OperSymbol of S;
  assume
A1: Args(o,U1) <> {};
  let x be Element of Args(o,U1);
A2: F#x = x by A1,Th7;
  set r = the_result_sort_of o;
A3: F.r = id ((the Sorts of U1).r) by Def1;
  rng (the ResultSort of S) c= the carrier of S by RELAT_1:def 19;
  then rng (the ResultSort of S) c= dom (the Sorts of U1) by PARTFUN1:def 2;
  then
A4: Result(o,U1) = ((the Sorts of U1)*(the ResultSort of S)).o & dom ((the
  Sorts of U1)*(the ResultSort of S)) = dom (the ResultSort of S) by
MSUALG_1:def 5,RELAT_1:27;
  o in the carrier' of S;
  then o in dom (the ResultSort of S) by FUNCT_2:def 1;
  then
A5: Result(o,U1) = (the Sorts of U1).((the ResultSort of S).o) by A4,FUNCT_1:12
    .= (the Sorts of U1).r by MSUALG_1:def 2;
  per cases;
  suppose
    Result(o,U1) <> {};
    then dom Den(o,U1) = Args(o,U1) by FUNCT_2:def 1;
    then rng Den(o,U1) c= Result(o,U1) & Den(o,U1).x in rng Den(o,U1) by A1,
FUNCT_1:def 3,RELAT_1:def 19;
    hence thesis by A2,A3,A5,FUNCT_1:18;
  end;
  suppose
A6: Result(o,U1) = {};
    then dom Den(o,U1) = {};
    then
A7: Den(o,U1).x = {} by FUNCT_1:def 2;
    dom (F.r) = {} by A5,A6;
    then (F.r).{} = {} by FUNCT_1:def 2;
    hence thesis by A1,A7,Th7;
  end;
end;
