a1:
for a being Element of F1() ex f being Function of NAT,F2() st
( f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
proof
let a be
Element of
F1();
ex f being Function of NAT,F2() st
( f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
defpred S1[
Nat,
Element of
F2(),
Element of
F2()]
means $3
= F4($2,
a,$1);
a2:
for
n being
Nat for
x being
Element of
F2() ex
y being
Element of
F2() st
S1[
n,
x,
y]
;
thus
ex
f being
Function of
NAT,
F2() st
(
f . 0 = F3()
. a & ( for
n being
Nat holds
S1[
n,
f . n,
f . (n + 1)] ) )
from RECDEF_1:sch 2(a2); verum
end;
ex g being Function of F1(),(Funcs (NAT,F2())) st
for a being Element of F1() ex f being Function of NAT,F2() st
( g . a = f & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
proof
set h1 =
{ [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } ;
a3:
now for x, y1, y2 being object st [x,y1] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } & [x,y2] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } holds
y1 = y2let x,
y1,
y2 be
object ;
( [x,y1] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } & [x,y2] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } implies y1 = y2 )assume a4:
(
[x,y1] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } &
[x,y2] in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } )
;
y1 = y2then consider a1 being
Element of
F1(),
l1 being
Element of
Funcs (
NAT,
F2())
such that a5:
(
[x,y1] = [a1,l1] & ex
f being
Function of
NAT,
F2() st
(
f = l1 &
f . 0 = F3()
. a1 & ( for
n being
Nat holds
f . (n + 1) = F4(
(f . n),
a1,
n) ) ) )
;
consider a2 being
Element of
F1(),
l2 being
Element of
Funcs (
NAT,
F2())
such that a6:
(
[x,y2] = [a2,l2] & ex
f being
Function of
NAT,
F2() st
(
f = l2 &
f . 0 = F3()
. a2 & ( for
n being
Nat holds
f . (n + 1) = F4(
(f . n),
a2,
n) ) ) )
by a4;
consider f1 being
Function of
NAT,
F2()
such that a7:
(
f1 = l1 &
f1 . 0 = F3()
. a1 & ( for
n being
Nat holds
f1 . (n + 1) = F4(
(f1 . n),
a1,
n) ) )
by a5;
consider f2 being
Function of
NAT,
F2()
such that a8:
(
f2 = l2 &
f2 . 0 = F3()
. a2 & ( for
n being
Nat holds
f2 . (n + 1) = F4(
(f2 . n),
a2,
n) ) )
by a6;
a9:
(
a1 = x &
y1 = l1 &
a2 = x &
y2 = l2 )
by a5, a6, XTUPLE_0:1;
now for x being Element of NAT holds f1 . x = f2 . xlet x be
Element of
NAT ;
f1 . x = f2 . xdefpred S1[
Nat]
means f1 . $1
= f2 . $1;
a11:
S1[
0 ]
by a7, a8, a9;
a12:
now for n being Nat st S1[n] holds
S1[n + 1]let n be
Nat;
( S1[n] implies S1[n + 1] )assume
S1[
n]
;
S1[n + 1]then
F4(
(f1 . n),
a2,
n)
= f2 . (n + 1)
by a8;
hence
S1[
n + 1]
by a7, a9;
verum end;
for
n being
Nat holds
S1[
n]
from NAT_1:sch 2(a11, a12);
hence
f1 . x = f2 . x
;
verum end; hence
y1 = y2
by a7, a8, a9, FUNCT_2:63;
verum end;
now for x being object st x in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } holds
x in [:F1(),(Funcs (NAT,F2())):]let x be
object ;
( x in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } implies x in [:F1(),(Funcs (NAT,F2())):] )assume
x in { [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) }
;
x in [:F1(),(Funcs (NAT,F2())):]then
ex
a being
Element of
F1() ex
l being
Element of
Funcs (
NAT,
F2()) st
(
x = [a,l] & ex
f being
Function of
NAT,
F2() st
(
f = l &
f . 0 = F3()
. a & ( for
n being
Nat holds
f . (n + 1) = F4(
(f . n),
a,
n) ) ) )
;
hence
x in [:F1(),(Funcs (NAT,F2())):]
by ZFMISC_1:def 2;
verum end;
then reconsider h1 =
{ [a,l] where a is Element of F1(), l is Element of Funcs (NAT,F2()) : ex f being Function of NAT,F2() st
( f = l & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) ) } as
Relation of
F1(),
(Funcs (NAT,F2())) by TARSKI:def 3;
for
x being
object st
x in F1() holds
x in dom h1
then
F1()
c= dom h1
;
then
dom h1 = F1()
by XBOOLE_0:def 10;
then reconsider h1 =
h1 as
Function of
F1(),
(Funcs (NAT,F2())) by a3, FUNCT_1:def 1, FUNCT_2:def 1;
take
h1
;
for a being Element of F1() ex f being Function of NAT,F2() st
( h1 . a = f & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
thus
for
a being
Element of
F1() ex
f being
Function of
NAT,
F2() st
(
h1 . a = f &
f . 0 = F3()
. a & ( for
n being
Nat holds
f . (n + 1) = F4(
(f . n),
a,
n) ) )
verumproof
let a be
Element of
F1();
ex f being Function of NAT,F2() st
( h1 . a = f & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
dom h1 = F1()
by FUNCT_2:def 1;
then
[a,(h1 . a)] in h1
by FUNCT_1:1;
then consider x being
Element of
F1(),
l being
Element of
Funcs (
NAT,
F2())
such that a16:
(
[a,(h1 . a)] = [x,l] & ex
h being
Function of
NAT,
F2() st
(
h = l &
h . 0 = F3()
. x & ( for
n being
Nat holds
h . (n + 1) = F4(
(h . n),
x,
n) ) ) )
;
(
a = x &
h1 . a = l )
by a16, XTUPLE_0:1;
hence
ex
f being
Function of
NAT,
F2() st
(
h1 . a = f &
f . 0 = F3()
. a & ( for
n being
Nat holds
f . (n + 1) = F4(
(f . n),
a,
n) ) )
by a16;
verum
end;
end;
then consider g being Function of F1(),(Funcs (NAT,F2())) such that
a17:
for a being Element of F1() ex f being Function of NAT,F2() st
( g . a = f & f . 0 = F3() . a & ( for n being Nat holds f . (n + 1) = F4((f . n),a,n) ) )
;
set h1 = { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } ;
a18:
now for x, y1, y2 being object st [x,y1] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } & [x,y2] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } holds
y1 = y2let x,
y1,
y2 be
object ;
( [x,y1] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } & [x,y2] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } implies y1 = y2 )assume a19:
(
[x,y1] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } &
[x,y2] in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } )
;
y1 = y2then consider n1 being
Element of
NAT ,
a1 being
Element of
F1(),
z1 being
Element of
F2()
such that a20:
(
[x,y1] = [[a1,n1],z1] & ex
f1 being
Function of
NAT,
F2() st
(
f1 = g . a1 &
z1 = f1 . n1 ) )
;
consider n2 being
Element of
NAT ,
a2 being
Element of
F1(),
z2 being
Element of
F2()
such that a21:
(
[x,y2] = [[a2,n2],z2] & ex
f2 being
Function of
NAT,
F2() st
(
f2 = g . a2 &
z2 = f2 . n2 ) )
by a19;
(
x = [a1,n1] &
x = [a2,n2] )
by a20, a21, XTUPLE_0:1;
then
(
a1 = a2 &
n1 = n2 )
by XTUPLE_0:1;
hence
y1 = y2
by a20, a21, XTUPLE_0:1;
verum end;
now for x being object st x in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } holds
x in [:[:F1(),NAT:],F2():]let x be
object ;
( x in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } implies x in [:[:F1(),NAT:],F2():] )assume
x in { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) }
;
x in [:[:F1(),NAT:],F2():]then consider n1 being
Element of
NAT ,
a1 being
Element of
F1(),
z1 being
Element of
F2()
such that a22:
x = [[a1,n1],z1]
and
ex
f1 being
Function of
NAT,
F2() st
(
f1 = g . a1 &
z1 = f1 . n1 )
;
[a1,n1] in [:F1(),NAT:]
by ZFMISC_1:def 2;
hence
x in [:[:F1(),NAT:],F2():]
by a22, ZFMISC_1:def 2;
verum end;
then reconsider h1 = { [[a,n],z] where n is Element of NAT , a is Element of F1(), z is Element of F2() : ex f being Function of NAT,F2() st
( f = g . a & z = f . n ) } as Relation of [:F1(),NAT:],F2() by TARSKI:def 3;
for x being object st x in [:F1(),NAT:] holds
x in dom h1
proof
let x be
object ;
( x in [:F1(),NAT:] implies x in dom h1 )
assume
x in [:F1(),NAT:]
;
x in dom h1
then consider d,
n being
object such that a24:
(
d in F1() &
n in NAT &
x = [d,n] )
by ZFMISC_1:def 2;
reconsider d =
d as
Element of
F1()
by a24;
reconsider n =
n as
Element of
NAT by a24;
consider h being
Function of
NAT,
F2()
such that a25:
g . d = h
and
(
h . 0 = F3()
. d & ( for
n being
Nat holds
h . (n + 1) = F4(
(h . n),
d,
n) ) )
by a17;
h . n is
Element of
F2()
;
then consider z being
Element of
F2()
such that a26:
ex
f being
Function of
NAT,
F2() st
(
f = g . d &
z = f . n )
by a25;
[x,z] in h1
by a24, a26;
hence
x in dom h1
by XTUPLE_0:def 12;
verum
end;
then d2:
[:F1(),NAT:] c= dom h1
;
then
dom h1 = [:F1(),NAT:]
by XBOOLE_0:def 10;
then reconsider h1 = h1 as Function of [:F1(),NAT:],F2() by a18, FUNCT_1:def 1, FUNCT_2:def 1;
take
h1
; for a being Element of F1() holds
( h1 . (a,0) = F3() . a & ( for n being Nat holds h1 . (a,(n + 1)) = F4((h1 . (a,n)),a,n) ) )
thus
for a being Element of F1() holds
( h1 . (a,0) = F3() . a & ( for n being Nat holds h1 . (a,(n + 1)) = F4((h1 . (a,n)),a,n) ) )
verumproof
let a be
Element of
F1();
( h1 . (a,0) = F3() . a & ( for n being Nat holds h1 . (a,(n + 1)) = F4((h1 . (a,n)),a,n) ) )
consider h being
Function of
NAT,
F2()
such that a27:
(
g . a = h &
h . 0 = F3()
. a & ( for
n being
Nat holds
h . (n + 1) = F4(
(h . n),
a,
n) ) )
by a17;
a28:
now for k being Nat holds h1 . (a,(k + 1)) = F4((h1 . (a,k)),a,k)let k be
Nat;
h1 . (a,(k + 1)) = F4((h1 . (a,k)),a,k)
[a,(k + 1)] in [:F1(),NAT:]
by ZFMISC_1:def 2;
then
[a,(k + 1)] in dom h1
by FUNCT_2:def 1;
then consider u being
object such that a29:
[[a,(k + 1)],u] in h1
by XTUPLE_0:def 12;
k in NAT
by ORDINAL1:def 12;
then
[a,k] in [:F1(),NAT:]
by ZFMISC_1:def 2;
then
[a,k] in dom h1
by FUNCT_2:def 1;
then consider v being
object such that a30:
[[a,k],v] in h1
by XTUPLE_0:def 12;
consider n1 being
Element of
NAT ,
d1 being
Element of
F1(),
z1 being
Element of
F2()
such that a31:
(
[[a,k],v] = [[d1,n1],z1] & ex
f2 being
Function of
NAT,
F2() st
(
f2 = g . d1 &
z1 = f2 . n1 ) )
by a30;
consider f2 being
Function of
NAT,
F2()
such that a32:
(
f2 = g . d1 &
z1 = f2 . n1 )
by a31;
consider n being
Element of
NAT ,
d being
Element of
F1(),
z being
Element of
F2()
such that a33:
(
[[a,(k + 1)],u] = [[d,n],z] & ex
f1 being
Function of
NAT,
F2() st
(
f1 = g . d &
z = f1 . n ) )
by a29;
(
[a,k] = [d1,n1] &
[a,(k + 1)] = [d,n] )
by a31, a33, XTUPLE_0:1;
then a34:
(
a = d1 &
k = n1 &
a = d &
k + 1
= n )
by XTUPLE_0:1;
hence h1 . (
a,
(k + 1)) =
h . n
by a27, a29, a33, FUNCT_1:1
.=
F4(
(f2 . n1),
a,
n1)
by a27, a32, a34
.=
F4(
(h1 . (a,k)),
a,
k)
by a30, a32, a31, a34, FUNCT_1:1
;
verum end;
[a,0] in [:F1(),NAT:]
by ZFMISC_1:def 2;
then consider u being
object such that a36:
[[a,0],u] in h1
by d2, XTUPLE_0:def 12;
consider n being
Element of
NAT ,
d being
Element of
F1(),
z being
Element of
F2()
such that a37:
(
[[a,0],u] = [[d,n],z] & ex
f1 being
Function of
NAT,
F2() st
(
f1 = g . d &
z = f1 . n ) )
by a36;
(
[a,0] = [d,n] &
u = z )
by a37, XTUPLE_0:1;
then
(
a = d &
0 = n )
by XTUPLE_0:1;
hence
(
h1 . (
a,
0)
= F3()
. a & ( for
n being
Nat holds
h1 . (
a,
(n + 1))
= F4(
(h1 . (a,n)),
a,
n) ) )
by a27, a28, a36, a37, FUNCT_1:1;
verum
end;