let f be Function; :: thesis: ( curry f = curry' (~ f) & uncurry f = ~ (uncurry' f) )
A1:
( curry' (~ f) = curry (~ (~ f)) & dom (curry f) = proj1 (dom f) & dom (curry (~ (~ f))) = proj1 (dom (~ (~ f))) )
by FUNCT_5:def 3, FUNCT_5:def 5;
A2:
dom (curry (~ (~ f))) = dom (curry f)
now let x be
set ;
:: thesis: ( x in dom (curry f) implies (curry f) . x = (curry' (~ f)) . x )assume A5:
x in dom (curry f)
;
:: thesis: (curry f) . x = (curry' (~ f)) . xthen reconsider g =
(curry f) . x,
h =
(curry' (~ f)) . x as
Function by A1, A2, FUNCT_5:37;
A6:
(
dom g = proj2 ((dom f) /\ [:{x},(proj2 (dom f)):]) & ( for
y being
set st
y in dom g holds
g . y = f . x,
y ) &
dom h = proj1 ((dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:]) & ( for
y being
set st
y in dom h holds
h . y = (~ f) . y,
x ) )
by A1, A2, A5, FUNCT_5:38, FUNCT_5:41;
A7:
dom g = dom h
proof
thus
dom g c= dom h
:: according to XBOOLE_0:def 10 :: thesis: dom h c= dom gproof
let a be
set ;
:: according to TARSKI:def 3 :: thesis: ( not a in dom g or a in dom h )
assume
a in dom g
;
:: thesis: a in dom h
then consider b being
set such that A8:
[b,a] in (dom f) /\ [:{x},(proj2 (dom f)):]
by A6, RELAT_1:def 5;
(
[b,a] in dom f &
[b,a] in [:{x},(proj2 (dom f)):] )
by A8, XBOOLE_0:def 4;
then
(
[a,b] in dom (~ f) &
[a,b] in [:(proj2 (dom f)),{x}:] &
proj2 (dom f) = proj1 (dom (~ f)) )
by FUNCT_4:43, FUNCT_5:20, ZFMISC_1:107;
then
[a,b] in (dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:]
by XBOOLE_0:def 4;
hence
a in dom h
by A6, RELAT_1:def 4;
:: thesis: verum
end;
let a be
set ;
:: according to TARSKI:def 3 :: thesis: ( not a in dom h or a in dom g )
assume
a in dom h
;
:: thesis: a in dom g
then consider b being
set such that A9:
[a,b] in (dom (~ f)) /\ [:(proj1 (dom (~ f))),{x}:]
by A6, RELAT_1:def 4;
(
[a,b] in dom (~ f) &
[a,b] in [:(proj1 (dom (~ f))),{x}:] )
by A9, XBOOLE_0:def 4;
then
(
[b,a] in dom f &
[b,a] in [:{x},(proj1 (dom (~ f))):] &
proj2 (dom f) = proj1 (dom (~ f)) )
by FUNCT_4:43, FUNCT_5:20, ZFMISC_1:107;
then
[b,a] in (dom f) /\ [:{x},(proj2 (dom f)):]
by XBOOLE_0:def 4;
hence
a in dom g
by A6, RELAT_1:def 5;
:: thesis: verum
end; hence
(curry f) . x = (curry' (~ f)) . x
by A7, FUNCT_1:9;
:: thesis: verum end;
hence
curry f = curry' (~ f)
by A1, A2, FUNCT_1:9; :: thesis: uncurry f = ~ (uncurry' f)
A10:
uncurry' f = ~ (uncurry f)
by FUNCT_5:def 6;
A11:
dom (uncurry f) = dom (~ (~ (uncurry f)))
hence
uncurry f = ~ (uncurry' f)
by A10, A11, FUNCT_1:9; :: thesis: verum