reserve i,j for Nat;
reserve i,j for Nat,
  x for variable,
  l for quasi-loci;
reserve C for initialized ConstructorSignature,
  c for constructor OperSymbol of C;
reserve a,a9 for quasi-adjective,
  t,t1,t2 for quasi-term,
  T for quasi-type,

  c for Element of Constructors;

theorem Th58:
  for l for s being SortSymbol of MaxConstrSign
  for m being constructor OperSymbol of s st len the_arity_of m = len l
  holds variables_in (m-trm args l) = rng l
  proof
    let l; set X = rng l;
    set n = len l;
    set C = MaxConstrSign;
    let s be SortSymbol of C;
    let m be constructor OperSymbol of s such that
A1: len the_arity_of m = n;
    set p = args l;
    set Y = {variables_in t where t is quasi-term of C: t in rng p};
A2: len p = len the_arity_of m by A1,Def18; then
A3: variables_in (m-trm p) = union Y by ABCMIZ_1:90;
A4: dom p = dom l by A1,A2,FINSEQ_3:29;
    thus variables_in (m-trm p) c= X
    proof
      let s be object; assume s in variables_in (m-trm p); then
      consider A being set such that
A5:   s in A & A in Y by A3,TARSKI:def 4;
      consider t being quasi-term of C such that
A6:   A = variables_in t & t in rng p by A5;
      consider z being object such that
A7:   z in dom p & t = p.z by A6,FUNCT_1:def 3;
      reconsider z as Element of NAT by A7;
      l.z = l/.z by A4,A7,PARTFUN1:def 6; then
A8:   l/.z in X by A4,A7,FUNCT_1:def 3;
      p.z = (l/.z)-term C by A4,A7,Def18; then
      A = {l/.z} by A6,A7,ABCMIZ_1:86;
      hence thesis by A5,A8,TARSKI:def 1;
    end;
    let s be object; assume s in X; then
    consider z being object such that
A9: z in dom l & s = l.z by FUNCT_1:def 3;
    reconsider z as Element of NAT by A9;
    set t = (l/.z)-term C;
    p.z = t & l.z = l/.z by A9,Def18,PARTFUN1:def 6; then
    variables_in t = {s} & t in rng p by A4,A9,ABCMIZ_1:86,FUNCT_1:def 3; then
    s in {s} & {s} in Y by TARSKI:def 1;
    hence thesis by A3,TARSKI:def 4;
  end;
