defpred S1[ set , Function] means ( dom $2 = proj2 ((dom f) /\ [:{$1},(proj2 (dom f)):]) & ( for y being set st y in dom $2 holds
$2 . y = f . $1,y ) );
defpred S2[ set , set ] means ex g being Function st
( $2 = g & S1[$1,g] );
A1:
for x, y, z being set st x in proj1 (dom f) & S2[x,y] & S2[x,z] holds
y = z
proof
let x,
y,
z be
set ;
:: thesis: ( x in proj1 (dom f) & S2[x,y] & S2[x,z] implies y = z )
assume
x in proj1 (dom f)
;
:: thesis: ( not S2[x,y] or not S2[x,z] or y = z )
given g1 being
Function such that A2:
(
y = g1 &
S1[
x,
g1] )
;
:: thesis: ( not S2[x,z] or y = z )
given g2 being
Function such that A3:
(
z = g2 &
S1[
x,
g2] )
;
:: thesis: y = z
hence
y = z
by A2, A3, FUNCT_1:9;
:: thesis: verum
end;
A4:
for x being set st x in proj1 (dom f) holds
ex y being set st S2[x,y]
ex g being Function st
( dom g = proj1 (dom f) & ( for x being set st x in proj1 (dom f) holds
S2[x,g . x] ) )
from FUNCT_1:sch 2(A1, A4);
hence
ex b1 being Function st
( dom b1 = proj1 (dom f) & ( for x being set st x in proj1 (dom f) holds
ex g being Function st
( b1 . x = g & dom g = proj2 ((dom f) /\ [:{x},(proj2 (dom f)):]) & ( for y being set st y in dom g holds
g . y = f . x,y ) ) ) )
; :: thesis: verum