reserve S for OrderSortedSign;
reserve S for OrderSortedSign,
  X for ManySortedSet of S,
  o for OperSymbol of S ,
  b for Element of ([:the carrier' of S,{the carrier of S}:] \/ Union (coprod X
  ))*;

theorem Th2:
  [[o,the carrier of S],b] in OSREL(X) iff len b = len (
the_arity_of o) & for x be set st x in dom b holds (b.x in [:the carrier' of S,
{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier of S]
  = b.x holds (the_result_sort_of o1) <= (the_arity_of o)/.x) & (b.x in Union (
coprod X) implies ex i being Element of S st i <= (the_arity_of o)/.x & b.x in
  coprod(i,X))
proof
  defpred P[OperSymbol of S,Element of ([:the carrier' of S,{the carrier of S}
  :] \/ Union (coprod X))*] means len $2 = len (the_arity_of $1) & for x be set
st x in dom $2 holds ($2.x in [:the carrier' of S,{the carrier of S}:] implies
  for o1 be OperSymbol of S st [o1,the carrier of S] = $2.x holds
  the_result_sort_of o1 <= (the_arity_of $1)/.x) & ($2.x in Union (coprod X)
implies ex i being Element of S st i <= (the_arity_of $1)/.x & b.x in coprod(i,
  X));
  set a = [o,the carrier of S];
  the carrier of S in {the carrier of S} by TARSKI:def 1;
  then
A1: a in [:the carrier' of S,{the carrier of S}:] by ZFMISC_1:87;
  then reconsider
  a as Element of [:the carrier' of S,{the carrier of S}:] \/ Union
  (coprod X) by XBOOLE_0:def 3;
  thus [[o,the carrier of S],b] in OSREL(X) implies P[o,b]
  proof
    assume [[o,the carrier of S],b] in OSREL(X);
    then for o1 be OperSymbol of S st [o1,the carrier of S] = a holds P[o1,b]
    by Def4;
    hence thesis;
  end;
  assume
A2: P[o,b];
  now
    let o1 be OperSymbol of S;
    assume [o1,the carrier of S] = a;
    then o1 = o by XTUPLE_0:1;
    hence P[o1,b] by A2;
  end;
  hence thesis by A1,Def4;
end;
