defpred S1[ object , object ] 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 object st x in F1() holds
ex y being object st S1[x,y]
proof
let x be object ; :: thesis: ( x in F1() implies ex y being object st S1[x,y] )
assume x in F1() ; :: thesis: ex y being object 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 object st S1[x,y]
then reconsider z = x as Element of F2() ;
take F3(z) ; :: thesis: S1[x,F3(z)]
thus S1[x,F3(z)] ; :: thesis: verum
end;
suppose x is not Element of F2() ; :: thesis: ex y being object st S1[x,y]
hence ex y being object st S1[x,y] ; :: thesis: verum
end;
end;
end;
consider f being Function such that
A2: dom f = F1() and
A3: for x being object st x in F1() holds
S1[x,f . x] from CLASSES1:sch 1(A1);
take f ; :: thesis: ( dom f = F1() & ( for x being Element of F2() st x in F1() holds
f . x = F3(x) ) )

thus dom f = F1() by A2; :: thesis: for x being Element of F2() st x in F1() holds
f . x = F3(x)

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 A3;
hence f . x = F3(x) ; :: thesis: verum