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

theorem Th14:
  for U1,U2 being non-empty MSAlgebra over S for H be
  ManySortedFunction of U1,U2, H1 be ManySortedFunction of U2,U1 st H
  is_isomorphism U1,U2 & H1 = H"" holds H1 is_isomorphism U2,U1
proof
  let U1,U2 be non-empty MSAlgebra over S;
  let H be ManySortedFunction of U1,U2,H1 be ManySortedFunction of U2,U1;
  assume that
A1: H is_isomorphism U1,U2 and
A2: H1 = H"";
A3: H1 is_homomorphism U2,U1 by A1,A2,Lm2;
  H is_monomorphism U1,U2 by A1;
  then
A4: H is "1-1";
  H is_epimorphism U1,U2 by A1;
  then
A5: H is "onto";
  for i be set, g be Function st i in dom H1 & g = H1.i holds g is one-to-one
  proof
    let i be set;
    let g be Function;
    assume that
A6: i in dom H1 and
A7: g = H1.i;
A8: i in the carrier of S by A6,PARTFUN1:def 2;
    then reconsider
    f = H.i as Function of (the Sorts of U1).i,(the Sorts of U2).i
    by PBOOLE:def 15;
    i in dom H by A8,PARTFUN1:def 2;
    then f is one-to-one by A4;
    then f" is one-to-one;
    hence thesis by A2,A4,A5,A7,A8,Def4;
  end;
  then H1 is "1-1";
  then
A9: H1 is_monomorphism U2,U1 by A3;
  for i be set st i in (the carrier of S) holds rng(H1.i) = (the Sorts of U1).i
  proof
    let i be set;
    assume
A10: i in (the carrier of S);
    then reconsider
    f = H.i as Function of (the Sorts of U1).i,(the Sorts of U2).i
    by PBOOLE:def 15;
    i in dom H by A10,PARTFUN1:def 2;
    then f is one-to-one by A4;
    then rng (f") = dom f by FUNCT_1:33;
    then rng (f") = (the Sorts of U1).i by A10,FUNCT_2:def 1;
    hence thesis by A2,A4,A5,A10,Def4;
  end;
  then H1 is "onto";
  then H1 is_epimorphism U2,U1 by A3;
  hence thesis by A9;
end;
