
theorem Th24:
  for S1,S2 being non void non empty ManySortedSign for f,g being
  Function st f,g form_morphism_between S1,S2 for A being MSAlgebra over S2 for
o1 being OperSymbol of S1, o2 being OperSymbol of S2 st o2 = g.o1 holds Args(o2
  ,A) = Args(o1,A|(S1,f,g)) & Result(o1,A|(S1,f,g)) = Result(o2,A)
proof
  let S1,S2 be non void non empty ManySortedSign;
  let f,g be Function such that
A1: f,g form_morphism_between S1,S2;
A2: dom f = the carrier of S1 by A1;
  let A be MSAlgebra over S2;
  let o1 be OperSymbol of S1, o2 be OperSymbol of S2;
  assume
A3: o2 = g.o1;
  thus Args(o2,A) = product ((the Sorts of A)*the_arity_of o2) by PRALG_2:3
    .= product ((the Sorts of A)*(f*the_arity_of o1)) by A1,A3
    .= product ((the Sorts of A)*f*the_arity_of o1) by RELAT_1:36
    .= product ((the Sorts of A|(S1,f,g))*the_arity_of o1) by A1,Def3
    .= Args(o1,A|(S1,f,g)) by PRALG_2:3;
  dom g = the carrier' of S1 by A1;
  then the_result_sort_of o2 = ((the ResultSort of S2)*g).o1 by A3,FUNCT_1:13
    .= (f*the ResultSort of S1).o1 by A1
    .= f.the_result_sort_of o1 by FUNCT_2:15;
  hence Result(o2,A) = (the Sorts of A).(f.the_result_sort_of o1) by PRALG_2:3
    .= ((the Sorts of A)*f).the_result_sort_of o1 by A2,FUNCT_1:13
    .= (the Sorts of A|(S1,f,g)).the_result_sort_of o1 by A1,Def3
    .= Result(o1,A|(S1,f,g)) by PRALG_2:3;
end;
