reserve X,Y,Z,X1,X2,Y1,Y2 for set, x,y,z,t,x1,x2 for object,
  f,g,h,f1,f2,g1,g2 for Function;

theorem Th41:
  rng f c= Funcs(X,Y) & X <> {} implies curry uncurry f = f &
  curry' uncurry' f = f
proof
  assume that
A1: rng f c= Funcs(X,Y) and
A2: X <> {};
A3: dom uncurry f = [:dom f,X:] by A1,Th19;
A4: now
A5: now
      let x be object;
      assume
A6:   x in dom f;
      then consider h such that
A7:   (curry uncurry f).x = h & dom h = X & rng h c= rng uncurry f and
A8:   y in X implies h.y = (uncurry f).(x,y) by A2,A3,Th22;
      f.x in rng f by A6,FUNCT_1:def 3;
      then consider g such that
A9:   f.x = g & dom g = X and
      rng g c= Y by A1,FUNCT_2:def 2;
      now
        let y be object;
        assume
A10:    y in X;
        then (uncurry f).(x,y) = g.y by A6,A9,Th31;
        hence g.y = h.y by A8,A10;
      end;
      hence f.x = (curry uncurry f).x by A9,A7,FUNCT_1:2;
    end;
    assume dom f <> {};
    then dom curry uncurry f = dom f by A2,A3,Th17;
    hence curry uncurry f = f by A5;
  end;
A11: now
    assume dom f = {};
    then dom uncurry f = {} & f = {} by A3;
    hence curry uncurry f = f by Th35,RELAT_1:41;
  end;
  hence curry uncurry f = f by A4;
  thus thesis by A3,A11,A4,FUNCT_4:52;
end;
