defpred S1[ set , set ] means ( ( $1 is Element of F2() implies ex x being Element of F2() st
( x = $1 & $2 = F3(x) ) ) & ( $1 is not Element of F2() implies $2 = 0 ) );
A1: for x being set st x in F1() holds
ex y being set st S1[x,y]
proof
let x be set ; :: thesis: ( x in F1() implies ex y being set st S1[x,y] )
assume x in F1() ; :: thesis: ex y being set st S1[x,y]
per cases ( x is Element of F2() or not x is Element of F2() ) ;
suppose x is Element of F2() ; :: thesis: ex y being set st S1[x,y]
then reconsider z = x as Element of F2() ;
take y = F3(z); :: thesis: S1[x,y]
thus S1[x,y] ; :: thesis: verum
end;
suppose A2: x is not Element of F2() ; :: thesis: ex y being set st S1[x,y]
take y = 0 ; :: thesis: S1[x,y]
thus S1[x,y] by A2; :: thesis: verum
end;
end;
end;
ex f being Function st
( dom f = F1() & ( for x being set st x in F1() holds
S1[x,f . x] ) ) from CLASSES1:sch 1(A1);
then consider f being Function such that
A3: dom f = F1() and
A4: for x being set st x in F1() holds
S1[x,f . x] ;
take f ; :: thesis: ( dom f = F1() & ( for x being Element of F2() st x in F1() holds
f . x = F3(x) ) )

now
let x be Element of F2(); :: thesis: ( x in F1() implies f . x = F3(x) )
assume x in F1() ; :: thesis: f . x = F3(x)
then S1[x,f . x] by A4;
hence f . x = F3(x) ; :: thesis: verum
end;
hence ( dom f = F1() & ( for x being Element of F2() st x in F1() holds
f . x = F3(x) ) ) by A3; :: thesis: verum