reserve i for Nat,
  j for Element of NAT,
  X,Y,x,y,z for set;
reserve C for initialized ConstructorSignature,
  s for SortSymbol of C,
  o for OperSymbol of C,
  c for constructor OperSymbol of C;
reserve a,b for expression of C, an_Adj C;
reserve t, t1,t2 for expression of C, a_Type C;
reserve p for FinSequence of QuasiTerms C;
reserve e for expression of C;
reserve a,a9 for expression of C, an_Adj C;
reserve q for pure expression of C, a_Type C,
  A for finite Subset of QuasiAdjs C;
reserve T for quasi-type of C;

theorem Th88:
  for p being DTree-yielding FinSequence st e = [c, the carrier of C]-tree p
  holds variables_in e =
  union {variables_in t where t is quasi-term of C: t in rng p}
proof
  let p be DTree-yielding FinSequence;
  set X = {variables_in t where t is quasi-term of C: t in rng p};
  assume
A1: e = [c, the carrier of C]-tree p;
  then p in (QuasiTerms C)* by Th51;
  then p is FinSequence of QuasiTerms C by FINSEQ_1:def 11;
  then
A2: rng p c= QuasiTerms C by FINSEQ_1:def 4;
  thus variables_in e c= union X
  proof
    let a be object;
    assume a in variables_in e;
    then consider t being DecoratedTree such that
A3: t in rng p and
A4: a in (C variables_in t).a_Term C by A1,MSAFREE3:11;
    reconsider t as quasi-term of C by A2,A3,Th41;
    variables_in t in X by A3;
    hence thesis by A4,TARSKI:def 4;
  end;
  let a be object;
  assume a in union X;
  then consider Y being set such that
A5: a in Y and
A6: Y in X by TARSKI:def 4;
  ex t being quasi-term of C st Y = variables_in t & t in rng p by A6;
  hence thesis by A1,A5,MSAFREE3:11;
end;
