reserve x, y for object, X, X1, X2 for set;
reserve Y, Y1, Y2 for complex-functions-membered set,
  c, c1, c2 for Complex,
  f for PartFunc of X,Y,
  f1 for PartFunc of X1,Y1,
  f2 for PartFunc of X2, Y2,
  g, h, k for complex-valued Function;

theorem
  (f <##> f1) <##> f2 = f <##> (f1 <##> f2)
proof
  set f3 = f<##>f1, f4 = f1<##>f2;
A1: dom(f3<##>f2) = dom f3 /\ dom f2 by Def47;
A2: dom(f<##>f4) = dom f /\ dom f4 by Def47;
  dom f3 = dom f /\ dom f1 & dom f4 = dom f1 /\ dom f2 by Def47;
  hence
A3: dom(f3<##>f2) = dom(f<##>f4) by A1,A2,XBOOLE_1:16;
  let x be object;
  assume
A4: x in dom(f3<##>f2);
  then
A5: x in dom f4 by A2,A3,XBOOLE_0:def 4;
A6: x in dom f3 by A1,A4,XBOOLE_0:def 4;
  thus (f3<##>f2).x = f3.x (#) f2.x by A4,Def47
    .= f.x (#) f1.x (#) f2.x by A6,Def47
    .= f.x (#) (f1.x (#) f2.x) by RFUNCT_1:9
    .= f.x (#) f4.x by A5,Def47
    .= (f<##>f4).x by A3,A4,Def47;
end;
