let i be Element of NAT ; :: thesis: for f1, f2 being non empty NAT * -defined to-naturals homogeneous Function st (arity f1) + 2 = arity f2 & 1 <= i & i <= (arity f1) + 1 holds
primrec f1,f2,i is_primitive-recursively_expressed_by f1,f2,i

let f1, f2 be non empty NAT * -defined to-naturals homogeneous Function; :: thesis: ( (arity f1) + 2 = arity f2 & 1 <= i & i <= (arity f1) + 1 implies primrec f1,f2,i is_primitive-recursively_expressed_by f1,f2,i )
assume that
A1: (arity f1) + 2 = arity f2 and
A2: ( 1 <= i & i <= (arity f1) + 1 ) ; :: thesis: primrec f1,f2,i is_primitive-recursively_expressed_by f1,f2,i
set g = primrec f1,f2,i;
take n = (arity f1) + 1; :: according to COMPUT_1:def 12 :: thesis: ( dom (primrec f1,f2,i) c= n -tuples_on NAT & i >= 1 & i <= n & (arity f1) + 1 = n & n + 1 = arity f2 & ( for p being FinSequence of NAT st len p = n holds
( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) ) ) )

thus dom (primrec f1,f2,i) c= n -tuples_on NAT by Th60; :: thesis: ( i >= 1 & i <= n & (arity f1) + 1 = n & n + 1 = arity f2 & ( for p being FinSequence of NAT st len p = n holds
( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) ) ) )

thus ( i >= 1 & i <= n ) by A2; :: thesis: ( (arity f1) + 1 = n & n + 1 = arity f2 & ( for p being FinSequence of NAT st len p = n holds
( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) ) ) )

thus (arity f1) + 1 = n ; :: thesis: ( n + 1 = arity f2 & ( for p being FinSequence of NAT st len p = n holds
( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) ) ) )

thus n + 1 = arity f2 by A1; :: thesis: for p being FinSequence of NAT st len p = n holds
( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) )

let p be FinSequence of NAT ; :: thesis: ( len p = n implies ( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) ) )

assume A3: len p = n ; :: thesis: ( ( p +* i,0 in dom (primrec f1,f2,i) implies Del p,i in dom f1 ) & ( Del p,i in dom f1 implies p +* i,0 in dom (primrec f1,f2,i) ) & ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) & ( for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) ) ) )

then A4: p is Element of n -tuples_on NAT by FINSEQ_2:110;
A5: i in dom p by A2, A3, FINSEQ_3:27;
hence ( p +* i,0 in dom (primrec f1,f2,i) iff Del p,i in dom f1 ) by A4, Lm6; :: thesis: ( p +* i,0 in dom (primrec f1,f2,i) iff (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) )
thus ( p +* i,0 in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,0 ) = f1 . (Del p,i) ) by A4, A5, Lm6; :: thesis: for n being Element of NAT holds
( ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 ) ) & ( p +* i,n in dom (primrec f1,f2,i) & (p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*> in dom f2 implies p +* i,(n + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(n + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*((primrec f1,f2,i) . (p +* i,n))*>) ) )

let m be Element of NAT ; :: thesis: ( ( p +* i,(m + 1) in dom (primrec f1,f2,i) implies ( p +* i,m in dom (primrec f1,f2,i) & (p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*> in dom f2 ) ) & ( p +* i,m in dom (primrec f1,f2,i) & (p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*> in dom f2 implies p +* i,(m + 1) in dom (primrec f1,f2,i) ) & ( p +* i,(m + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(m + 1)) = f2 . ((p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*>) ) )
thus ( p +* i,(m + 1) in dom (primrec f1,f2,i) iff ( p +* i,m in dom (primrec f1,f2,i) & (p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*> in dom f2 ) ) by A4, A5, Lm6; :: thesis: ( p +* i,(m + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(m + 1)) = f2 . ((p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*>) )
thus ( p +* i,(m + 1) in dom (primrec f1,f2,i) implies (primrec f1,f2,i) . (p +* i,(m + 1)) = f2 . ((p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*>) ) by A4, A5, Lm6; :: thesis: verum