
theorem
  for S being non void non empty ManySortedSign, X being non-empty
  finite-yielding ManySortedSet of the carrier of S holds FreeMSA X is
  finitely-generated
proof
  let S be non void non empty ManySortedSign, X be non-empty finite-yielding
  ManySortedSet of the carrier of S;
  per cases;
  case
    S is non void;
    reconsider G = FreeGen X as GeneratorSet of FreeMSA X;
    let S9 be non void non empty ManySortedSign such that
A1: S9 = S;
    let A be MSAlgebra over S9;
    assume A = FreeMSA X;
    then reconsider G as GeneratorSet of A by A1;
    take G;
    thus G is finite-yielding
    proof
      let i be object;
      reconsider Gi = G.i as set;
      assume i in the carrier of S9;
      then reconsider iS = i as SortSymbol of S by A1;
      reconsider Xi = X.iS as non empty finite set;
      now
        defpred P[object,object] means $1 = root-tree [$2,i];
A2:     for e being object st e in Gi
          ex u being object st u in Xi & P[e,u]
        proof
A3:       Gi = FreeGen(iS,X) by MSAFREE:def 16;
          let e be object;
          assume e in Gi;
          then consider u being set such that
A4:       u in Xi & e = root-tree[u,i] by A3,MSAFREE:def 15;
          take u;
          thus thesis by A4;
        end;
        consider f being Function such that
A5:     dom f = Gi and
A6:     rng f c= Xi and
A7:     for e being object st e in Gi holds P[e,f.e] from FUNCT_1:sch 6
        (A2);
        take f;
        f is one-to-one
        proof
          let x1, x2 be object;
          assume that
A8:       x1 in dom f and
A9:       x2 in dom f and
A10:      f.x1 = f.x2;
          thus x1 = root-tree[f.x2,i] by A5,A7,A8,A10
            .= x2 by A5,A7,A9;
        end;
        hence
        ex f being Function st f is one-to-one & dom f = Gi & rng f c= Xi
        by A5,A6;
      end;
      then card Gi c= card Xi or card Gi in card Xi by CARD_1:10;
      hence thesis by CARD_2:49;
    end;
  end;
  case
    S is void;
    hence thesis;
  end;
end;
