begin
scheme
GraphFunc{
F1()
-> set ,
P1[
set ,
set ] } :
ex
f being
Function st
for
x,
y being
set holds
(
[x,y] in f iff (
x in F1() &
P1[
x,
y] ) )
provided
A1:
for
x,
y1,
y2 being
set st
P1[
x,
y1] &
P1[
x,
y2] holds
y1 = y2
scheme
FuncEx{
F1()
-> set ,
P1[
set ,
set ] } :
ex
f being
Function st
(
dom f = F1() & ( for
x being
set st
x in F1() holds
P1[
x,
f . x] ) )
provided
A1:
for
x,
y1,
y2 being
set st
x in F1() &
P1[
x,
y1] &
P1[
x,
y2] holds
y1 = y2
and A2:
for
x being
set st
x in F1() holds
ex
y being
set st
P1[
x,
y]
Lm1:
for X being set
for g2, f, g1 being Function st rng g2 = X & f * g2 = id (dom g1) & g1 * f = id X holds
g1 = g2
begin
scheme
NonUniqBoundFuncEx{
F1()
-> set ,
F2()
-> set ,
P1[
set ,
set ] } :
provided
A1:
for
x being
set st
x in F1() holds
ex
y being
set st
(
y in F2() &
P1[
x,
y] )