set D = 1 -aryPrimRecFuncs ;
reconsider d = 1 succ 1 as Element of 1 -aryPrimRecFuncs by Th34;
defpred S1[ Nat, set , set ] means ( ( $1 = 0 implies $3 = primrec ((0 const H1( 0 ,1)),((1 succ 1) * <:<*(2 proj 2)*>:>),1) ) & ( $1 <> 0 implies ex g being primitive-recursive 1 -ary Function st
( $2 = g & $3 = primrec ((0 const H1($1,1)),(g * <:<*(2 proj 2)*>:>),1) ) ) );
A1:
for n being Nat
for x being Element of 1 -aryPrimRecFuncs ex y being Element of 1 -aryPrimRecFuncs st S1[n,x,y]
proof
let n be
Nat;
for x being Element of 1 -aryPrimRecFuncs ex y being Element of 1 -aryPrimRecFuncs st S1[n,x,y]let x be
Element of 1
-aryPrimRecFuncs ;
ex y being Element of 1 -aryPrimRecFuncs st S1[n,x,y]
per cases
( n = 0 or ex a being Nat st n = a + 1 )
by NAT_1:6;
suppose A2:
n = 0
;
ex y being Element of 1 -aryPrimRecFuncs st S1[n,x,y]set y =
primrec (
(0 const H1( 0 ,1)),
((1 succ 1) * <:<*(2 proj 2)*>:>),1);
primrec (
(0 const H1( 0 ,1)),
((1 succ 1) * <:<*(2 proj 2)*>:>),1)
in 1
-aryPrimRecFuncs
;
then reconsider y =
primrec (
(0 const H1( 0 ,1)),
((1 succ 1) * <:<*(2 proj 2)*>:>),1) as
Element of 1
-aryPrimRecFuncs ;
take
y
;
S1[n,x,y]thus
S1[
n,
x,
y]
by A2;
verum end; suppose
ex
a being
Nat st
n = a + 1
;
ex y being Element of 1 -aryPrimRecFuncs st S1[n,x,y]then consider a being
Nat such that A3:
n = a + 1
;
x in 1
-aryPrimRecFuncs
;
then consider g being
Element of
HFuncs NAT such that A4:
x = g
and A5:
(
g is 1
-ary &
g is
primitive-recursive )
;
reconsider g =
g as
primitive-recursive 1
-ary Function by A5;
set y =
primrec (
(0 const H1(n,1)),
(g * <:<*(2 proj 2)*>:>),1);
primrec (
(0 const H1(n,1)),
(g * <:<*(2 proj 2)*>:>),1)
in 1
-aryPrimRecFuncs
;
then reconsider y =
primrec (
(0 const H1(n,1)),
(g * <:<*(2 proj 2)*>:>),1) as
Element of 1
-aryPrimRecFuncs ;
take
y
;
S1[n,x,y]thus
S1[
n,
x,
y]
by A3, A4;
verum end; end;
end;
consider f being sequence of (1 -aryPrimRecFuncs) such that
A6:
f . 0 = d
and
A7:
for n being Nat holds S1[n,f . n,f . (n + 1)]
from RECDEF_1:sch 2(A1);
reconsider f = f as Function-yielding ManySortedSet of NAT ;
f is homogeneous
then reconsider f = f as Function-yielding homogeneous ManySortedSet of NAT ;
A9:
f is 1 -ary
A11:
f is primitive-recursive
A13:
f is to-naturals
f is NAT * -defined
by A11;
then reconsider f = f as Function-yielding primitive-recursive satisfying_primrec_conditions 1 -ary ManySortedSet of NAT by A9, A11, A13;
take
f
; ( f . 0 = 1 succ 1 & ( for m being Nat holds f . (m + 1) = primrec ((0 const (Ackermann (m,1))),((f . m) * <:<*(2 proj 2)*>:>),1) ) )
thus
f . 0 = 1 succ 1
by A6; for m being Nat holds f . (m + 1) = primrec ((0 const (Ackermann (m,1))),((f . m) * <:<*(2 proj 2)*>:>),1)
let n be Nat; f . (n + 1) = primrec ((0 const (Ackermann (n,1))),((f . n) * <:<*(2 proj 2)*>:>),1)