let f be Function; ( curry f = curry' (~ f) & uncurry f = ~ (uncurry' f) )
A1:
dom (curry (~ (~ f))) = proj1 (dom (~ (~ f)))
by FUNCT_5:def 1;
A2:
dom (curry f) = proj1 (dom f)
by FUNCT_5:def 1;
A3:
dom (curry (~ (~ f))) = dom (curry f)
A6:
curry' (~ f) = curry (~ (~ f))
by FUNCT_5:def 3;
now for x being object st x in dom (curry f) holds
(curry f) . x = (curry' (~ f)) . xlet x be
object ;
( x in dom (curry f) implies (curry f) . x = (curry' (~ f)) . x )assume A7:
x in dom (curry f)
;
(curry f) . x = (curry' (~ f)) . xreconsider g =
(curry f) . x,
h =
(curry' (~ f)) . x as
Function ;
A8:
dom g = proj2 ((dom f) /\ [:{x},(proj2 (dom f)):])
by A7, FUNCT_5:31;
A9:
dom h = proj1 ((dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:])
by A6, A3, A7, FUNCT_5:34;
A10:
dom g = dom h
proof
thus
dom g c= dom h
XBOOLE_0:def 10 dom h c= dom gproof
let a be
object ;
TARSKI:def 3 ( not a in dom g or a in dom h )
assume
a in dom g
;
a in dom h
then consider b being
object such that A11:
[b,a] in (dom f) /\ [:{x},(proj2 (dom f)):]
by A8, XTUPLE_0:def 13;
[b,a] in [:{x},(proj2 (dom f)):]
by A11, XBOOLE_0:def 4;
then A12:
[a,b] in [:(proj2 (dom f)),{x}:]
by ZFMISC_1:88;
[b,a] in dom f
by A11, XBOOLE_0:def 4;
then A13:
[a,b] in dom (~ f)
by FUNCT_4:42;
proj2 (dom f) = proj1 (dom (~ f))
by FUNCT_5:17;
then
[a,b] in (dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:]
by A13, A12, XBOOLE_0:def 4;
hence
a in dom h
by A9, XTUPLE_0:def 12;
verum
end;
let a be
object ;
TARSKI:def 3 ( not a in dom h or a in dom g )
assume
a in dom h
;
a in dom g
then consider b being
object such that A14:
[a,b] in (dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:]
by A9, XTUPLE_0:def 12;
[a,b] in [:(proj1 (dom (~ f))),{x}:]
by A14, XBOOLE_0:def 4;
then A15:
[b,a] in [:{x},(proj1 (dom (~ f))):]
by ZFMISC_1:88;
[a,b] in dom (~ f)
by A14, XBOOLE_0:def 4;
then A16:
[b,a] in dom f
by FUNCT_4:42;
proj2 (dom f) = proj1 (dom (~ f))
by FUNCT_5:17;
then
[b,a] in (dom f) /\ [:{x},(proj2 (dom f)):]
by A16, A15, XBOOLE_0:def 4;
hence
a in dom g
by A8, XTUPLE_0:def 13;
verum
end; now for a being object st a in dom g holds
g . a = h . alet a be
object ;
( a in dom g implies g . a = h . a )assume A17:
a in dom g
;
g . a = h . athen A18:
(
[x,a] in dom f &
g . a = f . (
x,
a) )
by A7, FUNCT_5:31;
h . a = (~ f) . (
a,
x)
by A6, A3, A7, A10, A17, FUNCT_5:34;
hence
g . a = h . a
by A18, FUNCT_4:def 2;
verum end; hence
(curry f) . x = (curry' (~ f)) . x
by A10;
verum end;
hence
curry f = curry' (~ f)
by A6, A3; uncurry f = ~ (uncurry' f)
A19:
dom (uncurry f) = dom (~ (~ (uncurry f)))
uncurry' f = ~ (uncurry f)
by FUNCT_5:def 4;
hence
uncurry f = ~ (uncurry' f)
by A19, A22; verum