reserve a, I for set,
  S for non empty non void ManySortedSign;

theorem
  for X being non-empty ManySortedSet of the carrier of S holds Reverse
  X is "1-1"
proof
  let X be non-empty ManySortedSet of the carrier of S;
  for i being set st i in the carrier of S holds (Reverse X).i is one-to-one
  proof
    set D = DTConMSA X;
    let i be set;
    assume i in the carrier of S;
    then reconsider s = i as SortSymbol of S;
    set f = (Reverse X).s;
    let x1,x2 be object such that
A1: x1 in dom ((Reverse X).i) and
A2: x2 in dom ((Reverse X).i) and
A3: ((Reverse X).i).x1 = ((Reverse X).i).x2;
A4: f = Reverse(s,X) by MSAFREE:def 18;
    then
A5: dom f = FreeGen(s,X) by FUNCT_2:def 1;
    then consider a2 being set such that
A6: a2 in X.s and
A7: x2 = root-tree [a2,s] by A2,MSAFREE:def 15;
A8: [a2,s] in Terminals D by A6,MSAFREE:7;
    then reconsider t2 = [a2,s] as Symbol of D;
    t2`2 = s;
    then root-tree t2 in {root-tree tt where tt is Symbol of D : tt in
    Terminals D & tt`2 = s} by A8;
    then root-tree t2 in FreeGen(s,X) by MSAFREE:13;
    then
A9: f.x2 = [a2,s]`1 by A4,A7,MSAFREE:def 17
      .= a2;
    consider a1 being set such that
A10: a1 in X.s and
A11: x1 = root-tree [a1,s] by A1,A5,MSAFREE:def 15;
A12: [a1,s] in Terminals D by A10,MSAFREE:7;
    then reconsider t1 = [a1,s] as Symbol of D;
    t1`2 = s;
    then root-tree t1 in {root-tree tt where tt is Symbol of D : tt in
    Terminals D & tt`2 = s} by A12;
    then root-tree t1 in FreeGen(s,X) by MSAFREE:13;
    then f.x1 = [a1,s]`1 by A4,A11,MSAFREE:def 17
      .= a1;
    hence thesis by A3,A11,A7,A9;
  end;
  hence thesis by MSUALG_3:1;
end;
