let m, n be Nat; (AckermannSequence . m) . <*n*> = Ackermann (m,n)
defpred S1[ Nat] means for n being Nat holds (AckermannSequence . $1) . <*n*> = H1($1,n);
set p1 = 2 proj 2;
set g1 = <:<*(2 proj 2)*>:>;
A1:
S1[ 0 ]
A5:
for k being Nat st S1[k] holds
S1[k + 1]
proof
let k be
Nat;
( S1[k] implies S1[k + 1] )
assume A6:
S1[
k]
;
S1[k + 1]
A7:
arity (0 const H1(k,1)) = 0
;
A8:
AckermannSequence . (k + 1) = primrec (
(0 const H1(k,1)),
((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)
by Def13;
defpred S2[
Nat]
means (AckermannSequence . (k + 1)) . <*$1*> = H1(
k + 1,$1);
A9:
S2[
0 ]
A10:
for
w being
Nat st
S2[
w] holds
S2[
w + 1]
proof
let w be
Nat;
( S2[w] implies S2[w + 1] )
assume A11:
S2[
w]
;
S2[w + 1]
reconsider w1 =
w as
Element of
NAT by ORDINAL1:def 12;
set f2 =
(AckermannSequence . k) * <:<*(2 proj 2)*>:>;
set x2 =
(primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>;
set x =
<*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*>;
A12:
dom (2 proj 2) = 2
-tuples_on NAT
by COMPUT_1:36;
A13:
(primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*> in NAT
by ORDINAL1:def 12;
then
<*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*> in 2
-tuples_on NAT
by FINSEQ_2:101;
then A14:
(2 proj 2) . <*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*> = <*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*> . 2
by COMPUT_1:38;
A15:
(primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*> = H1(
k + 1,
w)
by A11, Def13;
A16:
dom <:<*(2 proj 2)*>:> = 2
-tuples_on NAT
by A12, FINSEQ_3:141;
arity ((AckermannSequence . k) * <:<*(2 proj 2)*>:>) = 2
by Th35;
hence (AckermannSequence . (k + 1)) . <*(w + 1)*> =
((AckermannSequence . k) * <:<*(2 proj 2)*>:>) . <*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*>
by A7, A8, COMPUT_1:82
.=
(AckermannSequence . k) . (<:<*(2 proj 2)*>:> . <*w1,((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*>)
by A13, A16, FINSEQ_2:101, FUNCT_1:13
.=
(AckermannSequence . k) . <*((primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)*>
by A12, A13, A14, FINSEQ_2:101, FINSEQ_3:141
.=
H1(
k,
(primrec ((0 const H1(k,1)),((AckermannSequence . k) * <:<*(2 proj 2)*>:>),1)) . <*w1*>)
by A6
.=
H1(
k + 1,
w + 1)
by A15, Th7
;
verum
end;
for
k being
Nat holds
S2[
k]
from NAT_1:sch 2(A9, A10);
hence
S1[
k + 1]
;
verum
end;
for k being Nat holds S1[k]
from NAT_1:sch 2(A1, A5);
hence
(AckermannSequence . m) . <*n*> = Ackermann (m,n)
; verum