reserve S for non void non empty ManySortedSign,
  U0 for MSAlgebra over S;
reserve S for non void non empty ManySortedSign,
  X for ManySortedSet of the carrier of S,
  o for OperSymbol of S,
  b for Element of ([:the carrier' of S,{the
  carrier of S}:] \/ Union (coprod X))*;
reserve x for set;

theorem
  for S be non void non empty ManySortedSign, X be non-empty
  ManySortedSet of the carrier of S holds union rng FreeGen(X) = {root-tree t
  where t is Symbol of DTConMSA(X): t in Terminals DTConMSA(X)}
proof
  let S be non void non empty ManySortedSign, X be non-empty ManySortedSet of
  the carrier of S;
  set D = DTConMSA(X), A = union rng FreeGen(X), B = {root-tree t where t is
  Symbol of D : t in Terminals D};
  thus A c= B
  proof
    let x be object;
    assume x in A;
    then consider C be set such that
A1: x in C and
A2: C in rng FreeGen(X) by TARSKI:def 4;
    consider s be object such that
A3: s in dom FreeGen(X) and
A4: (FreeGen(X)).s = C by A2,FUNCT_1:def 3;
    reconsider s as SortSymbol of S by A3;
    C = FreeGen(s,X) by A4,Def16
      .= {root-tree t where t is Symbol of D : t in Terminals D & t`2 = s}
    by Th13;
    then
    ex t be Symbol of D st x = root-tree t & t in Terminals D & t`2 = s by A1;
    hence thesis;
  end;
  let x be object;
  assume x in B;
  then consider t be Symbol of D such that
A5: x = root-tree t and
A6: t in Terminals D;
  consider s be SortSymbol of S, a be set such that
  a in X.s and
A7: t = [a,s] by A6,Th7;
  t`2 = s by A7;
  then
  x in {root-tree tt where tt is Symbol of D : tt in Terminals D & tt`2 =
  s} by A5,A6;
  then x in FreeGen(s,X) by Th13;
  then
A8: x in (FreeGen(X)).s by Def16;
  dom FreeGen(X) = the carrier of S by PARTFUN1:def 2;
  then (FreeGen(X)).s in rng (FreeGen(X)) by FUNCT_1:def 3;
  hence thesis by A8,TARSKI:def 4;
end;
