reserve i for Nat, x,y for set;
reserve S for non empty non void ManySortedSign;
reserve X for non-empty ManySortedSet of S;

theorem
  for S being non empty non void ManySortedSign
  for X being non-empty ManySortedSet of the carrier of S
  for A being vf-free all_vars_including (X,S)-terms VarMSAlgebra over S
  for s being SortSymbol of S
  for x being Element of A,s st x in (FreeGen X).s holds
  vf x = s-singleton(x)
  proof
    let S be non empty non void ManySortedSign;
    let X be non-empty ManySortedSet of the carrier of S;
    let A be vf-free all_vars_including (X,S)-terms VarMSAlgebra over S;
    let s be SortSymbol of S;
    let x be Element of A,s;
    assume x in (FreeGen X).s; then
    x in FreeGen(s,X) by MSAFREE:def 16; then
    consider a being set such that
A1: a in X.s & x = root-tree [a,s] by MSAFREE:def 15;
A2: dom root-tree [a,s] = {{}} & (root-tree [a,s]).{} = [a,s]
    by TREES_4:3,TREES_1:29;
A3: [a,s]`2 = s;
    now
      let y be object; assume y in the carrier of S; then
      reconsider r = y as SortSymbol of S;
A4:   {x|p where p is Element of dom x: ((x|p).{})`2 = r} = (s-singletonx).y
      proof
        thus
        {x|p where p is Element of dom x: ((x|p).{})`2 = r} c= (s-singletonx).y
        proof
          let z be object; assume
          z in {x|p where p is Element of dom x: ((x|p).{})`2 = r}; then
          consider p being Element of dom x such that
A5:       z = x|p & ((x|p).{})`2 = r;
          p = {} by A1,A2; then
A6:       z = x by A5,TREES_9:1; then
          (s-singletonx).r = {x} by A1,A2,A5,Th6;
          hence z in (s-singletonx).y by A6,TARSKI:def 1;
        end;
        let z be object;
        reconsider p = {} as Element of dom x by A1,A2,TARSKI:def 1;
        assume
A7:     z in (s-singletonx).y; then
A8:     r = s by Th6; then
        z in {x} by A7,Th6; then
A9:     z = x by TARSKI:def 1; then
        z = x|p by TREES_9:1;
        hence thesis by A1,A2,A3,A9,A8;
      end;
      thus (vf x).y = (s-singletonx).y by A4,Def11;
    end;
    hence vf x = s-singleton(x);
  end;
