reserve S for non void non empty ManySortedSign,
  U1, U2, U3 for non-empty MSAlgebra over S,
  I for set,
  A for ManySortedSet of I,
  B, C for non-empty ManySortedSet of I;

theorem Th4:
  for F be ManySortedFunction of A, B for G be ManySortedFunction
  of B, C for X be ManySortedSubset of A holds (G ** F) || X = G ** (F || X)
proof
  let F be ManySortedFunction of A, B, G be ManySortedFunction of B, C, X be
  ManySortedSubset of A;
  now
    let i be object;
    assume
A1: i in I;
    then reconsider gf = (G ** F).i as Function of A.i, C.i by PBOOLE:def 15;
    reconsider fx = (F || X).i as Function of X.i, B.i by A1,PBOOLE:def 15;
    reconsider g = G.i as Function of B.i, C.i by A1,PBOOLE:def 15;
    reconsider f = F.i as Function of A.i, B.i by A1,PBOOLE:def 15;
    thus ((G ** F) || X).i = gf | (X.i) by A1,MSAFREE:def 1
      .= (g*f) | (X.i) by A1,MSUALG_3:2
      .= g * (f | (X.i)) by RELAT_1:83
      .= g * fx by A1,MSAFREE:def 1
      .= (G ** (F || X)).i by A1,MSUALG_3:2;
  end;
  hence thesis;
end;
