:: COMPUT_1 semantic presentation
theorem Th1: :: COMPUT_1:1
canceled;
theorem Th2: :: COMPUT_1:2
canceled;
theorem Th3: :: COMPUT_1:3
theorem Th4: :: COMPUT_1:4
canceled;
theorem Th5: :: COMPUT_1:5
theorem Th6: :: COMPUT_1:6
theorem Th7: :: COMPUT_1:7
theorem Th8: :: COMPUT_1:8
theorem Th9: :: COMPUT_1:9
theorem Th10: :: COMPUT_1:10
theorem Th11: :: COMPUT_1:11
theorem Th12: :: COMPUT_1:12
theorem Th13: :: COMPUT_1:13
:: deftheorem Def1 defines compatible COMPUT_1:def 1 :
theorem Th14: :: COMPUT_1:14
theorem Th15: :: COMPUT_1:15
theorem Th16: :: COMPUT_1:16
theorem Th17: :: COMPUT_1:17
theorem Th18: :: COMPUT_1:18
:: 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
theorem Th20: :: COMPUT_1:20
:: deftheorem Def5 defines arity COMPUT_1:def 5 :
theorem Th21: :: COMPUT_1:21
theorem Th22: :: COMPUT_1:22
theorem Th23: :: COMPUT_1:23
theorem Th24: :: COMPUT_1:24
Lemma106:
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
theorem Th26: :: COMPUT_1:26
theorem Th27: :: COMPUT_1:27
theorem Th28: :: COMPUT_1:28
:: deftheorem Def6 defines with_the_same_arity COMPUT_1:def 6 :
:: deftheorem Def7 defines arity COMPUT_1:def 7 :
theorem Th29: :: COMPUT_1:29
:: deftheorem Def8 defines HFuncs COMPUT_1:def 8 :
theorem Th30: :: COMPUT_1:30
theorem Th31: :: COMPUT_1:31
theorem Th32: :: COMPUT_1:32
theorem Th33: :: COMPUT_1:33
:: deftheorem Def9 defines const COMPUT_1:def 9 :
theorem Th34: :: COMPUT_1:34
theorem Th35: :: COMPUT_1:35
theorem Th36: :: COMPUT_1:36
:: deftheorem Def10 defines succ COMPUT_1:def 10 :
theorem Th37: :: COMPUT_1:37
theorem Th38: :: COMPUT_1:38
:: deftheorem Def11 defines proj COMPUT_1:def 11 :
theorem Th39: :: COMPUT_1:39
theorem Th40: :: COMPUT_1:40
theorem Th41: :: COMPUT_1:41
theorem Th42: :: COMPUT_1:42
theorem Th43: :: COMPUT_1:43
theorem Th44: :: COMPUT_1:44
theorem Th45: :: COMPUT_1:45
theorem Th46: :: COMPUT_1:46
theorem Th47: :: COMPUT_1:47
theorem Th48: :: COMPUT_1:48
theorem Th49: :: COMPUT_1:49
theorem Th50: :: COMPUT_1:50
theorem Th51: :: COMPUT_1:51
theorem Th52: :: COMPUT_1:52
definition
let g be
to-naturals from-natural-fseqs homogeneous Function,
f1 be
to-naturals from-natural-fseqs homogeneous Function,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Element of
NAT ;
pred c1 is_primitive-recursively_expressed_by c2,
c3,
c4 means :
Def12:
:: COMPUT_1:def 12
ex
n being
Element of
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
Element of
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
Element of
NAT holds
(
g is_primitive-recursively_expressed_by f1,
f2,
i iff ex
n being
Element of
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
Element of
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[ Element of NAT , Element of HFuncs NAT , Element of HFuncs NAT , FinSequence of NAT , Element of NAT , homogeneous Function] means ( ( a5 in dom a4 & a4 +* a5,a1 in dom a2 & (a4 +* a5,a1) ^ <*(a2 . (a4 +* a5,a1))*> in dom a6 implies a3 = a2 +* ({(a4 +* a5,(a1 + 1))} --> (a6 . ((a4 +* a5,a1) ^ <*(a2 . (a4 +* a5,a1))*>))) ) & ( ( not a5 in dom a4 or not a4 +* a5,a1 in dom a2 or not (a4 +* a5,a1) ^ <*(a2 . (a4 +* a5,a1))*> in dom a6 ) implies a3 = a2 ) );
definition
let f1 be
to-naturals from-natural-fseqs homogeneous Function,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Element of
NAT ;
let p be
FinSequence of
NAT ;
func primrec c1,
c2,
c3,
c4 -> 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
Element of
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 Element of 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 Element of 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 Element of 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
Element of
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
Element of
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
theorem Th54: :: COMPUT_1:54
theorem Th55: :: COMPUT_1:55
theorem Th56: :: COMPUT_1:56
theorem Th57: :: COMPUT_1:57
theorem Th58: :: COMPUT_1:58
definition
let f1 be
to-naturals from-natural-fseqs homogeneous Function,
f2 be
to-naturals from-natural-fseqs homogeneous Function;
let i be
Element of
NAT ;
func primrec c1,
c2,
c3 -> 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
theorem Th60: :: COMPUT_1:60
theorem Th61: :: COMPUT_1:61
E253:
now
let f1 be non
empty to-naturals from-natural-fseqs homogeneous Function,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
let i be
Element of
NAT ,
m be
Element of
NAT ;
set pm1 =
p +* i,
(m + 1);
set pm =
p +* i,
m;
let F1 be
Function of
NAT ,
HFuncs NAT ,
F be
Function of
NAT ,
HFuncs NAT ;
assume that E48:
( (
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 E49:
for
M being
Element of
NAT holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
(m + 1),
i,
f2]
and E51:
( (
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 E52:
for
M being
Element of
NAT holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
m,
i,
f2]
;
E53:
(
dom p = dom (p +* i,m) &
dom p = dom (p +* i,(m + 1)) )
by FUNCT_7:32;
E54:
(p +* i,m) +* i,0 =
p +* i,0
by FUNCT_7:36
.=
(p +* i,(m + 1)) +* i,0
by FUNCT_7:36
;
E55:
Del (p +* i,m),
i =
Del p,
i
by
.=
Del (p +* i,(m + 1)),
i
by
;
for
x being
set st
x in NAT holds
F . x = F1 . x
proof
defpred S2[
Element of
NAT ]
means F . a1 = F1 . a1;
E57:
S2[0]
by , , Th10, Th11, ;
E58:
for
k being
Element of
NAT st
S2[
k] holds
S2[
k + 1]
proof
let k be
Element of
NAT ;
assume E64:
S2[
k]
;
E65:
(p +* i,m) +* i,
k =
p +* i,
k
by FUNCT_7:36
.=
(p +* i,(m + 1)) +* i,
k
by FUNCT_7:36
;
E66:
(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 E67:
(
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 )
;
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
.=
F1 . (k + 1)
by Th8, Th10, Th13, Def1, ,
;
end;
end;
end;
E137:
for
k being
Element of
NAT holds
S2[
k]
from NAT_1:sch 1(, Th12);
let x be
set ;
assume
x in NAT
;
hence
F . x = F1 . x
by Th13;
end;
hence
F1 = F
by FUNCT_2:18;
end;
E257:
now
let f1 be non
empty to-naturals from-natural-fseqs homogeneous Function,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
let i be
Element of
NAT ,
m be
Element of
NAT ;
assume E48:
i in dom p
;
set pm =
p +* i,
m;
set pm1 =
p +* i,
(m + 1);
let F be
Function of
NAT ,
HFuncs NAT ;
assume that E49:
( (
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 E51:
for
M being
Element of
NAT holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(m + 1),
i,
f2]
;
thus
(F . (m + 1)) . (p +* i,m) = (F . m) . (p +* i,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 )
;
then E52:
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 ;
(
(p +* i,m) . i = m &
(p +* i,(m + 1)) . i = m + 1 )
by Th8, 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 Th10, FUNCT_4:12;
end;
end;
end;
E53:
for
m,
k being
Element of
NAT st
p +* i,
k in dom (F . m) holds
k <= m
proof
defpred S2[
Element of
NAT ]
means for
k being
Element of
NAT st
p +* i,
k in dom (F . a1) holds
k <= a1;
E54:
S2[0]
proof
let k be
Element of
NAT ;
assume E55:
p +* i,
k in dom (F . 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 )
;
then
dom (F . 0) = {((p +* i,(m + 1)) +* i,0)}
by , FUNCOP_1:19;
then E57:
p +* i,
k =
(p +* i,(m + 1)) +* i,0
by , TARSKI:def 1
.=
p +* i,0
by FUNCT_7:36
;
k =
(p +* i,k) . i
by Th8, FUNCT_7:33
.=
0
by Th8, , FUNCT_7:33
;
hence
k <= 0
;
end;
end;
end;
E58:
for
m being
Element of
NAT st
S2[
m] holds
S2[
m + 1]
proof
let m be
Element of
NAT ;
assume E64:
S2[
m]
;
let k be
Element of
NAT ;
assume E65:
p +* i,
k in dom (F . (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 )
;
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 ;
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 E66:
dom (F . (m + 1)) = (dom (F . m)) \/ {((p +* i,(m + 1)) +* i,(m + 1))}
by FUNCOP_1:19;
thus
k <= m + 1
end;
end;
end;
thus
for
n being
Element of
NAT holds
S2[
n]
from NAT_1:sch 1(Th11, );
end;
thus
not
p +* i,
(m + 1) in dom (F . m)
end;
E258:
now
let f1 be non
empty to-naturals from-natural-fseqs homogeneous Function,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
let i be
Element of
NAT ,
m be
Element of
NAT ;
assume E48:
i in dom p
;
let G be
Function of
((arity f1) + 1) -tuples_on NAT ,
HFuncs NAT ;
assume E49:
for
p being
Element of
((arity f1) + 1) -tuples_on NAT holds
G . p = primrec f1,
f2,
i,
p
;
thus
for
k,
n being
Element of
NAT holds
dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + n)))
proof
let k be
Element of
NAT ;
set pk =
p +* i,
k;
defpred S2[
Element of
NAT ]
means dom (G . (p +* i,k)) c= dom (G . (p +* i,(k + a1)));
E51:
S2[0]
;
E52:
now
let n be
Element of
NAT ;
assume E53:
S2[
n]
;
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 E54:
primrec f1,
f2,
i,
(p +* i,(k + n)) = F . ((p +* i,(k + n)) /. i)
and E55:
( (
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 E57:
for
M being
Element of
NAT holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(k + n),
i,
f2]
by E55;
consider F1 being
Function of
NAT ,
HFuncs NAT such that E58:
primrec f1,
f2,
i,
(p +* i,((k + n) + 1)) = F1 . ((p +* i,((k + n) + 1)) /. i)
and E64:
( (
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 E65:
for
M being
Element of
NAT holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
((k + n) + 1),
i,
f2]
by E55;
E66:
F1 = F
by Th12, Th13, , , E66;
E67:
(
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 E136:
(p +* i,((k + n) + 1)) /. i =
(p +* i,((k + n) + 1)) . i
by , FINSEQ_4:def 4
.=
(k + n) + 1
by , FUNCT_7:33
;
E137:
(p +* i,(k + n)) /. i =
(p +* i,(k + n)) . i
by , Th14, FINSEQ_4:def 4
.=
k + n
by , FUNCT_7:33
;
E138:
G . (p +* i,(k + (n + 1))) = F . ((k + n) + 1)
by , Def1, , ;
E139:
G . (p +* i,(k + n)) = F . (k + n)
by , , Th15;
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 )
;
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 Th13;
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 , , , XBOOLE_1:1;
end;
suppose
( 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 )
;
hence
S2[
n + 1]
by , Th13, , ;
end;
end;
end;
thus
for
n being
Element of
NAT holds
S2[
n]
from NAT_1:sch 1(Th10, Th11);
end;
end;
E262:
now
let f1 be non
empty to-naturals from-natural-fseqs homogeneous Function,
f2 be non
empty to-naturals from-natural-fseqs homogeneous Function;
let p be
Element of
((arity f1) + 1) -tuples_on NAT ;
let i be
Element of
NAT ,
m be
Element of
NAT ;
assume E48:
i in dom p
;
let G be
Function of
((arity f1) + 1) -tuples_on NAT ,
HFuncs NAT ;
assume E49:
for
p being
Element of
((arity f1) + 1) -tuples_on NAT holds
G . p = primrec f1,
f2,
i,
p
;
thus
for
k,
n being
Element of
NAT st not
p +* i,
k in dom (G . (p +* i,k)) holds
not
p +* i,
k in dom (G . (p +* i,(k + n)))
proof
let k be
Element of
NAT ;
set pk =
p +* i,
k;
defpred S2[
Element of
NAT ]
means ( not
p +* i,
k in dom (G . (p +* i,k)) implies not
p +* i,
k in dom (G . (p +* i,(k + a1))) );
E51:
S2[0]
;
E52:
for
n being
Element of
NAT st
S2[
n] holds
S2[
n + 1]
proof
let n be
Element of
NAT ;
assume that E53:
S2[
n]
and E54:
not
p +* i,
k in dom (G . (p +* i,k))
;
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 E55:
primrec f1,
f2,
i,
(p +* i,(k + n)) = F . ((p +* i,(k + n)) /. i)
and E57:
( (
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 E58:
for
M being
Element of
NAT holds
S1[
M,
F . M,
F . (M + 1),
p +* i,
(k + n),
i,
f2]
by E55;
consider F1 being
Function of
NAT ,
HFuncs NAT such that E64:
primrec f1,
f2,
i,
(p +* i,((k + n) + 1)) = F1 . ((p +* i,((k + n) + 1)) /. i)
and E65:
( (
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 E66:
for
M being
Element of
NAT holds
S1[
M,
F1 . M,
F1 . (M + 1),
p +* i,
((k + n) + 1),
i,
f2]
by E55;
E67:
F1 = F
by Def1, , , Th14, E66;
E136:
(
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 E137:
(p +* i,((k + n) + 1)) /. i =
(p +* i,((k + n) + 1)) . i
by , FINSEQ_4:def 4
.=
(k + n) + 1
by , FUNCT_7:33
;
(p +* i,(k + n)) /. i =
(p +* i,(k + n)) . i
by , Th15, FINSEQ_4:def 4
.=
k + n
by , FUNCT_7:33
;
then E138:
not
p +* i,
k in dom (F . (k + n))
by Th10, , Th12, Th13;
E139:
G . (p +* i,(k + (n + 1))) = F . ((k + n) + 1)
by Th10, , , ;
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 )
;
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 ;
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 E142:
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 E143:
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 , Th15, FUNCT_7:33;
then
not
p +* i,
k in {((p +* i,(k + n)) +* i,((k + n) + 1))}
by , TARSKI:def 1;
hence
not
p +* i,
k in dom (G . (p +* i,(k + (n + 1))))
by , Th16, Th17, XBOOLE_0:def 2;
end;
end;
end;
thus
for
n being
Element of
NAT holds
S2[
n]
from NAT_1:sch 1(Th11, );
end;
end;
Lemma263:
for i, m being Element of 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 Th62: :: COMPUT_1:62
theorem Th63: :: COMPUT_1:63
theorem Th64: :: COMPUT_1:64
theorem Th65: :: COMPUT_1:65
for
i,
m being
Element of
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 ;
theorem Th66: :: COMPUT_1:66
for
i,
m being
Element of
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 ;
theorem Th67: :: COMPUT_1:67
theorem Th68: :: COMPUT_1:68
theorem Th69: :: COMPUT_1:69
:: 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
Lemma275:
for X being non empty set
for n, i being Element of 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
theorem Th72: :: COMPUT_1:72
theorem Th73: :: COMPUT_1:73
theorem Th74: :: COMPUT_1:74
theorem Th75: :: COMPUT_1:75
theorem Th76: :: COMPUT_1:76
theorem Th77: :: COMPUT_1:77
:: deftheorem Def18 defines PrimRec COMPUT_1:def 18 :
theorem Th78: :: COMPUT_1:78
:: 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 is Element of NAT , i is Element of NAT : ( 1 <= i & i <= n ) } ;
coherence
{(0 const 0),(1 succ 1)} \/ { (n proj i) where n is Element of NAT , i is Element of NAT : ( 1 <= i & i <= n ) } is Subset of (HFuncs NAT )
let Q be
Subset of
(HFuncs NAT );
func PR-closure c1 -> 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 Element of 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 Element of 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 c1 -> 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 Def20 defines initial-funcs COMPUT_1:def 20 :
:: deftheorem Def21 defines PR-closure COMPUT_1:def 21 :
:: deftheorem Def22 defines composition-closure COMPUT_1:def 22 :
:: deftheorem Def23 defines PrimRec-Approximation COMPUT_1:def 23 :
theorem Th79: :: COMPUT_1:79
theorem Th80: :: COMPUT_1:80
theorem Th81: :: COMPUT_1:81
theorem Th82: :: COMPUT_1:82
:: 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 a1,
a2,1
-> non
empty to-naturals quasi_total 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 a1,
a2,2
-> non
empty to-naturals quasi_total 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
theorem Th84: :: COMPUT_1:84
theorem Th85: :: COMPUT_1:85
theorem Th86: :: COMPUT_1:86
E319:
now
let g be non
empty quasi_total homogeneous PartFunc of
NAT * ,
NAT ;
assume E48:
arity g = 2
;
thus E49:
dom <:<*(3 proj 1),(3 proj 3)*>:> = (dom (3 proj 1)) /\ (dom (3 proj 3))
by FUNCT_6:62;
hence E51:
dom <:<*(3 proj 1),(3 proj 3)*>:> =
(3 -tuples_on NAT ) /\ (dom (3 proj 3))
by
.=
(3 -tuples_on NAT ) /\ (3 -tuples_on NAT )
by
.=
3
-tuples_on NAT
;
reconsider z3 =
<*0,0,0*> as
FinSequence of
NAT ;
len z3 = 3
by FINSEQ_1:62;
then E52:
z3 is
Element of 3
-tuples_on NAT
by FINSEQ_2:110;
E53:
dom g = 2
-tuples_on NAT
by Th21, ;
set G =
g * <:<*(3 proj 1),(3 proj 3)*>:>;
now
let x be
set ;
set f =
<*(3 proj 1),(3 proj 3)*>;
set F =
<:<*(3 proj 1),(3 proj 3)*>:>;
E54:
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
.=
product <*NAT ,NAT *>
by
.=
2
-tuples_on NAT
by FUNCT_6:6
;
assume
x in dom g
;
then consider d1 being
Element of
NAT ,
d2 being
Element of
NAT such that E57:
x = <*d1,d2*>
by Lemma106, 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 Th22, Th23, FUNCT_6:62
.=
<*(x' . 1),((3 proj 3) . x')*>
by
.=
<*(x' . 1),(x' . 3)*>
by
.=
<*d1,(x' . 3)*>
by FINSEQ_1:62
.=
x
by , FINSEQ_1:62
;
hence
x in rng <:<*(3 proj 1),(3 proj 3)*>:>
by Th23, FUNCT_1:def 5;
end;
then E58:
rng <:<*(3 proj 1),(3 proj 3)*>:> = dom g
by TARSKI:2;
hence E64:
dom (g * <:<*(3 proj 1),(3 proj 3)*>:>) = 3
-tuples_on NAT
by Th23, RELAT_1:46;
then E65:
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 , RELAT_1:47;
then reconsider G =
g * <:<*(3 proj 1),(3 proj 3)*>:> as
PartFunc of
NAT * ,
NAT by Th25, RELSET_1:11;
then reconsider G =
G as
homogeneous PartFunc of
NAT * ,
NAT by ;
take G =
G;
thus
G = g * <:<*(3 proj 1),(3 proj 3)*>:>
;
G is
Element of
PFuncs (NAT * ),
NAT
by PARTFUN1:119;
then
G in HFuncs NAT
;
hence
G is
Element of
HFuncs NAT
;
for
x being
FinSequence st
x in dom G holds
3
= len x
by , FINSEQ_2:109;
hence
arity G = 3
by Th24, , ;
hence
(
G is
quasi_total & not
G is
empty )
by , ;
end;
:: deftheorem Def28 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) a1 -> 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
theorem Th88: :: COMPUT_1:88
:: deftheorem Def29 defines [+] COMPUT_1:def 29 :
theorem Th89: :: COMPUT_1:89
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 Def30 defines [*] COMPUT_1:def 30 :
theorem Th90: :: COMPUT_1:90
:: deftheorem Def31 defines [!] COMPUT_1:def 31 :
theorem Th91: :: COMPUT_1:91
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 Def32 defines [^] COMPUT_1:def 32 :
theorem Th92: :: COMPUT_1:92
:: deftheorem Def33 defines [pred] COMPUT_1:def 33 :
theorem Th93: :: COMPUT_1:93
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 Def34 defines [-] COMPUT_1:def 34 :
theorem Th94: :: COMPUT_1:94