reserve X,X1,X2,Y,Y1,Y2 for set, p,x,x1,x2,y,y1,y2,z,z1,z2 for object;
reserve f,g,g1,g2,h for Function,
  R,S for Relation;

theorem
  for h st (for x holds x in dom h iff x in dom f & f.x in dom g) & (for
  x st x in dom h holds h.x = g.(f.x)) holds h = g*f
proof
  let h;
  assume that
A1: for x holds x in dom h iff x in dom f & f.x in dom g and
A2: for x st x in dom h holds h.x = g.(f.x);
  now
    let x,y be object;
    hereby
      assume
A3:   [x,y] in h;
      then
A4:   x in dom h by XTUPLE_0:def 12;
      then
A5:   f.x in dom g by A1;
      reconsider y1 = f.x as object;
      take y1;
      x in dom f by A1,A4;
      hence [x,y1] in f by Def2;
    reconsider yy=y as set by TARSKI:1;
      yy = h.x by A3,A4,Def2
        .= g.(f.x) by A2,A4;
      hence [y1,y] in g by A5,Def2;
    end;
    given z being object such that
A6: [x,z] in f and
A7: [z,y] in g;
A8: x in dom f by A6,XTUPLE_0:def 12;
    reconsider z as set by TARSKI:1;
A9: z = f.x by A6,Def2,A8;
A10: z in dom g by A7,XTUPLE_0:def 12;
    then
A11: x in dom h by A1,A8,A9;
    reconsider yy=y as set by TARSKI:1;
    yy = g.z by A7,A10,Def2;
    then y = h.x by A2,A9,A11;
    hence [x,y] in h by A11,Def2;
  end;
  hence thesis by RELAT_1:def 8;
end;
