let z be object ; for X, Y being set st [:X,Y:] <> {} holds
( curry ([:X,Y:] --> z) = X --> (Y --> z) & curry' ([:X,Y:] --> z) = Y --> (X --> z) )
let X, Y be set ; ( [:X,Y:] <> {} implies ( curry ([:X,Y:] --> z) = X --> (Y --> z) & curry' ([:X,Y:] --> z) = Y --> (X --> z) ) )
assume A1:
[:X,Y:] <> {}
; ( curry ([:X,Y:] --> z) = X --> (Y --> z) & curry' ([:X,Y:] --> z) = Y --> (X --> z) )
A2:
dom ([:X,Y:] --> z) = [:X,Y:]
;
A4:
now for x being object st x in Y holds
(curry' ([:X,Y:] --> z)) . x = (Y --> (X --> z)) . xlet x be
object ;
( x in Y implies (curry' ([:X,Y:] --> z)) . x = (Y --> (X --> z)) . x )assume A5:
x in Y
;
(curry' ([:X,Y:] --> z)) . x = (Y --> (X --> z)) . xthen consider f being
Function such that A6:
(
(curry' ([:X,Y:] --> z)) . x = f &
dom f = X )
and
rng f c= rng ([:X,Y:] --> z)
and A7:
for
y being
object st
y in X holds
f . y = ([:X,Y:] --> z) . (
y,
x)
by A1, A2, FUNCT_5:32;
(Y --> (X --> z)) . x = X --> z
by A5, FUNCOP_1:7;
hence
(curry' ([:X,Y:] --> z)) . x = (Y --> (X --> z)) . x
by A6, A8;
verum end;
A12:
now for x being object st x in X holds
(curry ([:X,Y:] --> z)) . x = (X --> (Y --> z)) . xlet x be
object ;
( x in X implies (curry ([:X,Y:] --> z)) . x = (X --> (Y --> z)) . x )assume A13:
x in X
;
(curry ([:X,Y:] --> z)) . x = (X --> (Y --> z)) . xthen consider f being
Function such that A14:
(
(curry ([:X,Y:] --> z)) . x = f &
dom f = Y )
and
rng f c= rng ([:X,Y:] --> z)
and A15:
for
y being
object st
y in Y holds
f . y = ([:X,Y:] --> z) . (
x,
y)
by A1, A2, FUNCT_5:29;
(X --> (Y --> z)) . x = Y --> z
by A13, FUNCOP_1:7;
hence
(curry ([:X,Y:] --> z)) . x = (X --> (Y --> z)) . x
by A14, A16;
verum end;
( dom (X --> (Y --> z)) = X & dom (curry ([:X,Y:] --> z)) = X )
by A1, A2, FUNCT_5:24;
hence
curry ([:X,Y:] --> z) = X --> (Y --> z)
by A12; curry' ([:X,Y:] --> z) = Y --> (X --> z)
( dom (Y --> (X --> z)) = Y & dom (curry' ([:X,Y:] --> z)) = Y )
by A1, A2, FUNCT_5:24;
hence
curry' ([:X,Y:] --> z) = Y --> (X --> z)
by A4; verum