
theorem
  for R,S,T being complete LATTICE ex f being Function of UPS(R, UPS(S,
  T)), UPS([:R,S:], T) st f is uncurrying isomorphic
proof
  deffunc F(Function) = uncurry $1;
  let R,S,T be complete LATTICE;
  consider F being ManySortedSet of the carrier of UPS(R, UPS(S, T)) such that
A1: for f being Element of UPS(R, UPS(S, T)) holds F.f = F(f) from
  PBOOLE:sch 5;
A2: dom F = the carrier of UPS(R, UPS(S, T)) by PARTFUN1:def 2;
A3: rng F c= the carrier of UPS([:R,S:], T)
  proof
    let g be object;
    assume g in rng F;
    then consider f being object such that
A4: f in dom F and
A5: g = F.f by FUNCT_1:def 3;
    reconsider f as directed-sups-preserving Function of R, UPS(S, T) by A4
,Def4;
    g = uncurry f by A1,A4,A5;
    then g is directed-sups-preserving Function of [:R, S:], T by Th45;
    hence thesis by Def4;
  end;
  then reconsider F as Function of UPS(R, UPS(S, T)), UPS([:R,S:], T) by A2,
FUNCT_2:2;
  take F;
  thus
A6: F is uncurrying
  proof
    hereby
      let x be set;
      assume x in dom F;
      then x is Function of R, UPS(S, T) by Def4;
      hence x is Function-yielding Function;
    end;
    thus thesis by A1,A2;
  end;
  deffunc F(Function) = curry $1;
  consider G being ManySortedSet of the carrier of UPS([:R,S:], T) such that
A7: for f being Element of UPS([:R,S:], T) holds G.f = F(f) from PBOOLE
  :sch 5;
A8: dom G = the carrier of UPS([:R,S:], T) by PARTFUN1:def 2;
A9: rng G c= the carrier of UPS(R, UPS(S, T))
  proof
    let g be object;
    assume g in rng G;
    then consider f being object such that
A10: f in dom G and
A11: g = G.f by FUNCT_1:def 3;
    reconsider f as directed-sups-preserving Function of [:R,S:], T by A10,Def4
;
    g = curry f by A7,A10,A11;
    then g is directed-sups-preserving Function of R, UPS(S,T) by Th46;
    hence thesis by Def4;
  end;
  then reconsider G as Function of UPS([:R,S:], T), UPS(R, UPS(S, T)) by A8,
FUNCT_2:2;
  UPS(S, T) is full SubRelStr of T|^the carrier of S by Def4;
  then
A12: UPS(S, T)|^the carrier of R is full SubRelStr of (T|^the carrier of S)
  |^the carrier of R by YELLOW16:39;
  UPS(R, UPS(S, T)) is full SubRelStr of UPS(S, T)|^the carrier of R by Def4;
  then
A13: UPS(R, UPS(S, T)) is full non empty SubRelStr of (T|^the carrier of S)
  |^the carrier of R by A12,YELLOW16:26;
  the carrier of [:R,S:] = [:the carrier of R, the carrier of S:] by
YELLOW_3:def 2;
  then
A14: UPS([:R,S:], T) is full non empty SubRelStr of T|^[:the carrier of R,
  the carrier of S:] by Def4;
  then
A15: F is monotone by A6,A13,Th20;
A16: G is currying
  proof
    hereby
      let x be set;
      assume x in dom G;
      then reconsider f = x as Function of [:R, S:], T by Def4;
      proj1 f = the carrier of [:R, S:] by FUNCT_2:def 1
        .= [:the carrier of R, the carrier of S:] by YELLOW_3:def 2;
      hence x is Function & proj1 x is Relation;
    end;
    thus thesis by A7,A8;
  end;
  then
A17: G is monotone by A13,A14,Th21;
  the carrier of (T|^the carrier of S)|^the carrier of R = Funcs(the
  carrier of R, the carrier of T|^the carrier of S) by YELLOW_1:28
    .= Funcs(the carrier of R, Funcs(the carrier of S, the carrier of T)) by
YELLOW_1:28;
  then the carrier of UPS(R, UPS(S, T)) c= Funcs(the carrier of R, Funcs(the
  carrier of S, the carrier of T)) by A13,YELLOW_0:def 13;
  then
A18: G*F = id UPS(R, UPS(S, T)) by A2,A3,A8,A6,A16,Th4;
  the carrier of T|^[:the carrier of R, the carrier of S:] = Funcs([:the
  carrier of R, the carrier of S:], the carrier of T) by YELLOW_1:28;
  then
  the carrier of UPS([:R,S:], T) c= Funcs([:the carrier of R, the carrier
  of S:], the carrier of T) by A14,YELLOW_0:def 13;
  then F*G = id UPS([:R,S:], T) by A2,A8,A9,A6,A16,Th5;
  hence thesis by A18,A15,A17,YELLOW16:15;
end;
