let x be set ; :: thesis: for f, g being Function st x in dom (curry' f) & g = (curry' f) . x holds
( dom g = proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) & dom g c= proj1 (dom f) & rng g c= rng f & ( for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f ) ) )

let f, g be Function; :: thesis: ( x in dom (curry' f) & g = (curry' f) . x implies ( dom g = proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) & dom g c= proj1 (dom f) & rng g c= rng f & ( for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f ) ) ) )

assume A1: ( x in dom (curry' f) & g = (curry' f) . x ) ; :: thesis: ( dom g = proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) & dom g c= proj1 (dom f) & rng g c= rng f & ( for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f ) ) )

then A2: ( dom g = proj2 ((dom (~ f)) /\ [:{x},(proj2 (dom (~ f))):]) & dom g c= proj2 (dom (~ f)) & rng g c= rng (~ f) & rng (~ f) c= rng f & ( for y being set st y in dom g holds
g . y = (~ f) . x,y ) ) by Th38, FUNCT_4:42;
then A3: dom g = proj2 ((dom (~ f)) /\ [:{x},(proj1 (dom f)):]) by Th20;
thus A4: dom g c= proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) :: according to XBOOLE_0:def 10 :: thesis: ( proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) c= dom g & dom g c= proj1 (dom f) & rng g c= rng f & ( for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f ) ) )
proof
let z be set ; :: according to TARSKI:def 3 :: thesis: ( not z in dom g or z in proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) )
assume z in dom g ; :: thesis: z in proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:])
then consider y being set such that
A5: [y,z] in (dom (~ f)) /\ [:{x},(proj1 (dom f)):] by A3, RELAT_1:def 5;
( [y,z] in dom (~ f) & [y,z] in [:{x},(proj1 (dom f)):] ) by A5, XBOOLE_0:def 4;
then ( [z,y] in dom f & [z,y] in [:(proj1 (dom f)),{x}:] ) by FUNCT_4:43, ZFMISC_1:107;
then [z,y] in (dom f) /\ [:(proj1 (dom f)),{x}:] by XBOOLE_0:def 4;
hence z in proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) by RELAT_1:def 4; :: thesis: verum
end;
thus proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) c= dom g :: thesis: ( dom g c= proj1 (dom f) & rng g c= rng f & ( for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f ) ) )
proof
let z be set ; :: according to TARSKI:def 3 :: thesis: ( not z in proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) or z in dom g )
assume z in proj1 ((dom f) /\ [:(proj1 (dom f)),{x}:]) ; :: thesis: z in dom g
then consider y being set such that
A6: [z,y] in (dom f) /\ [:(proj1 (dom f)),{x}:] by RELAT_1:def 4;
( [z,y] in dom f & [z,y] in [:(proj1 (dom f)),{x}:] ) by A6, XBOOLE_0:def 4;
then ( [y,z] in dom (~ f) & [y,z] in [:{x},(proj1 (dom f)):] ) by FUNCT_4:43, ZFMISC_1:107;
then [y,z] in (dom (~ f)) /\ [:{x},(proj1 (dom f)):] by XBOOLE_0:def 4;
hence z in dom g by A3, RELAT_1:def 5; :: thesis: verum
end;
thus ( dom g c= proj1 (dom f) & rng g c= rng f ) by A2, Th20, XBOOLE_1:1; :: thesis: for y being set st y in dom g holds
( g . y = f . y,x & [y,x] in dom f )

let y be set ; :: thesis: ( y in dom g implies ( g . y = f . y,x & [y,x] in dom f ) )
assume A7: y in dom g ; :: thesis: ( g . y = f . y,x & [y,x] in dom f )
then consider z being set such that
A8: [y,z] in (dom f) /\ [:(proj1 (dom f)),{x}:] by A4, RELAT_1:def 4;
( [y,z] in dom f & [y,z] in [:(proj1 (dom f)),{x}:] ) by A8, XBOOLE_0:def 4;
then ( [z,y] in dom (~ f) & z = x ) by FUNCT_4:43, ZFMISC_1:129;
then ( (~ f) . x,y = f . y,x & [y,x] in dom f ) by FUNCT_4:43, FUNCT_4:44;
hence ( g . y = f . y,x & [y,x] in dom f ) by A1, A7, Th38; :: thesis: verum