reserve x,y,y1,y2,z,a,b for object, X,Y,Z,V1,V2 for set,
  f,g,h,h9,f1,f2 for Function,
  i for Nat,
  P for Permutation of X,
  D,D1,D2,D3 for non empty set,
  d1 for Element of D1,
  d2 for Element of D2,
  d3 for Element of D3;

theorem
  for A,B,C be set, f be Function st A <> {} & B <> {} & f in Funcs(A,
  Funcs(B,C)) for g,h be Function, x,y be set st x in A & y in B & f.x = g & (
  commute f).y = h holds h.x = g.y & dom h = A & dom g = B & rng h c= C & rng g
  c= C
proof
  let A,B,C be set, f be Function;
  assume that
A1: A <> {} & B <> {} and
A2: f in Funcs(A,Funcs(B,C));
  set uf = uncurry f;
  set cf = commute f;
  let g,h be Function, x,y be set;
  assume that
A3: x in A and
A4: y in B and
A5: f.x = g and
A6: (commute f).y = h;
  commute f in Funcs(B,Funcs(A,C)) by A1,A2,Th50;
  then
A7: ex g be Function st g = cf & dom g = B & rng g c= Funcs(A,C) by
FUNCT_2:def 2;
  then cf.y in rng cf by A4,FUNCT_1:def 3;
  then
A8: ex t be Function st t = h & dom t = A & rng t c= C by A6,A7,FUNCT_2:def 2;
A9: ex g be Function st g = f & dom g = A & rng g c= Funcs(B,C) by A2,
FUNCT_2:def 2;
  then f.x in rng f by A3,FUNCT_1:def 3;
  then
A10: ex t be Function st t = g & dom t = B & rng t c= C by A5,A9,FUNCT_2:def 2;
  then [x,y] in dom uf & uf.(x,y) = g.y by A3,A4,A5,A9,FUNCT_5:38;
  hence thesis by A6,A10,A8,FUNCT_5:22;
end;
