let m be Nat; dom2tuple (AckermannFunction (m + 1)) = primrec ((0 const (Ackermann (m,1))),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)
set f = H3(H2(m + 1));
set c = primrec ((0 const H1(m,1)),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1);
set D = 1 -tuples_on (dom H2(m + 1));
A1:
dom H3(H2(m + 1)) = 1 -tuples_on (dom H2(m + 1))
by Def4;
then A2:
dom H3(H2(m + 1)) = 1 -tuples_on NAT
by FUNCT_2:def 1;
set f1 = 0 const H1(m,1);
set f2 = (AckermannSequence . m) * <:<*(2 proj 2)*>:>;
arity ((AckermannSequence . m) * <:<*(2 proj 2)*>:>) = 0 + 2
by Th35;
then
dom (primrec ((0 const H1(m,1)),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)) = ((arity (0 const H1(m,1))) + 1) -tuples_on NAT
by COMPUT_1:57;
hence
dom H3(H2(m + 1)) = dom (primrec ((0 const H1(m,1)),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1))
by A1, FUNCT_2:def 1; FUNCT_1:def 11 for b1 being object holds
( not b1 in dom (dom2tuple (AckermannFunction (m + 1))) or (dom2tuple (AckermannFunction (m + 1))) . b1 = (primrec ((0 const (Ackermann (m,1))),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)) . b1 )
let x be object ; ( not x in dom (dom2tuple (AckermannFunction (m + 1))) or (dom2tuple (AckermannFunction (m + 1))) . x = (primrec ((0 const (Ackermann (m,1))),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)) . x )
assume
x in dom H3(H2(m + 1))
; (dom2tuple (AckermannFunction (m + 1))) . x = (primrec ((0 const (Ackermann (m,1))),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)) . x
then consider n being set such that
A3:
n in NAT
and
A4:
x = <*n*>
by A2, FINSEQ_2:135;
reconsider n = n as Element of NAT by A3;
dom H2(m + 1) = NAT
by FUNCT_2:def 1;
hence H3(H2(m + 1)) . x =
H2(m + 1) . n
by A4, Def4
.=
H1(m + 1,n)
by Def3
.=
(AckermannSequence . (m + 1)) . <*n*>
by Th36
.=
(primrec ((0 const H1(m,1)),((AckermannSequence . m) * <:<*(2 proj 2)*>:>),1)) . x
by A4, Def13
;
verum