let X, Y be set ; :: thesis: ( X <> {} & Y <> {} implies ( dom [:X,Y:] = X & rng [:X,Y:] = Y ) )
assume X <> {} ; :: thesis: ( not Y <> {} or ( dom [:X,Y:] = X & rng [:X,Y:] = Y ) )
then consider a being set such that
W1: a in X by XBOOLE_0:def 1;
assume Y <> {} ; :: thesis: ( dom [:X,Y:] = X & rng [:X,Y:] = Y )
then consider b being set such that
W2: b in Y by XBOOLE_0:def 1;
A: now
let x be set ; :: thesis: ( x in X implies ex y being set st [x,y] in [:X,Y:] )
assume x in X ; :: thesis: ex y being set st [x,y] in [:X,Y:]
then [x,b] in [:X,Y:] by W2, ZFMISC_1:106;
hence ex y being set st [x,y] in [:X,Y:] ; :: thesis: verum
end;
for x being set st ex y being set st [x,y] in [:X,Y:] holds
x in X by ZFMISC_1:106;
hence dom [:X,Y:] = X by A, Def4; :: thesis: rng [:X,Y:] = Y
A: now
let y be set ; :: thesis: ( y in Y implies ex x being set st [x,y] in [:X,Y:] )
assume y in Y ; :: thesis: ex x being set st [x,y] in [:X,Y:]
then [a,y] in [:X,Y:] by W1, ZFMISC_1:106;
hence ex x being set st [x,y] in [:X,Y:] ; :: thesis: verum
end;
for y being set st ex x being set st [x,y] in [:X,Y:] holds
y in Y by ZFMISC_1:106;
hence rng [:X,Y:] = Y by Def5, A; :: thesis: verum