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

theorem Th16:
  for U1 being MSAlgebra over S holds id the Sorts of U1
  is_isomorphism U1,U1 & U1,U1 are_isomorphic
proof
  let U1 be MSAlgebra over S;
A1: id (the Sorts of U1) is_homomorphism U1,U1 by Th9;
  for i be set,f be Function st i in dom id (the Sorts of U1) & (id (the
  Sorts of U1)).i = f holds f is one-to-one
  proof
    let i be set,f be Function;
    assume that
A2: i in dom id (the Sorts of U1) and
A3: (id (the Sorts of U1)).i = f;
    i in the carrier of S by A2,PARTFUN1:def 2;
    then f = id ((the Sorts of U1).i) by A3,Def1;
    hence thesis;
  end;
  then id (the Sorts of U1) is "1-1";
  then
A4: id (the Sorts of U1) is_monomorphism U1,U1 by A1;
  for i be set st i in (the carrier of S) holds rng((id (the Sorts of U1))
  .i) = (the Sorts of U1).i
  proof
    let i be set;
    assume i in (the carrier of S);
    then (id (the Sorts of U1)).i = id ((the Sorts of U1).i) by Def1;
    hence thesis;
  end;
  then id (the Sorts of U1) is "onto";
  then
A5: id (the Sorts of U1) is_epimorphism U1,U1 by A1;
  hence id (the Sorts of U1) is_isomorphism U1,U1 by A4;
  take id (the Sorts of U1);
  thus thesis by A4,A5;
end;
