defpred S1[ set , set ] means for Y being set st $1 = Y holds
$2 = f " Y;
A1:
for y being set st y in bool (rng f) holds
ex x being set st S1[y,x]
proof
let y be
set ;
( y in bool (rng f) implies ex x being set st S1[y,x] )
assume
y in bool (rng f)
;
ex x being set st S1[y,x]
take
f " y
;
S1[y,f " y]
thus
S1[
y,
f " y]
;
verum
end;
A2:
for y, x1, x2 being set st y in bool (rng f) & S1[y,x1] & S1[y,x2] holds
x1 = x2
proof
let y,
x1,
x2 be
set ;
( y in bool (rng f) & S1[y,x1] & S1[y,x2] implies x1 = x2 )
assume that
y in bool (rng f)
and A3:
for
Y being
set st
y = Y holds
x1 = f " Y
and A4:
for
Y being
set st
y = Y holds
x2 = f " Y
;
x1 = x2
thus x1 =
f " y
by A3
.=
x2
by A4
;
verum
end;
consider g being Function such that
A5:
( dom g = bool (rng f) & ( for y being set st y in bool (rng f) holds
S1[y,g . y] ) )
from FUNCT_1:sch 2(A2, A1);
take
g
; ( dom g = bool (rng f) & ( for Y being set st Y c= rng f holds
g . Y = f " Y ) )
thus
( dom g = bool (rng f) & ( for Y being set st Y c= rng f holds
g . Y = f " Y ) )
by A5; verum