reserve I,J for set,i,j,x for object,
  S for non empty ManySortedSign;

theorem Th3:
  for S be non void non empty ManySortedSign, U0 be MSAlgebra over
  S, o be OperSymbol of S holds Args(o,U0) = product ((the Sorts of U0)*(
the_arity_of o)) & dom ((the Sorts of U0)*(the_arity_of o)) = dom (the_arity_of
  o) & Result(o,U0) = (the Sorts of U0).(the_result_sort_of o)
proof
  let S be non void non empty ManySortedSign, U0 be MSAlgebra over S, o be
  OperSymbol of S;
  set So = the Sorts of U0, Ar = the Arity of S, Rs = the ResultSort of S, ar
= the_arity_of o, AS = So# * Ar, RS = So * Rs, X = the carrier' of S, Cr = the
  carrier of S;
A1: dom Ar = X by FUNCT_2:def 1;
  then
A2: dom AS = dom Ar by PARTFUN1:def 2;
  thus Args(o,U0) = AS.o by MSUALG_1:def 4
    .=(So# qua ManySortedSet of Cr*).(Ar.o) by A1,A2,FUNCT_1:12
    .=((So)# qua ManySortedSet of Cr*).(the_arity_of o) by MSUALG_1:def 1
    .= product ((So)*(the_arity_of o)) by FINSEQ_2:def 5;
  rng ar c= Cr & dom So = Cr by FINSEQ_1:def 4,PARTFUN1:def 2;
  hence dom (So*ar) = dom ar by RELAT_1:27;
A3: dom Rs = X by FUNCT_2:def 1;
  then
A4: dom RS = dom Rs by PARTFUN1:def 2;
  thus Result(o,U0) = RS.o by MSUALG_1:def 5
    .= So.(Rs.o) by A3,A4,FUNCT_1:12
    .= So.the_result_sort_of o by MSUALG_1:def 2;
end;
