:: COMPUT_1 semantic presentation :: Showing IDV graph ... (Click the Palm Trees again to close it)
theorem :: COMPUT_1:1 :: Showing IDV graph ... (Click the Palm Tree again to close it)
canceled;
theorem :: COMPUT_1:2 :: Showing IDV graph ... (Click the Palm Tree again to close it)
canceled;
theorem Th3: :: COMPUT_1:3 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:4 :: Showing IDV graph ... (Click the Palm Tree again to close it)
canceled;
theorem Th5: :: COMPUT_1:5 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th6: :: COMPUT_1:6 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th7: :: COMPUT_1:7 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th8: :: COMPUT_1:8 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:9 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th10: :: COMPUT_1:10 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th11: :: COMPUT_1:11 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th12: :: COMPUT_1:12 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th13: :: COMPUT_1:13 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def1 defines compatible COMPUT_1:def 1 :
theorem Th14: :: COMPUT_1:14 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th15: :: COMPUT_1:15 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th16: :: COMPUT_1:16 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th17: :: COMPUT_1:17 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th18: :: COMPUT_1:18 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def2 defines from-natural-fseqs COMPUT_1:def 2 :
:: deftheorem Def3 defines len-total COMPUT_1:def 3 :
:: deftheorem Def4 defines homogeneous COMPUT_1:def 4 :
theorem Th19: :: COMPUT_1:19 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th20: :: COMPUT_1:20 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def5 defines arity COMPUT_1:def 5 :
theorem Th21: :: COMPUT_1:21 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th22: :: COMPUT_1:22 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th23: :: COMPUT_1:23 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th24: :: COMPUT_1:24 :: Showing IDV graph ... (Click the Palm Tree again to close it)
Lm1:
for D being non empty set
for f being homogeneous PartFunc of D * ,D holds
( ( f is quasi_total & not f is empty ) iff dom f = (arity f) -tuples_on D )
theorem Th25: :: COMPUT_1:25 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th26: :: COMPUT_1:26 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:27 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th28: :: COMPUT_1:28 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def6 defines with_the_same_arity COMPUT_1:def 6 :
:: deftheorem Def7 defines arity COMPUT_1:def 7 :
theorem :: COMPUT_1:29 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines HFuncs COMPUT_1:def 8 :
theorem Th30: :: COMPUT_1:30 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th31: :: COMPUT_1:31 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th32: :: COMPUT_1:32 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th33: :: COMPUT_1:33 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines const COMPUT_1:def 9 :
theorem Th34: :: COMPUT_1:34 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th35: :: COMPUT_1:35 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th36: :: COMPUT_1:36 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def10 defines succ COMPUT_1:def 10 :
theorem Th37: :: COMPUT_1:37 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th38: :: COMPUT_1:38 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines proj COMPUT_1:def 11 :
theorem Th39: :: COMPUT_1:39 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th40: :: COMPUT_1:40 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th41: :: COMPUT_1:41 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th42: :: COMPUT_1:42 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th43: :: COMPUT_1:43 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:44 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th45: :: COMPUT_1:45 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th46: :: COMPUT_1:46 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:47 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th48: :: COMPUT_1:48 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th49: :: COMPUT_1:49 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th50: :: COMPUT_1:50 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th51: :: COMPUT_1:51 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th52: :: COMPUT_1:52 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let g,
f1,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Nat;
pred g is_primitive-recursively_expressed_by f1,
f2,
i means :
Def12:
:: COMPUT_1:def 12
ex
n being
Nat st
(
dom g 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 g implies
Del p,
i in dom f1 ) & (
Del p,
i in dom f1 implies
p +* i,0
in dom g ) & (
p +* i,0
in dom g implies
g . (p +* i,0) = f1 . (Del p,i) ) & ( for
n being
Nat holds
( (
p +* i,
(n + 1) in dom g implies (
p +* i,
n in dom g &
(p +* i,n) ^ <*(g . (p +* i,n))*> in dom f2 ) ) & (
p +* i,
n in dom g &
(p +* i,n) ^ <*(g . (p +* i,n))*> in dom f2 implies
p +* i,
(n + 1) in dom g ) & (
p +* i,
(n + 1) in dom g implies
g . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*(g . (p +* i,n))*>) ) ) ) ) ) );
end;
:: deftheorem Def12 defines is_primitive-recursively_expressed_by COMPUT_1:def 12 :
for
g,
f1,
f2 being
to-naturals from-natural-fseqs homogeneous Function for
i being
Nat holds
(
g is_primitive-recursively_expressed_by f1,
f2,
i iff ex
n being
Nat st
(
dom g 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 g implies
Del p,
i in dom f1 ) & (
Del p,
i in dom f1 implies
p +* i,0
in dom g ) & (
p +* i,0
in dom g implies
g . (p +* i,0) = f1 . (Del p,i) ) & ( for
n being
Nat holds
( (
p +* i,
(n + 1) in dom g implies (
p +* i,
n in dom g &
(p +* i,n) ^ <*(g . (p +* i,n))*> in dom f2 ) ) & (
p +* i,
n in dom g &
(p +* i,n) ^ <*(g . (p +* i,n))*> in dom f2 implies
p +* i,
(n + 1) in dom g ) & (
p +* i,
(n + 1) in dom g implies
g . (p +* i,(n + 1)) = f2 . ((p +* i,n) ^ <*(g . (p +* i,n))*>) ) ) ) ) ) ) );
defpred S1[ Nat, Element of HFuncs NAT , Element of HFuncs NAT , FinSequence of NAT , Nat, homogeneous Function] means ( ( $5 in dom $4 & $4 +* $5,$1 in dom $2 & ($4 +* $5,$1) ^ <*($2 . ($4 +* $5,$1))*> in dom $6 implies $3 = $2 +* ({($4 +* $5,($1 + 1))} --> ($6 . (($4 +* $5,$1) ^ <*($2 . ($4 +* $5,$1))*>))) ) & ( ( not $5 in dom $4 or not $4 +* $5,$1 in dom $2 or not ($4 +* $5,$1) ^ <*($2 . ($4 +* $5,$1))*> in dom $6 ) implies $3 = $2 ) );
definition
let f1,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Nat;
let p be
FinSequence of
NAT ;
func primrec f1,
f2,
i,
p -> Element of
HFuncs NAT means :
Def13:
:: COMPUT_1:def 13
ex
F being
Function of
NAT ,
HFuncs NAT st
(
it = F . (p /. i) & (
i in dom p &
Del p,
i in dom f1 implies
F . 0
= {(p +* i,0)} --> (f1 . (Del p,i)) ) & ( ( not
i in dom p or not
Del p,
i in dom f1 ) implies
F . 0
= {} ) & ( for
m being
Nat holds
( (
i in dom p &
p +* i,
m in dom (F . m) &
(p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 implies
F . (m + 1) = (F . m) +* ({(p +* i,(m + 1))} --> (f2 . ((p +* i,m) ^ <*((F . m) . (p +* i,m))*>))) ) & ( ( not
i in dom p or not
p +* i,
m in dom (F . m) or not
(p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 ) implies
F . (m + 1) = F . m ) ) ) );
existence
ex b1 being Element of HFuncs NAT ex F being Function of NAT , HFuncs NAT st
( b1 = F . (p /. i) & ( i in dom p & Del p,i in dom f1 implies F . 0 = {(p +* i,0)} --> (f1 . (Del p,i)) ) & ( ( not i in dom p or not Del p,i in dom f1 ) implies F . 0 = {} ) & ( for m being Nat holds
( ( i in dom p & p +* i,m in dom (F . m) & (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 implies F . (m + 1) = (F . m) +* ({(p +* i,(m + 1))} --> (f2 . ((p +* i,m) ^ <*((F . m) . (p +* i,m))*>))) ) & ( ( not i in dom p or not p +* i,m in dom (F . m) or not (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 ) implies F . (m + 1) = F . m ) ) ) )
uniqueness
for b1, b2 being Element of HFuncs NAT st ex F being Function of NAT , HFuncs NAT st
( b1 = F . (p /. i) & ( i in dom p & Del p,i in dom f1 implies F . 0 = {(p +* i,0)} --> (f1 . (Del p,i)) ) & ( ( not i in dom p or not Del p,i in dom f1 ) implies F . 0 = {} ) & ( for m being Nat holds
( ( i in dom p & p +* i,m in dom (F . m) & (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 implies F . (m + 1) = (F . m) +* ({(p +* i,(m + 1))} --> (f2 . ((p +* i,m) ^ <*((F . m) . (p +* i,m))*>))) ) & ( ( not i in dom p or not p +* i,m in dom (F . m) or not (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 ) implies F . (m + 1) = F . m ) ) ) ) & ex F being Function of NAT , HFuncs NAT st
( b2 = F . (p /. i) & ( i in dom p & Del p,i in dom f1 implies F . 0 = {(p +* i,0)} --> (f1 . (Del p,i)) ) & ( ( not i in dom p or not Del p,i in dom f1 ) implies F . 0 = {} ) & ( for m being Nat holds
( ( i in dom p & p +* i,m in dom (F . m) & (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 implies F . (m + 1) = (F . m) +* ({(p +* i,(m + 1))} --> (f2 . ((p +* i,m) ^ <*((F . m) . (p +* i,m))*>))) ) & ( ( not i in dom p or not p +* i,m in dom (F . m) or not (p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 ) implies F . (m + 1) = F . m ) ) ) ) holds
b1 = b2
end;
:: deftheorem Def13 defines primrec COMPUT_1:def 13 :
for
f1,
f2 being
to-naturals from-natural-fseqs homogeneous Function for
i being
Nat for
p being
FinSequence of
NAT for
b5 being
Element of
HFuncs NAT holds
(
b5 = primrec f1,
f2,
i,
p iff ex
F being
Function of
NAT ,
HFuncs NAT st
(
b5 = F . (p /. i) & (
i in dom p &
Del p,
i in dom f1 implies
F . 0
= {(p +* i,0)} --> (f1 . (Del p,i)) ) & ( ( not
i in dom p or not
Del p,
i in dom f1 ) implies
F . 0
= {} ) & ( for
m being
Nat holds
( (
i in dom p &
p +* i,
m in dom (F . m) &
(p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 implies
F . (m + 1) = (F . m) +* ({(p +* i,(m + 1))} --> (f2 . ((p +* i,m) ^ <*((F . m) . (p +* i,m))*>))) ) & ( ( not
i in dom p or not
p +* i,
m in dom (F . m) or not
(p +* i,m) ^ <*((F . m) . (p +* i,m))*> in dom f2 ) implies
F . (m + 1) = F . m ) ) ) ) );
theorem Th53: :: COMPUT_1:53 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th54: :: COMPUT_1:54 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th55: :: COMPUT_1:55 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th56: :: COMPUT_1:56 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th57: :: COMPUT_1:57 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th58: :: COMPUT_1:58 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let f1,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Nat;
func primrec f1,
f2,
i -> Element of
HFuncs NAT means :
Def14:
:: COMPUT_1:def 14
ex
G being
Function of
((arity f1) + 1) -tuples_on NAT ,
HFuncs NAT st
(
it = Union G & ( for
p being
Element of
((arity f1) + 1) -tuples_on NAT holds
G . p = primrec f1,
f2,
i,
p ) );
existence
ex b1 being Element of HFuncs NAT ex G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st
( b1 = Union G & ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) )
uniqueness
for b1, b2 being Element of HFuncs NAT st ex G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st
( b1 = Union G & ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) ) & ex G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st
( b2 = Union G & ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) ) holds
b1 = b2
end;
:: deftheorem Def14 defines primrec COMPUT_1:def 14 :
theorem Th59: :: COMPUT_1:59 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th60: :: COMPUT_1:60 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th61: :: COMPUT_1:61 :: Showing IDV graph ... (Click the Palm Tree again to close it)
Lm2:
now
let f1,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
:: thesis: for p being Element of ((arity f1) + 1) -tuples_on NAT
for i, m being Nat
for F1, F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F1 . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F1 . 0 = {} ) & ( for M being Nat holds S1[M,F1 . M,F1 . (M + 1),p +* i,(m + 1),i,f2] ) & ( i in dom (p +* i,m) & Del (p +* i,m),i in dom f1 implies F . 0 = {((p +* i,m) +* i,0)} --> (f1 . (Del (p +* i,m),i)) ) & ( ( not i in dom (p +* i,m) or not Del (p +* i,m),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,m,i,f2] ) holds
F1 = Flet p be
Element of
((arity f1) + 1) -tuples_on NAT ;
:: thesis: for i, m being Nat
for F1, F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F1 . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F1 . 0 = {} ) & ( for M being Nat holds S1[M,F1 . M,F1 . (M + 1),p +* i,(m + 1),i,f2] ) & ( i in dom (p +* i,m) & Del (p +* i,m),i in dom f1 implies F . 0 = {((p +* i,m) +* i,0)} --> (f1 . (Del (p +* i,m),i)) ) & ( ( not i in dom (p +* i,m) or not Del (p +* i,m),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,m,i,f2] ) holds
F1 = Flet i,
m be
Nat;
:: thesis: for F1, F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F1 . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F1 . 0 = {} ) & ( for M being Nat holds S1[M,F1 . M,F1 . (M + 1),p +* i,(m + 1),i,f2] ) & ( i in dom (p +* i,m) & Del (p +* i,m),i in dom f1 implies F . 0 = {((p +* i,m) +* i,0)} --> (f1 . (Del (p +* i,m),i)) ) & ( ( not i in dom (p +* i,m) or not Del (p +* i,m),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,m,i,f2] ) holds
F1 = Fset pm1 =
p +* i,
(m + 1);
set pm =
p +* i,
m;
let F1,
F be
Function of
NAT ,
HFuncs NAT ;
:: thesis: ( ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F1 . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F1 . 0 = {} ) & ( for M being Nat holds S1[M,F1 . M,F1 . (M + 1),p +* i,(m + 1),i,f2] ) & ( i in dom (p +* i,m) & Del (p +* i,m),i in dom f1 implies F . 0 = {((p +* i,m) +* i,0)} --> (f1 . (Del (p +* i,m),i)) ) & ( ( not i in dom (p +* i,m) or not Del (p +* i,m),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,m,i,f2] ) implies F1 = F )assume that A1:
( (
i in dom (p +* i,(m + 1)) &
Del (p +* i,(m + 1)),
i in dom f1 implies
F1 . 0
= {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not
i in dom (p +* i,(m + 1)) or not
Del (p +* i,(m + 1)),
i in dom f1 ) implies
F1 . 0
= {} ) )
and A2:
for
M being
Nat holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
(m + 1),
i,
f2]
and A3:
( (
i in dom (p +* i,m) &
Del (p +* i,m),
i in dom f1 implies
F . 0
= {((p +* i,m) +* i,0)} --> (f1 . (Del (p +* i,m),i)) ) & ( ( not
i in dom (p +* i,m) or not
Del (p +* i,m),
i in dom f1 ) implies
F . 0
= {} ) )
and A4:
for
M being
Nat holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
m,
i,
f2]
;
:: thesis: F1 = FA5:
(
dom p = dom (p +* i,m) &
dom p = dom (p +* i,(m + 1)) )
by FUNCT_7:32;
A6:
(p +* i,m) +* i,0 =
p +* i,0
by FUNCT_7:36
.=
(p +* i,(m + 1)) +* i,0
by FUNCT_7:36
;
A7:
Del (p +* i,m),
i =
Del p,
i
by Th6
.=
Del (p +* i,(m + 1)),
i
by Th6
;
for
x being
set st
x in NAT holds
F . x = F1 . x
proof
defpred S2[
Nat]
means F . $1
= F1 . $1;
A8:
S2[0]
by A1, A3, A5, A6, A7;
A9:
for
k being
Nat st
S2[
k] holds
S2[
k + 1]
proof
let k be
Nat;
:: thesis: ( S2[k] implies S2[k + 1] )
assume A10:
S2[
k]
;
:: thesis: S2[k + 1]
A11:
(p +* i,m) +* i,
k =
p +* i,
k
by FUNCT_7:36
.=
(p +* i,(m + 1)) +* i,
k
by FUNCT_7:36
;
A12:
(p +* i,m) +* i,
(k + 1) =
p +* i,
(k + 1)
by FUNCT_7:36
.=
(p +* i,(m + 1)) +* i,
(k + 1)
by FUNCT_7:36
;
per cases
( ( i in dom (p +* i,m) & (p +* i,m) +* i,k in dom (F . k) & ((p +* i,m) +* i,k) ^ <*((F . k) . ((p +* i,m) +* i,k))*> in dom f2 ) or not i in dom (p +* i,m) or not (p +* i,m) +* i,k in dom (F . k) or not ((p +* i,m) +* i,k) ^ <*((F . k) . ((p +* i,m) +* i,k))*> in dom f2 )
;
suppose A13:
(
i in dom (p +* i,m) &
(p +* i,m) +* i,
k in dom (F . k) &
((p +* i,m) +* i,k) ^ <*((F . k) . ((p +* i,m) +* i,k))*> in dom f2 )
;
:: thesis: S2[k + 1]
hence F . (k + 1) =
(F . k) +* ({((p +* i,m) +* i,(k + 1))} --> (f2 . (((p +* i,m) +* i,k) ^ <*((F . k) . ((p +* i,m) +* i,k))*>)))
by A4
.=
F1 . (k + 1)
by A2, A5, A10, A11, A12, A13
;
:: thesis: verum
end;
end;
end;
A15:
for
k being
Nat holds
S2[
k]
from NAT_1:sch 1(, A8, A9);
let x be
set ;
:: thesis: ( x in NAT implies F . x = F1 . x )
assume
x in NAT
;
:: thesis: F . x = F1 . x
hence
F . x = F1 . x
by A15;
:: thesis: verum
end;
hence
F1 = F
by FUNCT_2:18;
:: thesis: verum
end;
Lm3:
now
let f1,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
:: thesis: for p being Element of ((arity f1) + 1) -tuples_on NAT
for i, m being Nat st i in dom p holds
for F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,(m + 1),i,f2] ) holds
( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) )let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
:: thesis: for i, m being Nat st i in dom p holds
for F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,(m + 1),i,f2] ) holds
( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) )let i,
m be
Nat;
:: thesis: ( i in dom p implies for F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,(m + 1),i,f2] ) holds
( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) ) )assume A1:
i in dom p
;
:: thesis: for F being Function of NAT , HFuncs NAT st ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,(m + 1),i,f2] ) holds
( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) )set pm =
p +* i,
m;
set pm1 =
p +* i,
(m + 1);
let F be
Function of
NAT ,
HFuncs NAT ;
:: thesis: ( ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 implies F . 0 = {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 ) implies F . 0 = {} ) & ( for M being Nat holds S1[M,F . M,F . (M + 1),p +* i,(m + 1),i,f2] ) implies ( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) ) )assume that A2:
( (
i in dom (p +* i,(m + 1)) &
Del (p +* i,(m + 1)),
i in dom f1 implies
F . 0
= {((p +* i,(m + 1)) +* i,0)} --> (f1 . (Del (p +* i,(m + 1)),i)) ) & ( ( not
i in dom (p +* i,(m + 1)) or not
Del (p +* i,(m + 1)),
i in dom f1 ) implies
F . 0
= {} ) )
and A3:
for
M being
Nat holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(m + 1),
i,
f2]
;
:: thesis: ( (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m) & not p +* i,(m + 1) in dom (F . m) )thus
(F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m)
:: thesis: not p +* i,(m + 1) in dom (F . m)
proof
per cases
( ( i in dom (p +* i,(m + 1)) & (p +* i,(m + 1)) +* i,m in dom (F . m) & ((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 ) or not i in dom (p +* i,(m + 1)) or not (p +* i,(m + 1)) +* i,m in dom (F . m) or not ((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 )
;
suppose
(
i in dom (p +* i,(m + 1)) &
(p +* i,(m + 1)) +* i,
m in dom (F . m) &
((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 )
;
:: thesis: (F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m)
then A4:
F . (m + 1) = (F . m) +* ({((p +* i,(m + 1)) +* i,(m + 1))} --> (f2 . (((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*>)))
by A3;
(
(p +* i,m) . i = m &
(p +* i,(m + 1)) . i = m + 1 )
by A1, FUNCT_7:33;
then
(
p +* i,
m <> p +* i,
(m + 1) &
p +* i,
(m + 1) = (p +* i,(m + 1)) +* i,
(m + 1) )
by FUNCT_7:36;
then
not
p +* i,
m in {((p +* i,(m + 1)) +* i,(m + 1))}
by TARSKI:def 1;
then
not
p +* i,
m in dom ({((p +* i,(m + 1)) +* i,(m + 1))} --> (f2 . (((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*>)))
by FUNCOP_1:19;
hence
(F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,m)
by A4, FUNCT_4:12;
:: thesis: verum
end;
end;
end;
A5:
for
m,
k being
Nat st
p +* i,
k in dom (F . m) holds
k <= m
proof
defpred S2[
Nat]
means for
k being
Nat st
p +* i,
k in dom (F . $1) holds
k <= $1;
A6:
S2[0]
proof
let k be
Nat;
:: thesis: ( p +* i,k in dom (F . 0) implies k <= 0 )
assume A7:
p +* i,
k in dom (F . 0)
;
:: thesis: k <= 0
per cases
( ( i in dom (p +* i,(m + 1)) & Del (p +* i,(m + 1)),i in dom f1 ) or not i in dom (p +* i,(m + 1)) or not Del (p +* i,(m + 1)),i in dom f1 )
;
suppose
(
i in dom (p +* i,(m + 1)) &
Del (p +* i,(m + 1)),
i in dom f1 )
;
:: thesis: k <= 0
then
dom (F . 0) = {((p +* i,(m + 1)) +* i,0)}
by A2, FUNCOP_1:19;
then A8:
p +* i,
k =
(p +* i,(m + 1)) +* i,0
by A7, TARSKI:def 1
.=
p +* i,0
by FUNCT_7:36
;
k =
(p +* i,k) . i
by A1, FUNCT_7:33
.=
0
by A1, A8, FUNCT_7:33
;
hence
k <= 0
;
:: thesis: verum
end;
end;
end;
A9:
for
m being
Nat st
S2[
m] holds
S2[
m + 1]
proof
let m be
Nat;
:: thesis: ( S2[m] implies S2[m + 1] )
assume A10:
S2[
m]
;
:: thesis: S2[m + 1]
let k be
Nat;
:: thesis: ( p +* i,k in dom (F . (m + 1)) implies k <= m + 1 )
assume A11:
p +* i,
k in dom (F . (m + 1))
;
:: thesis: k <= m + 1
per cases
( ( i in dom (p +* i,(m + 1)) & (p +* i,(m + 1)) +* i,m in dom (F . m) & ((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 ) or not i in dom (p +* i,(m + 1)) or not (p +* i,(m + 1)) +* i,m in dom (F . m) or not ((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 )
;
suppose
(
i in dom (p +* i,(m + 1)) &
(p +* i,(m + 1)) +* i,
m in dom (F . m) &
((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*> in dom f2 )
;
:: thesis: k <= m + 1
then
F . (m + 1) = (F . m) +* ({((p +* i,(m + 1)) +* i,(m + 1))} --> (f2 . (((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*>)))
by A3;
then
dom (F . (m + 1)) = (dom (F . m)) \/ (dom ({((p +* i,(m + 1)) +* i,(m + 1))} --> (f2 . (((p +* i,(m + 1)) +* i,m) ^ <*((F . m) . ((p +* i,(m + 1)) +* i,m))*>))))
by FUNCT_4:def 1;
then A12:
dom (F . (m + 1)) = (dom (F . m)) \/ {((p +* i,(m + 1)) +* i,(m + 1))}
by FUNCOP_1:19;
thus
k <= m + 1
:: thesis: verum
end;
end;
end;
thus
for
n being
Nat holds
S2[
n]
from NAT_1:sch 1(, A6, A9); :: thesis: verum
end;
thus
not
p +* i,
(m + 1) in dom (F . m)
:: thesis: verum
end;
Lm4:
now
let f1,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
:: thesis: for p being Element of ((arity f1) + 1) -tuples_on NAT
for i, m being Nat st i in dom p holds
for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
:: thesis: for i, m being Nat st i in dom p holds
for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))let i,
m be
Nat;
:: thesis: ( i in dom p implies for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n))) )assume A1:
i in dom p
;
:: thesis: for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))let G be
Function of
((arity f1) + 1) -tuples_on NAT ,
HFuncs NAT ;
:: thesis: ( ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) implies for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n))) )assume A2:
for
p being
Element of
((arity f1) + 1) -tuples_on NAT holds
G . p = primrec f1,
f2,
i,
p
;
:: thesis: for k, n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))thus
for
k,
n being
Nat holds
dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))
:: thesis: verum
proof
let k be
Nat;
:: thesis: for n being Nat holds dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))
set pk =
p +* i,
k;
defpred S2[
Nat]
means dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + $1)));
A3:
S2[0]
;
A4:
now
let n be
Nat;
:: thesis: ( S2[n] implies S2[b1 + 1] )assume A5:
S2[
n]
;
:: thesis: S2[b1 + 1]set pkn =
p +* i,
(k + n);
set pkn1 =
p +* i,
((k + n) + 1);
set m =
k + n;
consider F being
Function of
NAT ,
HFuncs NAT such that A6:
primrec f1,
f2,
i,
(p +* i,(k + n)) = F . ((p +* i,(k + n)) /. i)
and A7:
( (
i in dom (p +* i,(k + n)) &
Del (p +* i,(k + n)),
i in dom f1 implies
F . 0
= {((p +* i,(k + n)) +* i,0)} --> (f1 . (Del (p +* i,(k + n)),i)) ) & ( ( not
i in dom (p +* i,(k + n)) or not
Del (p +* i,(k + n)),
i in dom f1 ) implies
F . 0
= {} ) )
and A8:
for
M being
Nat holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(k + n),
i,
f2]
by Def13;
consider F1 being
Function of
NAT ,
HFuncs NAT such that A9:
primrec f1,
f2,
i,
(p +* i,((k + n) + 1)) = F1 . ((p +* i,((k + n) + 1)) /. i)
and A10:
( (
i in dom (p +* i,((k + n) + 1)) &
Del (p +* i,((k + n) + 1)),
i in dom f1 implies
F1 . 0
= {((p +* i,((k + n) + 1)) +* i,0)} --> (f1 . (Del (p +* i,((k + n) + 1)),i)) ) & ( ( not
i in dom (p +* i,((k + n) + 1)) or not
Del (p +* i,((k + n) + 1)),
i in dom f1 ) implies
F1 . 0
= {} ) )
and A11:
for
M being
Nat holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
((k + n) + 1),
i,
f2]
by Def13;
A12:
F1 = F
by A7, A8, A10, A11, Lm2;
A13:
(
dom p = dom (p +* i,k) &
dom p = dom (p +* i,((k + n) + 1)) &
dom p = dom (p +* i,(k + n)) )
by FUNCT_7:32;
then A14:
(p +* i,((k + n) + 1)) /. i =
(p +* i,((k + n) + 1)) . i
by A1, FINSEQ_4:def 4
.=
(k + n) + 1
by A1, FUNCT_7:33
;
A15:
(p +* i,(k + n)) /. i =
(p +* i,(k + n)) . i
by A1, A13, FINSEQ_4:def 4
.=
k + n
by A1, FUNCT_7:33
;
A16:
G . (p +* i,(k + (n + 1))) = F . ((k + n) + 1)
by A2, A9, A12, A14;
A17:
G . (p +* i,(k + n)) = F . (k + n)
by A2, A6, A15;
per cases
( ( i in dom (p +* i,(k + n)) & (p +* i,(k + n)) +* i,(k + n) in dom (F . (k + n)) & ((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 ) or not i in dom (p +* i,(k + n)) or not (p +* i,(k + n)) +* i,(k + n) in dom (F . (k + n)) or not ((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 )
;
suppose
(
i in dom (p +* i,(k + n)) &
(p +* i,(k + n)) +* i,
(k + n) in dom (F . (k + n)) &
((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 )
;
:: thesis: S2[b1 + 1]
then
F . ((k + n) + 1) = (F . (k + n)) +* ({((p +* i,(k + n)) +* i,((k + n) + 1))} --> (f2 . (((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*>)))
by A8;
then
dom (F . ((k + n) + 1)) = (dom (F . (k + n))) \/ (dom ({((p +* i,(k + n)) +* i,((k + n) + 1))} --> (f2 . (((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*>))))
by FUNCT_4:def 1;
then
dom (F . (k + n)) c= dom (F . ((k + n) + 1))
by XBOOLE_1:7;
hence
S2[
n + 1]
by A5, A16, A17, XBOOLE_1:1;
:: thesis: verum
end;
end;
end;
thus
for
n being
Nat holds
S2[
n]
from NAT_1:sch 1(, A3, A4); :: thesis: verum
end;
end;
Lm5:
now
let f1,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
:: thesis: for p being Element of ((arity f1) + 1) -tuples_on NAT
for i, m being Nat st i in dom p holds
for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n)))let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
:: thesis: for i, m being Nat st i in dom p holds
for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n)))let i,
m be
Nat;
:: thesis: ( i in dom p implies for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n))) )assume A1:
i in dom p
;
:: thesis: for G being Function of ((arity f1) + 1) -tuples_on NAT , HFuncs NAT st ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) holds
for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n)))let G be
Function of
((arity f1) + 1) -tuples_on NAT ,
HFuncs NAT ;
:: thesis: ( ( for p being Element of ((arity f1) + 1) -tuples_on NAT holds G . p = primrec f1,f2,i,p ) implies for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n))) )assume A2:
for
p being
Element of
((arity f1) + 1) -tuples_on NAT holds
G . p = primrec f1,
f2,
i,
p
;
:: thesis: for k, n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n)))thus
for
k,
n being
Nat st not
p +* i,
k in dom (G . (p +* i,k)) holds
not
p +* i,
k in dom (G . (p +* i,(k + n)))
:: thesis: verum
proof
let k be
Nat;
:: thesis: for n being Nat st not p +* i,k in dom (G . (p +* i,k)) holds
not p +* i,k in dom (G . (p +* i,(k + n)))
set pk =
p +* i,
k;
defpred S2[
Nat]
means ( not
p +* i,
k in dom (G . (p +* i,k)) implies not
p +* i,
k in dom (G . (p +* i,(k + $1))) );
A3:
S2[0]
;
A4:
for
n being
Nat st
S2[
n] holds
S2[
n + 1]
proof
let n be
Nat;
:: thesis: ( S2[n] implies S2[n + 1] )
assume that A5:
S2[
n]
and A6:
not
p +* i,
k in dom (G . (p +* i,k))
;
:: thesis: not p +* i,k in dom (G . (p +* i,(k + (n + 1))))
set pkn =
p +* i,
(k + n);
set pkn1 =
p +* i,
((k + n) + 1);
set m =
k + n;
consider F being
Function of
NAT ,
HFuncs NAT such that A7:
primrec f1,
f2,
i,
(p +* i,(k + n)) = F . ((p +* i,(k + n)) /. i)
and A8:
( (
i in dom (p +* i,(k + n)) &
Del (p +* i,(k + n)),
i in dom f1 implies
F . 0
= {((p +* i,(k + n)) +* i,0)} --> (f1 . (Del (p +* i,(k + n)),i)) ) & ( ( not
i in dom (p +* i,(k + n)) or not
Del (p +* i,(k + n)),
i in dom f1 ) implies
F . 0
= {} ) )
and A9:
for
M being
Nat holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(k + n),
i,
f2]
by Def13;
consider F1 being
Function of
NAT ,
HFuncs NAT such that A10:
primrec f1,
f2,
i,
(p +* i,((k + n) + 1)) = F1 . ((p +* i,((k + n) + 1)) /. i)
and A11:
( (
i in dom (p +* i,((k + n) + 1)) &
Del (p +* i,((k + n) + 1)),
i in dom f1 implies
F1 . 0
= {((p +* i,((k + n) + 1)) +* i,0)} --> (f1 . (Del (p +* i,((k + n) + 1)),i)) ) & ( ( not
i in dom (p +* i,((k + n) + 1)) or not
Del (p +* i,((k + n) + 1)),
i in dom f1 ) implies
F1 . 0
= {} ) )
and A12:
for
M being
Nat holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
((k + n) + 1),
i,
f2]
by Def13;
A13:
F1 = F
by A8, A9, A11, A12, Lm2;
A14:
(
dom p = dom (p +* i,k) &
dom p = dom (p +* i,((k + n) + 1)) &
dom p = dom (p +* i,(k + n)) )
by FUNCT_7:32;
then A15:
(p +* i,((k + n) + 1)) /. i =
(p +* i,((k + n) + 1)) . i
by A1, FINSEQ_4:def 4
.=
(k + n) + 1
by A1, FUNCT_7:33
;
(p +* i,(k + n)) /. i =
(p +* i,(k + n)) . i
by A1, A14, FINSEQ_4:def 4
.=
k + n
by A1, FUNCT_7:33
;
then A16:
not
p +* i,
k in dom (F . (k + n))
by A2, A5, A6, A7;
A17:
G . (p +* i,(k + (n + 1))) = F . ((k + n) + 1)
by A2, A10, A13, A15;
per cases
( ( i in dom (p +* i,(k + n)) & (p +* i,(k + n)) +* i,(k + n) in dom (F . (k + n)) & ((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 ) or not i in dom (p +* i,(k + n)) or not (p +* i,(k + n)) +* i,(k + n) in dom (F . (k + n)) or not ((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 )
;
suppose
(
i in dom (p +* i,(k + n)) &
(p +* i,(k + n)) +* i,
(k + n) in dom (F . (k + n)) &
((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*> in dom f2 )
;
:: thesis: not p +* i,k in dom (G . (p +* i,(k + (n + 1))))
then
F . ((k + n) + 1) = (F . (k + n)) +* ({((p +* i,(k + n)) +* i,((k + n) + 1))} --> (f2 . (((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*>)))
by A9;
then
dom (F . ((k + n) + 1)) = (dom (F . (k + n))) \/ (dom ({((p +* i,(k + n)) +* i,((k + n) + 1))} --> (f2 . (((p +* i,(k + n)) +* i,(k + n)) ^ <*((F . (k + n)) . ((p +* i,(k + n)) +* i,(k + n)))*>))))
by FUNCT_4:def 1;
then A18:
dom (F . ((k + n) + 1)) = (dom (F . (k + n))) \/ {((p +* i,(k + n)) +* i,((k + n) + 1))}
by FUNCOP_1:19;
k <= k + n
by NAT_1:29;
then A19:
k <> (k + n) + 1
by NAT_1:38;
(
(p +* i,k) . i = k &
((p +* i,(k + n)) +* i,((k + n) + 1)) . i = (k + n) + 1 )
by A1, A14, FUNCT_7:33;
then
not
p +* i,
k in {((p +* i,(k + n)) +* i,((k + n) + 1))}
by A19, TARSKI:def 1;
hence
not
p +* i,
k in dom (G . (p +* i,(k + (n + 1))))
by A16, A17, A18, XBOOLE_0:def 2;
:: thesis: verum
end;
end;
end;
thus
for
n being
Nat holds
S2[
n]
from NAT_1:sch 1(, A3, A4); :: thesis: verum
end;
end;
Lm6:
for i, m being Nat
for f1, f2 being non empty to-naturals from-natural-fseqs homogeneous Function
for p being Element of ((arity f1) + 1) -tuples_on NAT st i in dom p 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) ) & ( 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))*>) ) )
theorem :: COMPUT_1:62 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:63 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th64: :: COMPUT_1:64 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:65 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
i,
m being
Nat for
f1,
f2 being non
empty to-naturals from-natural-fseqs homogeneous Function for
p being
Element of
((arity f1) + 1) -tuples_on NAT st
i in dom p holds
(
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 Lm6;
theorem :: COMPUT_1:66 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
i,
m being
Nat for
f1,
f2 being non
empty to-naturals from-natural-fseqs homogeneous Function for
p being
Element of
((arity f1) + 1) -tuples_on NAT st
i in dom p &
p +* i,
(m + 1) in dom (primrec f1,f2,i) holds
(primrec f1,f2,i) . (p +* i,(m + 1)) = f2 . ((p +* i,m) ^ <*((primrec f1,f2,i) . (p +* i,m))*>) by Lm6;
theorem Th67: :: COMPUT_1:67 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th68: :: COMPUT_1:68 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: COMPUT_1:69 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def15 defines composition_closed COMPUT_1:def 15 :
:: deftheorem Def16 defines primitive-recursion_closed COMPUT_1:def 16 :
:: deftheorem Def17 defines primitive-recursively_closed COMPUT_1:def 17 :
theorem Th70: :: COMPUT_1:70 :: Showing IDV graph ... (Click the Palm Tree again to close it)
Lm7:
for X being non empty set
for n, i being Nat st 1 <= i & i <= n holds
for x being Element of X
for p being Element of n -tuples_on X holds p +* i,x in n -tuples_on X
;
theorem Th71: :: COMPUT_1:71 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th72: :: COMPUT_1:72 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th73: :: COMPUT_1:73 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th74: :: COMPUT_1:74 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th75: :: COMPUT_1:75 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th76: :: COMPUT_1:76 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th77: :: COMPUT_1:77 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines PrimRec COMPUT_1:def 18 :
theorem Th78: :: COMPUT_1:78 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def19 defines primitive-recursive COMPUT_1:def 19 :
definition
func initial-funcs -> Subset of
(HFuncs NAT ) equals :: COMPUT_1:def 20
{(0 const 0),(1 succ 1)} \/ { (n proj i) where n, i is Nat : ( 1 <= i & i <= n ) } ;
coherence
{(0 const 0),(1 succ 1)} \/ { (n proj i) where n, i is Nat : ( 1 <= i & i <= n ) } is Subset of (HFuncs NAT )
let Q be
Subset of
(HFuncs NAT );
func PR-closure Q -> Subset of
(HFuncs NAT ) equals :: COMPUT_1:def 21
Q \/ { g where g is Element of HFuncs NAT : ex f1, f2 being Element of HFuncs NAT ex i being Nat st
( f1 in Q & f2 in Q & g is_primitive-recursively_expressed_by f1,f2,i ) } ;
coherence
Q \/ { g where g is Element of HFuncs NAT : ex f1, f2 being Element of HFuncs NAT ex i being Nat st
( f1 in Q & f2 in Q & g is_primitive-recursively_expressed_by f1,f2,i ) } is Subset of (HFuncs NAT )
func composition-closure Q -> Subset of
(HFuncs NAT ) equals :: COMPUT_1:def 22
Q \/ { (f * <:F:>) where f is Element of HFuncs NAT , F is with_the_same_arity Element of (HFuncs NAT ) * : ( f in Q & arity f = len F & rng F c= Q ) } ;
coherence
Q \/ { (f * <:F:>) where f is Element of HFuncs NAT , F is with_the_same_arity Element of (HFuncs NAT ) * : ( f in Q & arity f = len F & rng F c= Q ) } is Subset of (HFuncs NAT )
end;
:: deftheorem defines initial-funcs COMPUT_1:def 20 :
:: deftheorem defines PR-closure COMPUT_1:def 21 :
:: deftheorem defines composition-closure COMPUT_1:def 22 :
:: deftheorem Def23 defines PrimRec-Approximation COMPUT_1:def 23 :
theorem Th79: :: COMPUT_1:79 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th80: :: COMPUT_1:80 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th81: :: COMPUT_1:81 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th82: :: COMPUT_1:82 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def24 defines nullary COMPUT_1:def 24 :
:: deftheorem Def25 defines unary COMPUT_1:def 25 :
:: deftheorem Def26 defines binary COMPUT_1:def 26 :
:: deftheorem Def27 defines 3-ary COMPUT_1:def 27 :
registration
let f be
primitive-recursive unary Function;
let g be
primitive-recursive 3-ary Function;
cluster primrec f,
g,1
-> non
empty quasi_total to-naturals from-natural-fseqs len-total homogeneous primitive-recursive binary ;
coherence
( primrec f,g,1 is primitive-recursive & primrec f,g,1 is binary )
cluster primrec f,
g,2
-> non
empty quasi_total to-naturals from-natural-fseqs len-total homogeneous primitive-recursive binary ;
coherence
( primrec f,g,2 is primitive-recursive & primrec f,g,2 is binary )
end;
theorem Th83: :: COMPUT_1:83 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th84: :: COMPUT_1:84 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th85: :: COMPUT_1:85 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th86: :: COMPUT_1:86 :: Showing IDV graph ... (Click the Palm Tree again to close it)
Lm8:
now
let g be non
empty quasi_total homogeneous PartFunc of
NAT * ,
NAT ;
:: thesis: ( arity g = 2 implies ( dom <:<*(3 proj 1),(3 proj 3)*>:> = (dom (3 proj 1)) /\ (dom (3 proj 3)) & dom <:<*(3 proj 1),(3 proj 3)*>:> = 3 -tuples_on NAT & dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3 -tuples_on NAT & ex G being homogeneous PartFunc of NAT * , NAT st
( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty ) ) )assume A1:
arity g = 2
;
:: thesis: ( dom <:<*(3 proj 1),(3 proj 3)*>:> = (dom (3 proj 1)) /\ (dom (3 proj 3)) & dom <:<*(3 proj 1),(3 proj 3)*>:> = 3 -tuples_on NAT & dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3 -tuples_on NAT & ex G being homogeneous PartFunc of NAT * , NAT st
( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty ) )thus A2:
dom <:<*(3 proj 1),(3 proj 3)*>:> = (dom (3 proj 1)) /\ (dom (3 proj 3))
by FUNCT_6:62;
:: thesis: ( dom <:<*(3 proj 1),(3 proj 3)*>:> = 3 -tuples_on NAT & dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3 -tuples_on NAT & ex G being homogeneous PartFunc of NAT * , NAT st
( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty ) )hence A3:
dom <:<*(3 proj 1),(3 proj 3)*>:> =
(3 -tuples_on NAT ) /\ (dom (3 proj 3))
by Th40
.=
(3 -tuples_on NAT ) /\ (3 -tuples_on NAT )
by Th40
.=
3
-tuples_on NAT
;
:: thesis: ( dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3 -tuples_on NAT & ex G being homogeneous PartFunc of NAT * , NAT st
( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty ) )reconsider z3 =
<*0,0,0*> as
FinSequence of
NAT ;
len z3 = 3
by FINSEQ_1:62;
then A4:
z3 is
Element of 3
-tuples_on NAT
by FINSEQ_2:110;
A5:
dom g = 2
-tuples_on NAT
by A1, Th25;
set G =
g * <:<*(3 proj 1),(3 proj 3)*>:>;
now
let x be
set ;
:: thesis: ( ( x in rng <:<*(3 proj 1),(3 proj 3)*>:> implies x in dom g ) & ( x in dom g implies x in rng <:<*(3 proj 1),(3 proj 3)*>:> ) )set f =
<*(3 proj 1),(3 proj 3)*>;
set F =
<:<*(3 proj 1),(3 proj 3)*>:>;
A6:
product (rngs <*(3 proj 1),(3 proj 3)*>) =
product <*(rng (3 proj 1)),(rng (3 proj 3))*>
by FUNCT_6:34
.=
product <*NAT ,(rng (3 proj 3))*>
by Th40
.=
product <*NAT ,NAT *>
by Th40
.=
2
-tuples_on NAT
by FUNCT_6:6
;
assume
x in dom g
;
:: thesis: x in rng <:<*(3 proj 1),(3 proj 3)*>:>then consider d1,
d2 being
Nat such that A8:
x = <*d1,d2*>
by A5, FINSEQ_2:120;
reconsider x' =
<*d1,0,d2*> as
Element of 3
-tuples_on NAT by FINSEQ_2:124;
<:<*(3 proj 1),(3 proj 3)*>:> . x' =
<*((3 proj 1) . x'),((3 proj 3) . x')*>
by A2, A3, FUNCT_6:62
.=
<*(x' . 1),((3 proj 3) . x')*>
by Th42
.=
<*(x' . 1),(x' . 3)*>
by Th42
.=
<*d1,(x' . 3)*>
by FINSEQ_1:62
.=
x
by A8, FINSEQ_1:62
;
hence
x in rng <:<*(3 proj 1),(3 proj 3)*>:>
by A3, FUNCT_1:def 5;
:: thesis: verum
end;
then A9:
rng <:<*(3 proj 1),(3 proj 3)*>:> = dom g
by TARSKI:2;
hence A10:
dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3
-tuples_on NAT
by A3, RELAT_1:46;
:: thesis: ex G being homogeneous PartFunc of NAT * , NAT st
( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty )then A11:
dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) c= NAT *
by MSUALG_1:12;
rng g c= NAT
by RELSET_1:12;
then
rng (g * <:<*(3 proj 1),(3 proj 3)*>:>) c= NAT
by A9, RELAT_1:47;
then reconsider G =
g * <:<*(3 proj 1),(3 proj 3)*>:> as
PartFunc of
NAT * ,
NAT by A11, RELSET_1:11;
then reconsider G =
G as
homogeneous PartFunc of
NAT * ,
NAT by Def4;
take G =
G;
:: thesis: ( G = g * <:<*(3 proj 1),(3 proj 3)*>:> & G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty )thus
G = g * <:<*(3 proj 1),(3 proj 3)*>:>
;
:: thesis: ( G is Element of HFuncs NAT & arity G = 3 & G is quasi_total & not G is empty )
G is
Element of
PFuncs (NAT * ),
NAT
by PARTFUN1:119;
then
G in HFuncs NAT
;
hence
G is
Element of
HFuncs NAT
;
:: thesis: ( arity G = 3 & G is quasi_total & not G is empty )
for
x being
FinSequence st
x in dom G holds
3
= len x
by A10, FINSEQ_2:109;
hence
arity G = 3
by A4, A10, Def5;
:: thesis: ( G is quasi_total & not G is empty )hence
(
G is
quasi_total & not
G is
empty )
by A10, Th25;
:: thesis: verum
end;
:: deftheorem defines (1,2)->(1,?,2) COMPUT_1:def 28 :
registration
let g be
to-naturals from-natural-fseqs len-total homogeneous binary Function;
cluster (1,2)->(1,?,2) g -> non
empty to-naturals from-natural-fseqs len-total homogeneous 3-ary ;
coherence
( not (1,2)->(1,?,2) g is empty & (1,2)->(1,?,2) g is 3-ary & (1,2)->(1,?,2) g is len-total )
end;
theorem Th87: :: COMPUT_1:87 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th88: :: COMPUT_1:88 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines [+] COMPUT_1:def 29 :
theorem Th89: :: COMPUT_1:89 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
func [*] -> primitive-recursive binary Function equals :: COMPUT_1:def 30
primrec (1 const 0),
((1,2)->(1,?,2) [+] ),2;
coherence
primrec (1 const 0),((1,2)->(1,?,2) [+] ),2 is primitive-recursive binary Function
;
end;
:: deftheorem defines [*] COMPUT_1:def 30 :
theorem Th90: :: COMPUT_1:90 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines [!] COMPUT_1:def 31 :
scheme :: COMPUT_1:sch 2
Primrec2{
F1()
-> to-naturals from-natural-fseqs len-total homogeneous binary Function,
F2()
-> to-naturals from-natural-fseqs len-total homogeneous binary Function,
F3()
-> to-naturals from-natural-fseqs len-total homogeneous binary Function,
F4(
set ,
set )
-> Nat,
F5(
set ,
set )
-> Nat,
F6(
set ,
set )
-> Nat } :
provided
A1:
for
i,
j being
Nat holds
F1()
. <*i,j*> = F4(
i,
j)
and A2:
for
i,
j being
Nat holds
F2()
. <*i,j*> = F5(
i,
j)
and A3:
for
i,
j being
Nat holds
F3()
. <*i,j*> = F6(
i,
j)
theorem :: COMPUT_1:91 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
func [^] -> primitive-recursive binary Function equals :: COMPUT_1:def 32
primrec (1 const 1),
((1,2)->(1,?,2) [*] ),2;
coherence
primrec (1 const 1),((1,2)->(1,?,2) [*] ),2 is primitive-recursive binary Function
;
end;
:: deftheorem defines [^] COMPUT_1:def 32 :
theorem :: COMPUT_1:92 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines [pred] COMPUT_1:def 33 :
theorem Th93: :: COMPUT_1:93 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
func [-] -> primitive-recursive binary Function equals :: COMPUT_1:def 34
primrec (1 proj 1),
((1,2)->(1,?,2) ([pred] * <:<*(2 proj 2)*>:>)),2;
coherence
primrec (1 proj 1),((1,2)->(1,?,2) ([pred] * <:<*(2 proj 2)*>:>)),2 is primitive-recursive binary Function
;
end;
:: deftheorem defines [-] COMPUT_1:def 34 :
theorem :: COMPUT_1:94 :: Showing IDV graph ... (Click the Palm Tree again to close it)