comput_1.miz
begin
reserve i,j,k,c,m,n for
Element of
NAT ,
a,x,y,z,X,Y for
set,
D,E for non
empty
set,
R for
Relation,
f,g for
Function,
p,q for
FinSequence;
theorem ::
COMPUT_1:1
Th1: (
<*x, y*>
+* (1,z))
=
<*z, y*> & (
<*x, y*>
+* (2,z))
=
<*x, z*>
proof
set a = (
<*x, y*>
+* (1,z)), b = (
<*x, y*>
+* (2,z));
(
<*x, y*>
. 1)
= x by
FINSEQ_1: 44;
then
A1: (b
. 1)
= x by
FUNCT_7: 32;
(
<*x, y*>
. 2)
= y by
FINSEQ_1: 44;
then
A2: (a
. 2)
= y by
FUNCT_7: 32;
A3: (
len
<*x, y*>)
= 2 by
FINSEQ_1: 44;
then 1
in (
dom
<*x, y*>) by
FINSEQ_3: 25;
then
A4: (a
. 1)
= z by
FUNCT_7: 31;
(
len a)
= 2 by
A3,
FUNCT_7: 97;
hence (
<*x, y*>
+* (1,z))
=
<*z, y*> by
A4,
A2,
FINSEQ_1: 44;
2
in (
dom
<*x, y*>) by
A3,
FINSEQ_3: 25;
then
A5: (b
. 2)
= z by
FUNCT_7: 31;
(
len b)
= 2 by
A3,
FUNCT_7: 97;
hence thesis by
A1,
A5,
FINSEQ_1: 44;
end;
theorem ::
COMPUT_1:2
Th2: (f
+* (a,x))
= (g
+* (a,y)) implies (f
+* (a,z))
= (g
+* (a,z))
proof
set i = a;
assume
A1: (f
+* (i,x))
= (g
+* (i,y));
A2: (
dom (g
+* (i,z)))
= (
dom g) by
FUNCT_7: 30;
A3: (
dom (g
+* (i,y)))
= (
dom g) by
FUNCT_7: 30;
A4: (
dom (f
+* (i,x)))
= (
dom f) by
FUNCT_7: 30;
now
thus (
dom (f
+* (i,z)))
= (
dom f) by
FUNCT_7: 30;
thus (
dom (g
+* (i,z)))
= (
dom f) by
A1,
A3,
A2,
FUNCT_7: 30;
let a be
object;
assume
A5: a
in (
dom f);
per cases ;
suppose
A6: a
= i;
hence ((f
+* (i,z))
. a)
= z by
A5,
FUNCT_7: 31
.= ((g
+* (i,z))
. a) by
A1,
A4,
A3,
A5,
A6,
FUNCT_7: 31;
end;
suppose
A7: a
<> i;
hence ((f
+* (i,z))
. a)
= (f
. a) by
FUNCT_7: 32
.= ((g
+* (i,y))
. a) by
A1,
A7,
FUNCT_7: 32
.= (g
. a) by
A7,
FUNCT_7: 32
.= ((g
+* (i,z))
. a) by
A7,
FUNCT_7: 32;
end;
end;
hence thesis;
end;
theorem ::
COMPUT_1:3
Th3: for i be
Nat holds (
Del ((p
+* (i,x)),i))
= (
Del (p,i))
proof
let i be
Nat;
set f = p;
per cases ;
suppose
A1: i
in (
dom f);
then
A2: i
<= (
len f) by
FINSEQ_3: 25;
1
<= i by
A1,
FINSEQ_3: 25;
then
consider j be
Nat such that
A3: (
len f)
= (j
+ 1) by
A2,
NAT_1: 6;
reconsider j as
Element of
NAT by
ORDINAL1:def 12;
A4: (
dom (f
+* (i,x)))
= (
dom f) by
FUNCT_7: 30;
then
A5: (
len (f
+* (i,x)))
= (
len f) by
FINSEQ_3: 29;
then (
len (
Del ((f
+* (i,x)),i)))
= j by
A1,
A3,
A4,
FINSEQ_3: 109;
then
A6: (
dom (
Del ((f
+* (i,x)),i)))
= (
Seg j) by
FINSEQ_1:def 3;
now
thus (
len (
Del ((f
+* (i,x)),i)))
= j by
A1,
A3,
A4,
A5,
FINSEQ_3: 109;
thus (
len (
Del (f,i)))
= j by
A1,
A3,
FINSEQ_3: 109;
let a be
Nat;
assume a
in (
dom (
Del ((f
+* (i,x)),i)));
then
A7: a
<= j by
A6,
FINSEQ_1: 1;
per cases ;
suppose
A8: a
< i;
hence ((
Del ((f
+* (i,x)),i))
. a)
= ((f
+* (i,x))
. a) by
FINSEQ_3: 110
.= (f
. a) by
A8,
FUNCT_7: 32
.= ((
Del (f,i))
. a) by
A8,
FINSEQ_3: 110;
end;
suppose
A9: i
<= a;
then
A10: i
< (a
+ 1) by
NAT_1: 13;
thus ((
Del ((f
+* (i,x)),i))
. a)
= ((f
+* (i,x))
. (a
+ 1)) by
A1,
A3,
A4,
A5,
A7,
A9,
FINSEQ_3: 111
.= (f
. (a
+ 1)) by
A10,
FUNCT_7: 32
.= ((
Del (f,i))
. a) by
A1,
A3,
A7,
A9,
FINSEQ_3: 111;
end;
end;
hence thesis by
FINSEQ_2: 9;
end;
suppose not i
in (
dom f);
hence thesis by
FUNCT_7:def 3;
end;
end;
theorem ::
COMPUT_1:4
Th4: (p
+* (i,a))
= (q
+* (i,a)) implies (
Del (p,i))
= (
Del (q,i))
proof
set x = p, y = q;
assume
A1: (x
+* (i,a))
= (y
+* (i,a));
set xi = (x
+* (i,a)), yi = (y
+* (i,a));
set dx = (
Del (x,i)), dy = (
Del (y,i));
A2: (
dom xi)
= (
dom x) by
FUNCT_7: 30;
A3: (
dom yi)
= (
dom y) by
FUNCT_7: 30;
A4: (
Seg (
len y))
= (
dom y) by
FINSEQ_1:def 3;
A5: (
Seg (
len x))
= (
dom x) by
FINSEQ_1:def 3;
per cases ;
suppose
A6: i
in (
dom x);
A7: (
dom (
Del (x,i)))
= (
Seg (
len dx)) by
FINSEQ_1:def 3;
now
thus (
len dx)
= (
len dx);
x
<>
{} by
A6;
then
consider m be
Nat such that
A8: (
len x)
= (m
+ 1) by
NAT_1: 6;
reconsider m as
Element of
NAT by
ORDINAL1:def 12;
A9: (
len dx)
= m by
A6,
A8,
FINSEQ_3: 109;
hence (
len dy)
= (
len dx) by
A1,
A2,
A3,
A5,
A4,
A6,
A8,
FINSEQ_1: 6,
FINSEQ_3: 109;
let j be
Nat;
assume j
in (
dom (
Del (x,i)));
then
A10: j
<= m by
A7,
A9,
FINSEQ_1: 1;
per cases ;
suppose
A11: j
< i;
hence (dx
. j)
= (x
. j) by
FINSEQ_3: 110
.= (yi
. j) by
A1,
A11,
FUNCT_7: 32
.= (y
. j) by
A11,
FUNCT_7: 32
.= (dy
. j) by
A11,
FINSEQ_3: 110;
end;
suppose
A12: i
<= j;
then
A13: (j
+ 1)
> i by
NAT_1: 13;
thus (dx
. j)
= (x
. (j
+ 1)) by
A6,
A8,
A10,
A12,
FINSEQ_3: 111
.= (yi
. (j
+ 1)) by
A1,
A13,
FUNCT_7: 32
.= (y
. (j
+ 1)) by
A13,
FUNCT_7: 32
.= (dy
. j) by
A1,
A2,
A3,
A5,
A4,
A6,
A8,
A10,
A12,
FINSEQ_1: 6,
FINSEQ_3: 111;
end;
end;
hence thesis by
FINSEQ_2: 9;
end;
suppose
A14: not i
in (
dom x);
then xi
= x by
FUNCT_7:def 3;
hence thesis by
A1,
A3,
A14,
FUNCT_7:def 3;
end;
end;
theorem ::
COMPUT_1:5
Th5: (
0
-tuples_on X)
=
{
{} }
proof
set S = { s where s be
Element of (X
* ) : (
len s)
=
0 };
now
let x be
object;
hereby
assume x
in S;
then
consider s be
Element of (X
* ) such that
A1: x
= s and
A2: (
len s)
=
0 ;
s
=
{} by
A2;
hence x
in
{
{} } by
A1,
TARSKI:def 1;
end;
assume x
in
{
{} };
then
A3: x
=
{} by
TARSKI:def 1;
(
<*> (X
* )) is
Element of (X
* ) by
FINSEQ_1: 49;
hence x
in S by
A3,
CARD_1: 27;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
COMPUT_1:6
n
<>
0 implies (n
-tuples_on
{} )
=
{}
proof
assume that
A1: n
<>
0 and
A2: (n
-tuples_on
{} )
<>
{} ;
consider x be
object such that
A3: x
in (n
-tuples_on
{} ) by
A2;
ex s be
Element of (
{}
* ) st s
= x & (
len s)
= n by
A3;
hence contradiction by
A1;
end;
theorem ::
COMPUT_1:7
Th7: for f be
Function-yielding
Function holds
{}
in (
rng f) implies
<:f:>
=
{}
proof
let f be
Function-yielding
Function;
A1: (
dom
<:f:>)
= (
meet (
doms f)) by
FUNCT_6: 29
.= (
meet (
rng (
doms f))) by
FUNCT_6:def 4;
assume
{}
in (
rng f);
then
consider x be
object such that
A2: x
in (
dom f) and
A3: (f
. x)
=
{} by
FUNCT_1:def 3;
A4: (
dom (
doms f))
= (
dom f) by
FUNCT_6:def 2;
then
A5: x
in (
dom (
doms f)) by
A2;
then ((
doms f)
. x)
=
{} by
A3,
A4,
FUNCT_6:def 2;
hence thesis by
A1,
A5,
FUNCT_1: 3,
SETFAM_1: 4;
end;
theorem ::
COMPUT_1:8
Th8: (
rng f)
= D implies (
rng
<:
<*f*>:>)
= (1
-tuples_on D)
proof
set X = D;
A1: (
dom
<:
<*f*>:>)
= (
dom f) by
FINSEQ_3: 141;
assume
A2: (
rng f)
= X;
now
let x be
object;
hereby
assume x
in (
rng
<:
<*f*>:>);
then
consider y be
object such that
A3: y
in (
dom
<:
<*f*>:>) and
A4: (
<:
<*f*>:>
. y)
= x by
FUNCT_1:def 3;
reconsider fy = (f
. y) as
Element of X by
A2,
A1,
A3,
FUNCT_1: 3;
A5:
<*fy*> is
Element of (1
-tuples_on X) by
FINSEQ_2: 131;
(
<:
<*f*>:>
. y)
=
<*(f
. y)*> by
A1,
A3,
FINSEQ_3: 141;
hence x
in (1
-tuples_on X) by
A4,
A5;
end;
assume x
in (1
-tuples_on X);
then x is
Tuple of 1, X by
FINSEQ_2: 131;
then
consider d be
Element of X such that
A6: x
=
<*d*> by
FINSEQ_2: 97;
consider y be
object such that
A7: y
in (
dom f) and
A8: (f
. y)
= d by
A2,
FUNCT_1:def 3;
(
<:
<*f*>:>
. y)
=
<*d*> by
A7,
A8,
FINSEQ_3: 141;
hence x
in (
rng
<:
<*f*>:>) by
A1,
A6,
A7,
FUNCT_1: 3;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
COMPUT_1:9
Th9: 1
<= i & i
<= (n
+ 1) implies for p be
Element of ((n
+ 1)
-tuples_on D) holds (
Del (p,i))
in (n
-tuples_on D)
proof
set X = D;
assume that
A1: 1
<= i and
A2: i
<= (n
+ 1);
let p be
Element of ((n
+ 1)
-tuples_on X);
A3: (
len p)
= (n
+ 1) by
CARD_1:def 7;
then i
in (
dom p) by
A1,
A2,
FINSEQ_3: 25;
then
A4: (
len (
Del (p,i)))
= n by
A3,
FINSEQ_3: 109;
(
Del (p,i)) is
FinSequence of X by
FINSEQ_3: 105;
then (
Del (p,i)) is
Element of (n
-tuples_on X) by
A4,
FINSEQ_2: 92;
hence thesis;
end;
begin
definition
let X be
set;
::
COMPUT_1:def1
attr X is
compatible means
:
Def1: for f,g be
Function st f
in X & g
in X holds f
tolerates g;
end
registration
cluster non
empty
functional
compatible for
set;
existence
proof
set A =
{
{} };
take A;
A is
compatible
proof
let f,g be
Function;
assume that
A1: f
in A and g
in A;
f
=
{} by
A1,
TARSKI:def 1;
hence thesis;
end;
hence thesis;
end;
end
registration
let X be
functional
compatible
set;
cluster (
union X) ->
Function-like
Relation-like;
coherence
proof
thus (
union X) is
Function-like
proof
let x,y1,y2 be
object;
assume that
A1:
[x, y1]
in (
union X) and
A2:
[x, y2]
in (
union X);
consider f be
set such that
A3:
[x, y1]
in f and
A4: f
in X by
A1,
TARSKI:def 4;
consider g be
set such that
A5:
[x, y2]
in g and
A6: g
in X by
A2,
TARSKI:def 4;
reconsider f, g as
Function by
A4,
A6;
A7: y1 is
set & y2 is
set by
TARSKI: 1;
A8: x
in (
dom f) by
A3,
XTUPLE_0:def 12;
then
A9: (f
. x)
= y1 by
A3,
FUNCT_1:def 2,
A7;
A10: x
in (
dom g) by
A5,
XTUPLE_0:def 12;
then
A11: (g
. x)
= y2 by
A5,
FUNCT_1:def 2,
A7;
A12: x
in ((
dom f)
/\ (
dom g)) by
A8,
A10,
XBOOLE_0:def 4;
f
tolerates g by
A4,
A6,
Def1;
hence thesis by
A9,
A11,
A12;
end;
thus (
union X) is
Relation-like
proof
let x be
object;
assume x
in (
union X);
then ex f be
set st x
in f & f
in X by
TARSKI:def 4;
hence thesis by
RELAT_1:def 1;
end;
end;
end
::$Canceled
theorem ::
COMPUT_1:11
Th10: X is
functional
compatible iff (
union X) is
Function
proof
now
assume
A1: (
union X) is
Function;
thus X is
functional
proof
let f be
object;
assume
A2: f
in X;
reconsider f as
set by
TARSKI: 1;
A3: f is
Function-like
proof
let x,y1,y2 be
object;
assume that
A4:
[x, y1]
in f and
A5:
[x, y2]
in f;
A6:
[x, y2]
in (
union X) by
A2,
A5,
TARSKI:def 4;
[x, y1]
in (
union X) by
A2,
A4,
TARSKI:def 4;
hence thesis by
A1,
A6,
FUNCT_1:def 1;
end;
f is
Relation-like
proof
let x be
object;
assume x
in f;
then x
in (
union X) by
A2,
TARSKI:def 4;
hence thesis by
A1,
RELAT_1:def 1;
end;
hence thesis by
A3;
end;
thus X is
compatible
proof
let f,g be
Function such that
A7: f
in X and
A8: g
in X;
let x be
object;
assume
A9: x
in ((
dom f)
/\ (
dom g));
then
A10: x
in (
dom g) by
XBOOLE_0:def 4;
then
consider y2 be
object such that
A11:
[x, y2]
in g by
XTUPLE_0:def 12;
A12:
[x, y2]
in (
union X) by
A8,
A11,
TARSKI:def 4;
A13: x
in (
dom f) by
A9,
XBOOLE_0:def 4;
then
consider y1 be
object such that
A14:
[x, y1]
in f by
XTUPLE_0:def 12;
A15: y1 is
set by
TARSKI: 1;
[x, y1]
in (
union X) by
A7,
A14,
TARSKI:def 4;
then
A16: y1
= y2 by
A1,
A12,
FUNCT_1:def 1;
thus (f
. x)
= y1 by
A13,
A14,
FUNCT_1:def 2,
A15
.= (g
. x) by
A10,
A11,
A16,
FUNCT_1:def 2,
A15;
end;
end;
hence thesis;
end;
registration
let X,Y be
set;
cluster non
empty
compatible for
PFUNC_DOMAIN of X, Y;
existence
proof
set A =
{
{} };
A1: A is
compatible
proof
let f,g be
Function;
assume that
A2: f
in A and g
in A;
f
=
{} by
A2,
TARSKI:def 1;
hence thesis;
end;
now
let x be
Element of A;
x
=
{} by
TARSKI:def 1;
hence x is
PartFunc of X, Y by
XBOOLE_1: 2;
end;
then A is
PFUNC_DOMAIN of X, Y by
RFUNCT_3:def 3;
hence thesis by
A1;
end;
end
theorem ::
COMPUT_1:12
Th11: for X be non
empty
functional
compatible
set holds (
dom (
union X))
= (
union the set of all (
dom f) where f be
Element of X)
proof
let X be non
empty
functional
compatible
set;
set F = the set of all (
dom f) where f be
Element of X;
now
let x be
object;
hereby
assume x
in (
dom (
union X));
then
consider y be
object such that
A1:
[x, y]
in (
union X) by
XTUPLE_0:def 12;
consider Z be
set such that
A2:
[x, y]
in Z and
A3: Z
in X by
A1,
TARSKI:def 4;
reconsider Z as
Element of X by
A3;
A4: (
dom Z)
in F;
x
in (
dom Z) by
A2,
XTUPLE_0:def 12;
hence x
in (
union F) by
A4,
TARSKI:def 4;
end;
assume x
in (
union F);
then
consider Z be
set such that
A5: x
in Z and
A6: Z
in F by
TARSKI:def 4;
consider f be
Element of X such that
A7: Z
= (
dom f) by
A6;
consider y be
object such that
A8:
[x, y]
in f by
A5,
A7,
XTUPLE_0:def 12;
[x, y]
in (
union X) by
A8,
TARSKI:def 4;
hence x
in (
dom (
union X)) by
XTUPLE_0:def 12;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
COMPUT_1:13
Th12: for X be
functional
compatible
set, f be
Function st f
in X holds (
dom f)
c= (
dom (
union X)) & for x be
set st x
in (
dom f) holds ((
union X)
. x)
= (f
. x)
proof
let X be
functional
compatible
set, f be
Function such that
A1: f
in X;
thus (
dom f)
c= (
dom (
union X))
proof
let x be
object;
assume x
in (
dom f);
then
consider y be
object such that
A2:
[x, y]
in f by
XTUPLE_0:def 12;
[x, y]
in (
union X) by
A1,
A2,
TARSKI:def 4;
hence thesis by
XTUPLE_0:def 12;
end;
let x be
set;
assume x
in (
dom f);
then
consider y be
object such that
A3:
[x, y]
in f by
XTUPLE_0:def 12;
[x, y]
in (
union X) by
A1,
A3,
TARSKI:def 4;
hence ((
union X)
. x)
= y by
FUNCT_1: 1
.= (f
. x) by
A3,
FUNCT_1: 1;
end;
theorem ::
COMPUT_1:14
Th13: for X be non
empty
functional
compatible
set holds (
rng (
union X))
= (
union the set of all (
rng f) where f be
Element of X)
proof
let X be non
empty
functional
compatible
set;
set F = the set of all (
rng f) where f be
Element of X;
now
let y be
object;
hereby
assume y
in (
rng (
union X));
then
consider x be
object such that
A1:
[x, y]
in (
union X) by
XTUPLE_0:def 13;
consider Z be
set such that
A2:
[x, y]
in Z and
A3: Z
in X by
A1,
TARSKI:def 4;
reconsider Z as
Element of X by
A3;
A4: (
rng Z)
in F;
y
in (
rng Z) by
A2,
XTUPLE_0:def 13;
hence y
in (
union F) by
A4,
TARSKI:def 4;
end;
assume y
in (
union F);
then
consider Z be
set such that
A5: y
in Z and
A6: Z
in F by
TARSKI:def 4;
consider f be
Element of X such that
A7: Z
= (
rng f) by
A6;
consider x be
object such that
A8:
[x, y]
in f by
A5,
A7,
XTUPLE_0:def 13;
[x, y]
in (
union X) by
A8,
TARSKI:def 4;
hence y
in (
rng (
union X)) by
XTUPLE_0:def 13;
end;
hence thesis by
TARSKI: 2;
end;
registration
let X, Y;
cluster ->
functional for
PFUNC_DOMAIN of X, Y;
coherence by
RFUNCT_3:def 3;
end
theorem ::
COMPUT_1:15
Th14: for P be
compatible
PFUNC_DOMAIN of X, Y holds (
union P) is
PartFunc of X, Y
proof
let D be
compatible
PFUNC_DOMAIN of X, Y;
set E = the set of all (
dom f) where f be
Element of D;
set F = the set of all (
rng f) where f be
Element of D;
reconsider u = (
union D) as
Function;
A1: (
rng u)
c= Y
proof
let y be
object;
assume y
in (
rng u);
then y
in (
union F) by
Th13;
then
consider Z be
set such that
A2: y
in Z and
A3: Z
in F by
TARSKI:def 4;
consider f be
Element of D such that
A4: Z
= (
rng f) by
A3;
(
rng f)
c= Y by
RELAT_1:def 19;
hence thesis by
A2,
A4;
end;
(
dom u)
c= X
proof
let x be
object;
assume x
in (
dom u);
then x
in (
union E) by
Th11;
then
consider Z be
set such that
A5: x
in Z and
A6: Z
in E by
TARSKI:def 4;
ex f be
Element of D st Z
= (
dom f) by
A6;
hence thesis by
A5;
end;
hence thesis by
A1,
RELSET_1: 4;
end;
begin
notation
let f be
Relation;
synonym f is
to-naturals for f is
natural-valued;
end
registration
cluster (
NAT
* )
-defined
to-naturals for
Function;
existence
proof
take f =
{} ;
thus (
dom f)
c= (
NAT
* );
thus thesis;
end;
end
definition
let f be (
NAT
* )
-defined
Relation;
::
COMPUT_1:def2
attr f is
len-total means
:
Def2: for x,y be
FinSequence of
NAT st (
len x)
= (
len y) & x
in (
dom f) holds y
in (
dom f);
end
theorem ::
COMPUT_1:16
Th15: (
dom R)
c= (n
-tuples_on D) implies R is
homogeneous;
registration
cluster
empty ->
homogeneous for
Relation;
coherence ;
end
registration
let p be
FinSequence, x be
set;
cluster (p
.--> x) -> non
empty
homogeneous;
coherence ;
end
registration
cluster non
empty
homogeneous for
Function;
existence
proof
set p = the
FinSequence;
take (p
.-->
0 );
thus thesis;
end;
end
registration
let f be
homogeneous
Function, g be
Function;
cluster (g
* f) ->
homogeneous;
coherence
proof
(
dom (g
* f))
c= (
dom f) by
RELAT_1: 25;
hence (
dom (g
* f)) is
with_common_domain;
end;
end
registration
let X,Y be
set;
cluster
homogeneous for
PartFunc of (X
* ), Y;
existence
proof
set f =
{} ;
reconsider f as
PartFunc of (X
* ), Y by
XBOOLE_1: 2;
take f;
thus (
dom f) is
with_common_domain;
end;
end
registration
let X,Y be non
empty
set;
cluster non
empty
homogeneous for
PartFunc of (X
* ), Y;
existence
proof
set y = the
Element of Y;
reconsider Z = (
0
-tuples_on X) as non
empty
Subset of (X
* ) by
FINSEQ_2: 90;
reconsider f = (Z
--> y) as
PartFunc of (X
* ), Y;
take f;
thus f is non
empty;
thus (
dom f) is
with_common_domain;
end;
end
registration
let X be non
empty
set;
cluster non
empty
homogeneous
quasi_total for
PartFunc of (X
* ), X;
existence
proof
set n = the
Element of
NAT , y = the
Element of X;
reconsider Z = (n
-tuples_on X) as non
empty
Subset of (X
* ) by
FINSEQ_2: 90;
reconsider f = (Z
--> y) as
PartFunc of (X
* ), X;
take f;
thus f is non
empty;
thus f is
homogeneous;
let p,q be
FinSequence of X;
assume that
A2: (
len p)
= (
len q) and
A3: p
in (
dom f);
(
len q)
= n by
A2,
A3,
CARD_1:def 7;
then q is
Element of Z by
FINSEQ_2: 92;
hence thesis;
end;
end
registration
cluster non
empty
homogeneous
to-naturals
len-total for (
NAT
* )
-defined
Function;
existence
proof
reconsider Z = (
0
-tuples_on
NAT ) as non
empty
Subset of (
NAT
* ) by
FINSEQ_2: 90;
set f = (Z
-->
0 );
reconsider f as (
NAT
* )
-defined
Function;
A2: f is
len-total
proof
let x,y be
FinSequence of
NAT such that
A3: (
len x)
= (
len y) and
A4: x
in (
dom f);
A5: y is
Element of ((
len y)
-tuples_on
NAT ) by
FINSEQ_2: 92;
(
len x)
=
0 by
A4;
hence thesis by
A3,
A5;
end;
take f;
thus thesis by
A2;
end;
end
registration
cluster ->
to-naturals(
NAT
* )
-defined for
PartFunc of (
NAT
* ),
NAT ;
coherence ;
end
registration
cluster
quasi_total ->
len-total for
PartFunc of (
NAT
* ),
NAT ;
coherence ;
end
theorem ::
COMPUT_1:17
Th16: for g be
len-total
to-naturals(
NAT
* )
-defined
Function holds g is
quasi_total
PartFunc of (
NAT
* ),
NAT
proof
let g be
len-total
to-naturals(
NAT
* )
-defined
Function;
A1: (
rng g)
c=
NAT by
VALUED_0:def 6;
(
dom g)
c= (
NAT
* );
then
reconsider g9 = g as
PartFunc of (
NAT
* ),
NAT by
A1,
RELSET_1: 4;
for x,y be
FinSequence of
NAT st (
len x)
= (
len y) & x
in (
dom g) holds y
in (
dom g) by
Def2;
then g9 is
quasi_total;
hence thesis;
end;
theorem ::
COMPUT_1:18
Th17: (
arity
{} )
=
0
proof
not ex x be
FinSequence st x
in (
dom
{} );
hence thesis by
MARGREL1:def 25;
end;
theorem ::
COMPUT_1:19
Th18: for f be
homogeneous
Relation st (
dom f)
=
{
{} } holds (
arity f)
=
0
proof
let f be
homogeneous
Relation;
assume (
dom f)
=
{
{} };
then
{}
in (
dom f) by
TARSKI:def 1;
hence thesis by
CARD_1: 27,
MARGREL1:def 25;
end;
theorem ::
COMPUT_1:20
Th19: for f be
homogeneous
PartFunc of (X
* ), Y holds (
dom f)
c= ((
arity f)
-tuples_on X)
proof
let f be
homogeneous
PartFunc of (X
* ), Y;
let x be
object;
assume
A1: x
in (
dom f);
per cases ;
suppose
A2: X is
empty;
then x
= (
<*> (X
* )) by
A1,
FUNCT_7: 17,
TARSKI:def 1;
then
A3: (
arity f)
= (
len (
<*> (X
* ))) by
A1,
MARGREL1:def 25;
(
0
-tuples_on X)
=
{
{} } by
Th5;
hence thesis by
A1,
A2,
A3,
FUNCT_7: 17;
end;
suppose X is non
empty;
then
reconsider X9 = X as non
empty
set;
reconsider x9 = x as
FinSequence of X9 by
A1,
FINSEQ_1:def 11;
(
len x9)
= (
arity f) by
A1,
MARGREL1:def 25;
then x9 is
Element of ((
arity f)
-tuples_on X9) by
FINSEQ_2: 92;
hence thesis;
end;
end;
theorem ::
COMPUT_1:21
Th20: for f be
homogeneous(
NAT
* )
-defined
Function holds (
dom f)
c= ((
arity f)
-tuples_on
NAT )
proof
let f be
homogeneous(
NAT
* )
-defined
Function;
let x be
object;
assume
A1: x
in (
dom f);
reconsider x9 = x as
FinSequence of
NAT by
A1,
FINSEQ_1:def 11;
(
len x9)
= (
arity f) by
A1,
MARGREL1:def 25;
then x9 is
Element of ((
arity f)
-tuples_on
NAT ) by
FINSEQ_2: 92;
hence thesis;
end;
Lm1: for f be
homogeneous
PartFunc of (D
* ), D holds f is
quasi_total non
empty iff (
dom f)
= ((
arity f)
-tuples_on D)
proof
set X = D;
let f be
homogeneous
PartFunc of (X
* ), X;
A1: (
dom f)
c= ((
arity f)
-tuples_on X) by
Th19;
hereby
assume f is
quasi_total non
empty;
then
reconsider f9 = f as
quasi_total non
empty
homogeneous
PartFunc of (X
* ), X;
consider x be
object such that
A2: x
in (
dom f9) by
XBOOLE_0:def 1;
reconsider x9 = x as
FinSequence of X by
A2,
FINSEQ_1:def 11;
A3: (
len x9)
= (
arity f) by
A2,
MARGREL1:def 25;
now
let z be
object;
thus z
in (
dom f) implies z
in ((
arity f)
-tuples_on X) by
A1;
assume z
in ((
arity f)
-tuples_on X);
then
reconsider z9 = z as
Element of ((
arity f)
-tuples_on X);
(
len z9)
= (
arity f) by
CARD_1:def 7;
hence z
in (
dom f) by
A2,
A3,
MARGREL1:def 22;
end;
hence (
dom f)
= ((
arity f)
-tuples_on X);
end;
assume
A4: (
dom f)
= ((
arity f)
-tuples_on X);
thus f is
quasi_total
proof
let x,y be
FinSequence of X;
assume that
A5: (
len x)
= (
len y) and
A6: x
in (
dom f);
(
len x)
= (
arity f) by
A4,
A6,
CARD_1:def 7;
then y is
Element of ((
arity f)
-tuples_on X) by
A5,
FINSEQ_2: 92;
hence y
in (
dom f) by
A4;
end;
thus thesis by
A4;
end;
theorem ::
COMPUT_1:22
Th21: for f be
homogeneous
PartFunc of (X
* ), X holds f is
quasi_total non
empty iff (
dom f)
= ((
arity f)
-tuples_on X)
proof
let f be
homogeneous
PartFunc of (X
* ), X;
per cases ;
suppose X is
empty;
then f
=
{} ;
hence thesis by
Th5,
Th17;
end;
suppose X is non
empty;
hence thesis by
Lm1;
end;
end;
theorem ::
COMPUT_1:23
Th22: for f be
homogeneous
to-naturals(
NAT
* )
-defined
Function holds f is
len-total non
empty iff (
dom f)
= ((
arity f)
-tuples_on
NAT )
proof
let f be
homogeneous
to-naturals(
NAT
* )
-defined
Function;
A1: (
dom f)
c= ((
arity f)
-tuples_on
NAT ) by
Th20;
hereby
assume f is
len-total non
empty;
then
reconsider f9 = f as
quasi_total non
empty
homogeneous
PartFunc of (
NAT
* ),
NAT by
Th16;
consider x be
object such that
A2: x
in (
dom f9) by
XBOOLE_0:def 1;
reconsider x9 = x as
FinSequence of
NAT by
A2,
FINSEQ_1:def 11;
A3: (
len x9)
= (
arity f) by
A2,
MARGREL1:def 25;
now
let z be
object;
thus z
in (
dom f) implies z
in ((
arity f)
-tuples_on
NAT ) by
A1;
assume z
in ((
arity f)
-tuples_on
NAT );
then
reconsider z9 = z as
Element of ((
arity f)
-tuples_on
NAT );
(
len z9)
= (
arity f) by
CARD_1:def 7;
hence z
in (
dom f) by
A2,
A3,
MARGREL1:def 22;
end;
hence (
dom f)
= ((
arity f)
-tuples_on
NAT );
end;
assume
A4: (
dom f)
= ((
arity f)
-tuples_on
NAT );
thus f is
len-total
proof
let x,y be
FinSequence of
NAT ;
assume that
A5: (
len x)
= (
len y) and
A6: x
in (
dom f);
(
len x)
= (
arity f) by
A4,
A6,
CARD_1:def 7;
then y is
Element of ((
arity f)
-tuples_on
NAT ) by
A5,
FINSEQ_2: 92;
hence thesis by
A4;
end;
thus thesis by
A4;
end;
theorem ::
COMPUT_1:24
for f be non
empty
homogeneous
PartFunc of (D
* ), D, n st (
dom f)
c= (n
-tuples_on D) holds (
arity f)
= n
proof
let f be non
empty
homogeneous
PartFunc of (D
* ), D, n;
consider x be
object such that
A1: x
in (
dom f) by
XBOOLE_0:def 1;
assume
A2: (
dom f)
c= (n
-tuples_on D);
then
A3: for x be
FinSequence st x
in (
dom f) holds n
= (
len x) by
CARD_1:def 7;
reconsider x as
Element of (n
-tuples_on D) by
A2,
A1;
x
in (
dom f) by
A1;
hence thesis by
A3,
MARGREL1:def 25;
end;
theorem ::
COMPUT_1:25
Th24: for f be
homogeneous
PartFunc of (D
* ), D, n st (
dom f)
= (n
-tuples_on D) holds (
arity f)
= n
proof
let f be
homogeneous
PartFunc of (D
* ), D, n;
consider x be
object such that
A1: x
in (n
-tuples_on D) by
XBOOLE_0:def 1;
reconsider x as
Element of (n
-tuples_on D) by
A1;
assume
A2: (
dom f)
= (n
-tuples_on D);
then
A3: for x be
FinSequence st x
in (
dom f) holds (
len x)
= n by
CARD_1:def 7;
x
in (
dom f) by
A2;
hence thesis by
A3,
MARGREL1:def 25;
end;
definition
let R be
Relation;
::
COMPUT_1:def3
attr R is
with_the_same_arity means
:
Def3: for f,g be
Function st f
in (
rng R) & g
in (
rng R) holds (f is
empty implies g is
empty or (
dom g)
=
{
{} }) & (f is non
empty & g is non
empty implies ex n be
Element of
NAT , X be non
empty
set st (
dom f)
c= (n
-tuples_on X) & (
dom g)
c= (n
-tuples_on X));
end
registration
cluster
empty ->
with_the_same_arity for
Relation;
coherence ;
end
registration
let X be
set;
cluster
with_the_same_arity for
FinSequence of X;
existence
proof
take (
<*> X);
thus thesis;
end;
cluster
with_the_same_arity for
Element of (X
* );
existence
proof
reconsider p = (
<*> X) as
Element of (X
* ) by
FINSEQ_1:def 11;
take p;
thus thesis;
end;
end
definition
let F be
with_the_same_arity
Relation;
::
COMPUT_1:def4
func
arity F ->
Element of
NAT means
:
Def4: for f be
homogeneous
Function st f
in (
rng F) holds it
= (
arity f) if ex f be
homogeneous
Function st f
in (
rng F)
otherwise it
=
0 ;
existence
proof
hereby
given f be
homogeneous
Function such that
A1: f
in (
rng F);
take i = (
arity f);
let g be
homogeneous
Function;
assume
A2: g
in (
rng F);
per cases ;
suppose
A3: f is
empty;
thus i
= (
arity g)
proof
per cases by
A1,
A2,
A3,
Def3;
suppose g is
empty;
hence thesis by
A3;
end;
suppose (
dom g)
=
{
{} };
hence thesis by
A3,
Th17,
Th18;
end;
end;
end;
suppose
A4: g is
empty;
thus i
= (
arity g)
proof
per cases by
A1,
A2,
A4,
Def3;
suppose f is
empty;
hence thesis by
A4;
end;
suppose (
dom f)
=
{
{} };
hence thesis by
A4,
Th17,
Th18;
end;
end;
end;
suppose
A5: f is non
empty & g is non
empty;
set a = the
Element of (
dom f);
(
dom f)
<>
{} by
A5;
then
A6: a
in (
dom f);
consider n be
Element of
NAT , X be non
empty
set such that
A7: (
dom f)
c= (n
-tuples_on X) and
A8: (
dom g)
c= (n
-tuples_on X) by
A1,
A2,
A5,
Def3;
reconsider a as
Element of (n
-tuples_on X) by
A7,
A6;
A9: (
arity f)
= (
len a) by
A5,
MARGREL1:def 25
.= n by
CARD_1:def 7;
set a = the
Element of (
dom g);
(
dom g)
<>
{} by
A5;
then a
in (
dom g);
then
reconsider a as
Element of (n
-tuples_on X) by
A8;
(
arity g)
= (
len a) by
A5,
MARGREL1:def 25;
hence i
= (
arity g) by
A9,
CARD_1:def 7;
end;
end;
thus thesis;
end;
uniqueness
proof
let i1,i2 be
Element of
NAT ;
hereby
given f be
homogeneous
Function such that
A10: f
in (
rng F);
assume for f be
homogeneous
Function st f
in (
rng F) holds i1
= (
arity f);
then i1
= (
arity f) by
A10;
hence (for f be
homogeneous
Function st f
in (
rng F) holds i2
= (
arity f)) implies i1
= i2 by
A10;
end;
thus thesis;
end;
correctness ;
end
theorem ::
COMPUT_1:26
for F be
with_the_same_arity
FinSequence st (
len F)
=
0 holds (
arity F)
=
0
proof
let F be
with_the_same_arity
FinSequence;
assume (
len F)
=
0 ;
then F
=
{} ;
then for f be
homogeneous
Function holds not f
in (
rng F);
hence thesis by
Def4;
end;
definition
let X be
set;
::
COMPUT_1:def5
func
HFuncs X ->
PFUNC_DOMAIN of (X
* ), X equals { f where f be
Element of (
PFuncs ((X
* ),X)) : f is
homogeneous };
coherence
proof
set H = { f where f be
Element of (
PFuncs ((X
* ),X)) : f is
homogeneous };
H is non
empty
functional
proof
{} is
PartFunc of (X
* ), X by
RELSET_1: 12;
then
{}
in (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
then
{}
in H;
hence H is non
empty;
let x be
object;
assume x
in H;
then ex g be
Element of (
PFuncs ((X
* ),X)) st x
= g & g is
homogeneous;
hence thesis;
end;
then
reconsider H as non
empty
functional
set;
now
let f be
Element of H;
f
in H;
then ex g be
Element of (
PFuncs ((X
* ),X)) st f
= g & g is
homogeneous;
hence f is
PartFunc of (X
* ), X;
end;
hence thesis by
RFUNCT_3:def 3;
end;
end
theorem ::
COMPUT_1:27
{}
in (
HFuncs X)
proof
set f =
{} ;
reconsider f as
PartFunc of (X
* ), X by
XBOOLE_1: 2;
reconsider f as
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
f
in { g where g be
Element of (
PFuncs ((X
* ),X)) : g is
homogeneous };
hence thesis;
end;
registration
let X be non
empty
set;
cluster non
empty
homogeneous
quasi_total for
Element of (
HFuncs X);
existence
proof
set p = (
<*> X);
set x = the
Element of X;
p
in (X
* ) by
FINSEQ_1:def 11;
then
reconsider Y =
{p} as
Subset of (X
* ) by
ZFMISC_1: 31;
A1: (Y
--> x)
in (
PFuncs ((X
* ),X));
(p
.--> x) is
homogeneous;
then (
{p}
--> x)
in { f where f be
Element of (
PFuncs ((X
* ),X)) : f is
homogeneous } by
A1;
then
reconsider f = (p
.--> x) as
Element of (
HFuncs X);
take f;
thus f is non
empty
homogeneous;
let a,b be
FinSequence of X such that
A3: (
len a)
= (
len b);
assume a
in (
dom f);
then a
= p by
TARSKI:def 1;
then b
=
{} by
A3;
hence thesis by
TARSKI:def 1;
end;
end
registration
let X be
set;
cluster ->
homogeneous for
Element of (
HFuncs X);
coherence
proof
let f be
Element of (
HFuncs X);
f
in (
HFuncs X);
then ex g be
Element of (
PFuncs ((X
* ),X)) st f
= g & g is
homogeneous;
hence thesis;
end;
end
registration
let X be non
empty
set, S be non
empty
Subset of (
HFuncs X);
cluster ->
homogeneous for
Element of S;
coherence ;
end
theorem ::
COMPUT_1:28
Th27: for f be
to-naturals
homogeneous(
NAT
* )
-defined
Function holds f is
Element of (
HFuncs
NAT )
proof
let f be
to-naturals
homogeneous(
NAT
* )
-defined
Function;
A1: (
rng f)
c=
NAT by
VALUED_0:def 6;
(
dom f)
c= (
NAT
* );
then f is
PartFunc of (
NAT
* ),
NAT by
A1,
RELSET_1: 4;
then
reconsider f9 = f as
Element of (
PFuncs ((
NAT
* ),
NAT )) by
PARTFUN1: 45;
f9
in { f1 where f1 be
Element of (
PFuncs ((
NAT
* ),
NAT )) : f1 is
homogeneous };
hence thesis;
end;
theorem ::
COMPUT_1:29
Th28: for f be
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function holds f is
quasi_total
Element of (
HFuncs
NAT )
proof
let f be
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function;
reconsider f9 = f as
Element of (
HFuncs
NAT ) by
Th27;
f9 is
quasi_total by
Def2;
hence thesis;
end;
theorem ::
COMPUT_1:30
Th29: for X be non
empty
set, F be
Relation st (
rng F)
c= (
HFuncs X) & for f,g be
homogeneous
Function st f
in (
rng F) & g
in (
rng F) holds (
arity f)
= (
arity g) holds F is
with_the_same_arity
proof
let X be non
empty
set, R be
Relation such that
A1: (
rng R)
c= (
HFuncs X) and
A2: for f,g be
homogeneous
Function st f
in (
rng R) & g
in (
rng R) holds (
arity f)
= (
arity g);
let f,g be
Function;
assume that
A3: f
in (
rng R) and
A4: g
in (
rng R);
reconsider f9 = f, g9 = g as
Element of (
HFuncs X) by
A1,
A3,
A4;
A5: (
arity f9)
= (
arity g9) by
A2,
A3,
A4;
hereby
assume f is
empty;
then (
dom g9)
c= (
0
-tuples_on X) by
A5,
Th17,
Th19;
then (
dom g9)
c=
{(
<*> X)} by
FINSEQ_2: 94;
hence g is
empty or (
dom g)
=
{
{} } by
ZFMISC_1: 33;
end;
assume that
A6: f is non
empty and g is non
empty;
reconsider f9 as non
empty
Element of (
HFuncs X) by
A6;
take (
arity f9), X;
thus thesis by
A5,
Th19;
end;
definition
let n,m be
Nat;
::
COMPUT_1:def6
func n
const m ->
homogeneous
to-naturals(
NAT
* )
-defined
Function equals ((n
-tuples_on
NAT )
--> m);
coherence
proof
set X =
NAT ;
set f = ((n
-tuples_on X)
--> m);
A1: (n
-tuples_on X)
c= (X
* ) by
FINSEQ_2: 142;
f is
homogeneous;
hence thesis by
A1,
RELAT_1:def 18;
end;
end
theorem ::
COMPUT_1:31
Th30: (n
const m)
in (
HFuncs
NAT )
proof
set X =
NAT ;
set f = (n
const m);
A1: (
rng f)
c=
NAT by
VALUED_0:def 6;
(
dom f)
c= (
NAT
* );
then f is
PartFunc of (X
* ), X by
A1,
RELSET_1: 4;
then f is
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
hence thesis;
end;
registration
let n,m be
Element of
NAT ;
cluster (n
const m) ->
len-total non
empty;
coherence
proof
set X =
NAT ;
(n
const m) is
len-total
proof
let x,y be
FinSequence of X;
assume that
A2: (
len x)
= (
len y) and
A3: x
in (
dom (n
const m));
(
len x)
= n by
A3,
CARD_1:def 7;
then y is
Element of (n
-tuples_on X) by
A2,
FINSEQ_2: 92;
hence thesis;
end;
hence thesis;
end;
end
theorem ::
COMPUT_1:32
Th31: (
arity (n
const m))
= n
proof
set X =
NAT ;
set d = the
Element of (n
-tuples_on X);
A2: for x be
FinSequence st x
in (
dom (n
const m)) holds n
= (
len x) by
CARD_1:def 7;
d
in (
dom (n
const m));
hence thesis by
A2,
MARGREL1:def 25;
end;
registration
cluster ->
homogeneous
to-naturals(
NAT
* )
-defined for
Element of (
HFuncs
NAT );
coherence ;
end
definition
let n,i be
Element of
NAT ;
::
COMPUT_1:def7
func n
succ i ->
homogeneous
to-naturals(
NAT
* )
-defined
Function means
:
Def7: (
dom it )
= (n
-tuples_on
NAT ) & for p be
Element of (n
-tuples_on
NAT ) holds (it
. p)
= ((p
/. i)
+ 1);
existence
proof
deffunc
f(
Element of (
NAT
* )) = (($1
/. i)
+ 1);
defpred
p[
set] means $1
in (n
-tuples_on
NAT );
consider f be
PartFunc of (
NAT
* ),
NAT such that
A1: for d be
Element of (
NAT
* ) holds d
in (
dom f) iff
p[d] and
A2: for d be
Element of (
NAT
* ) st d
in (
dom f) holds (f
/. d)
=
f(d) from
PARTFUN2:sch 2;
A3: (n
-tuples_on
NAT )
c= (
NAT
* ) by
FINSEQ_2: 142;
then
A4: for x be
object holds x
in (
dom f) iff x
in (n
-tuples_on
NAT ) by
A1;
then
A5: (
dom f)
= (n
-tuples_on
NAT ) by
TARSKI: 2;
reconsider f as
Element of (
PFuncs ((
NAT
* ),
NAT )) by
PARTFUN1: 45;
f is
homogeneous by
A5;
then f
in { g where g be
Element of (
PFuncs ((
NAT
* ),
NAT )) : g is
homogeneous };
then
reconsider f as
Element of (
HFuncs
NAT );
take f;
thus (
dom f)
= (n
-tuples_on
NAT ) by
A4;
let p be
Element of (n
-tuples_on
NAT );
reconsider p9 = p as
Element of (
NAT
* ) by
A3;
thus (f
. p)
= (f
/. p9) by
A5,
PARTFUN1:def 6
.= ((p
/. i)
+ 1) by
A2,
A5;
end;
uniqueness
proof
let it1,it2 be
homogeneous
to-naturals(
NAT
* )
-defined
Function such that
A6: (
dom it1)
= (n
-tuples_on
NAT ) and
A7: for p be
Element of (n
-tuples_on
NAT ) holds (it1
. p)
= ((p
/. i)
+ 1) and
A8: (
dom it2)
= (n
-tuples_on
NAT ) and
A9: for p be
Element of (n
-tuples_on
NAT ) holds (it2
. p)
= ((p
/. i)
+ 1);
now
let x be
object;
assume x
in (n
-tuples_on
NAT );
then
reconsider x9 = x as
Element of (n
-tuples_on
NAT );
thus (it1
. x)
= ((x9
/. i)
+ 1) by
A7
.= (it2
. x) by
A9;
end;
hence thesis by
A6,
A8;
end;
end
theorem ::
COMPUT_1:33
Th32: (n
succ i)
in (
HFuncs
NAT )
proof
set X =
NAT ;
set f = (n
succ i);
A1: (
rng f)
c=
NAT by
VALUED_0:def 6;
(
dom f)
c= (
NAT
* );
then f is
PartFunc of (X
* ), X by
A1,
RELSET_1: 4;
then f is
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
hence thesis;
end;
registration
let n,i be
Element of
NAT ;
cluster (n
succ i) ->
len-total non
empty;
coherence
proof
A1: (
dom (n
succ i))
= (n
-tuples_on
NAT ) by
Def7;
(n
succ i) is
len-total
proof
let x,y be
FinSequence of
NAT ;
assume that
A2: (
len x)
= (
len y) and
A3: x
in (
dom (n
succ i));
(
len x)
= n by
A1,
A3,
CARD_1:def 7;
then y is
Element of (n
-tuples_on
NAT ) by
A2,
FINSEQ_2: 92;
hence thesis by
A1;
end;
hence thesis by
A1;
end;
end
theorem ::
COMPUT_1:34
Th33: (
arity (n
succ i))
= n
proof
consider d be
object such that
A1: d
in (
dom (n
succ i)) by
XBOOLE_0:def 1;
reconsider d as
Element of (n
-tuples_on
NAT ) by
A1,
Def7;
(
dom (n
succ i))
= (n
-tuples_on
NAT ) by
Def7;
then
A2: for y be
FinSequence st y
in (
dom (n
succ i)) holds n
= (
len y) by
CARD_1:def 7;
d
in (
dom (n
succ i)) by
A1;
hence thesis by
A2,
MARGREL1:def 25;
end;
definition
let n,i be
Nat;
::
COMPUT_1:def8
func n
proj i ->
homogeneous
to-naturals(
NAT
* )
-defined
Function equals (
proj ((n
|->
NAT ),i));
correctness
proof
A1: (
dom (
proj ((n
|->
NAT ),i)))
= (
product (n
|->
NAT )) by
CARD_3:def 16
.= (n
-tuples_on
NAT ) by
FINSEQ_3: 131;
now
set P = (
proj ((n
|->
NAT ),i));
A2: (
rng P)
c=
NAT
proof
let x be
object;
assume x
in (
rng P);
then
consider d be
object such that
A3: d
in (
dom P) and
A4: x
= (P
. d) by
FUNCT_1:def 3;
reconsider d as
Element of (n
-tuples_on
NAT ) by
A1,
A3;
reconsider d as
FinSequence of
NAT ;
(P
. d)
= (d
. i) by
A3,
CARD_3:def 16;
hence thesis by
A4;
end;
A5: P is
homogeneous
proof
thus (
dom P) is
with_common_domain;
end;
reconsider P as
PartFunc of (
NAT
* ),
NAT by
A1,
A2,
FINSEQ_2: 142,
RELSET_1: 4;
P is
Element of (
PFuncs ((
NAT
* ),
NAT )) by
PARTFUN1: 45;
then P
in (
HFuncs
NAT ) by
A5;
hence (
proj ((n
|->
NAT ),i)) is
Element of (
HFuncs
NAT );
end;
hence thesis;
end;
end
theorem ::
COMPUT_1:35
Th34: (n
proj i)
in (
HFuncs
NAT )
proof
set X =
NAT ;
set f = (n
proj i);
A1: (
rng f)
c=
NAT by
VALUED_0:def 6;
(
dom f)
c= (
NAT
* );
then f is
PartFunc of (X
* ), X by
A1,
RELSET_1: 4;
then f is
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
hence thesis;
end;
theorem ::
COMPUT_1:36
Th35: (
dom (n
proj i))
= (n
-tuples_on
NAT ) & (1
<= i & i
<= n implies (
rng (n
proj i))
=
NAT )
proof
thus
A1: (
dom (n
proj i))
= (
product (n
|->
NAT )) by
CARD_3:def 16
.= (n
-tuples_on
NAT ) by
FINSEQ_3: 131;
assume that
A2: 1
<= i and
A3: i
<= n;
now
let x be
object;
thus x
in (
rng (n
proj i)) implies x
in
NAT by
ORDINAL1:def 12;
assume x
in
NAT ;
then
reconsider x9 = x as
Element of
NAT ;
reconsider d = (n
|-> x9) as
FinSequence of
NAT ;
i
in (
Seg n) by
A2,
A3,
FINSEQ_1: 1;
then
A4: (d
. i)
= x9 by
FUNCOP_1: 7;
((n
proj i)
. d)
= (d
. i) by
A1,
CARD_3:def 16;
hence x
in (
rng (n
proj i)) by
A1,
A4,
FUNCT_1:def 3;
end;
hence thesis by
TARSKI: 2;
end;
registration
let n,i be
Element of
NAT ;
cluster (n
proj i) ->
len-total non
empty;
coherence
proof
A1: (
dom (n
proj i))
= (n
-tuples_on
NAT ) by
Th35;
(n
proj i) is
len-total
proof
let x,y be
FinSequence of
NAT ;
assume that
A2: (
len x)
= (
len y) and
A3: x
in (
dom (n
proj i));
(
len x)
= n by
A1,
A3,
CARD_1:def 7;
then y is
Element of (n
-tuples_on
NAT ) by
A2,
FINSEQ_2: 92;
hence thesis by
A1;
end;
hence thesis by
A1;
end;
end
theorem ::
COMPUT_1:37
Th36: (
arity (n
proj i))
= n
proof
consider d be
object such that
A1: d
in (n
-tuples_on
NAT ) by
XBOOLE_0:def 1;
reconsider d as
Element of (n
-tuples_on
NAT ) by
A1;
A2: (
dom (n
proj i))
= (n
-tuples_on
NAT ) by
Th35;
then
A3: for x be
FinSequence st x
in (
dom (n
proj i)) holds n
= (
len x) by
CARD_1:def 7;
d
in (
dom (n
proj i)) by
A2;
hence thesis by
A3,
MARGREL1:def 25;
end;
theorem ::
COMPUT_1:38
Th37: for t be
Element of (n
-tuples_on
NAT ) holds ((n
proj i)
. t)
= (t
. i)
proof
let t be
Element of (n
-tuples_on
NAT );
(
dom (n
proj i))
= (n
-tuples_on
NAT ) by
Th35;
hence thesis by
CARD_3:def 16;
end;
registration
let X be
set;
cluster (
HFuncs X) ->
functional;
coherence ;
end
theorem ::
COMPUT_1:39
Th38: for F be
Function of D, (
HFuncs E) st (
rng F) is
compatible & for x be
Element of D holds (
dom (F
. x))
c= (n
-tuples_on E) holds ex f be
Element of (
HFuncs E) st f
= (
Union F) & (
dom f)
c= (n
-tuples_on E)
proof
set X = D, Y = E;
let F be
Function of X, (
HFuncs Y);
assume
A1: (
rng F) is
compatible;
assume
A2: for x be
Element of X holds (
dom (F
. x))
c= (n
-tuples_on Y);
A3: (
rng F) is
functional
proof
let x be
object;
A4: (
rng F)
c= (
HFuncs Y) by
RELAT_1:def 19;
assume x
in (
rng F);
hence thesis by
A4;
end;
then
reconsider rngF = (
rng F) as non
empty
functional
compatible
set by
A1;
set D = the set of all (
dom g) where g be
Element of rngF;
reconsider f = (
Union F) as
Function by
A1,
A3;
A5: (
rng f)
c= Y
proof
let y be
object;
assume y
in (
rng f);
then
consider x be
object such that
A6: x
in (
dom f) and
A7: (f
. x)
= y by
FUNCT_1:def 3;
x
in (
union D) by
A6,
Th11;
then
consider d be
set such that
A8: x
in d and
A9: d
in D by
TARSKI:def 4;
consider g be
Element of rngF such that
A10: d
= (
dom g) by
A9;
(
rng F)
c= (
HFuncs Y) by
RELAT_1:def 19;
then
reconsider g as
Element of (
HFuncs Y);
A11: (g
. x)
in (
rng g) by
A8,
A10,
FUNCT_1: 3;
A12: (
rng g)
c= Y by
RELAT_1:def 19;
(f
. x)
= (g
. x) by
A8,
A10,
Th12;
hence thesis by
A7,
A12,
A11;
end;
A13: (
dom f)
c= (n
-tuples_on Y)
proof
let x be
object;
assume x
in (
dom f);
then x
in (
union D) by
Th11;
then
consider d be
set such that
A14: x
in d and
A15: d
in D by
TARSKI:def 4;
consider g be
Element of rngF such that
A16: d
= (
dom g) by
A15;
consider e be
object such that
A17: e
in (
dom F) and
A18: (F
. e)
= g by
FUNCT_1:def 3;
reconsider e as
Element of X by
A17;
(
dom (F
. e))
c= (n
-tuples_on Y) by
A2;
hence thesis by
A14,
A16,
A18;
end;
(n
-tuples_on Y)
c= (Y
* ) by
FINSEQ_2: 142;
then (
dom f)
c= (Y
* ) by
A13;
then
reconsider f as
PartFunc of (Y
* ), Y by
A5,
RELSET_1: 4;
reconsider f as
Element of (
PFuncs ((Y
* ),Y)) by
PARTFUN1: 45;
f is
homogeneous by
A13;
then f
in { g where g be
Element of (
PFuncs ((Y
* ),Y)) : g is
homogeneous };
then
reconsider f = (
Union F) as
Element of (
HFuncs Y);
take f;
thus f
= (
Union F);
thus thesis by
A13;
end;
theorem ::
COMPUT_1:40
for F be
sequence of (
HFuncs D) st for i be
Nat holds (F
. i)
c= (F
. (i
+ 1)) holds (
Union F)
in (
HFuncs D)
proof
set X = D;
let F be
sequence of (
HFuncs X) such that
A1: for i be
Nat holds (F
. i)
c= (F
. (i
+ 1));
A2:
now
let n be
Element of
NAT ;
defpred
p[
Nat] means (F
. n)
c= (F
. (n
+ $1));
let m be
Element of
NAT ;
A3:
now
let i be
Nat such that
A4:
p[i];
(F
. (n
+ i))
c= (F
. ((n
+ i)
+ 1)) by
A1;
hence
p[(i
+ 1)] by
A4,
XBOOLE_1: 1;
end;
A5:
p[
0 ];
A6: for i be
Nat holds
p[i] from
NAT_1:sch 2(
A5,
A3);
assume n
<= m;
then
consider i be
Nat such that
A7: m
= (n
+ i) by
NAT_1: 10;
thus (F
. n)
c= (F
. m) by
A6,
A7;
end;
reconsider Y = (
rng F) as non
empty
Subset of (
HFuncs X) by
RELAT_1:def 19;
A8: Y is
compatible
proof
let f,g be
Function;
assume f
in Y;
then
consider i be
object such that
A9: i
in (
dom F) and
A10: f
= (F
. i) by
FUNCT_1:def 3;
assume g
in Y;
then
consider j be
object such that
A11: j
in (
dom F) and
A12: g
= (F
. j) by
FUNCT_1:def 3;
reconsider i, j as
Element of
NAT by
A9,
A11;
i
<= j or j
<= i;
hence thesis by
A2,
A10,
A12,
PARTFUN1: 54;
end;
Y is
PartFunc-set of (X
* ), X
proof
let f be
Element of Y;
f is
Element of (
HFuncs X);
hence thesis;
end;
then (
Union F) is
PartFunc of (X
* ), X by
A8,
Th14;
then
reconsider f = (
Union F) as
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
A13: (
dom f)
= (
union the set of all (
dom g) where g be
Element of Y) by
A8,
Th11;
f is
homogeneous
proof
thus (
dom f) is
with_common_domain
proof
let x,y be
FinSequence;
assume x
in (
dom f);
then
consider A1 be
set such that
A14: x
in A1 and
A15: A1
in the set of all (
dom g) where g be
Element of Y by
A13,
TARSKI:def 4;
consider g1 be
Element of Y such that
A16: A1
= (
dom g1) by
A15;
assume y
in (
dom f);
then
consider A2 be
set such that
A17: y
in A2 and
A18: A2
in the set of all (
dom g) where g be
Element of Y by
A13,
TARSKI:def 4;
consider g2 be
Element of Y such that
A19: A2
= (
dom g2) by
A18;
consider i1 be
object such that
A20: i1
in (
dom F) and
A21: g1
= (F
. i1) by
FUNCT_1:def 3;
consider i2 be
object such that
A22: i2
in (
dom F) and
A23: g2
= (F
. i2) by
FUNCT_1:def 3;
reconsider i1, i2 as
Element of
NAT by
A20,
A22;
i1
<= i2 or i2
<= i1;
then g1
c= g2 or g2
c= g1 by
A2,
A21,
A23;
then (
dom g1)
c= (
dom g2) or (
dom g2)
c= (
dom g1) by
GRFUNC_1: 2;
then (
dom x)
= (
dom y) by
A14,
A16,
A17,
A19,
CARD_3:def 10;
hence (
len x)
= (
len y) by
FINSEQ_3: 29;
end;
end;
hence thesis;
end;
theorem ::
COMPUT_1:41
Th40: for F be
with_the_same_arity
FinSequence of (
HFuncs D) holds (
dom
<:F:>)
c= ((
arity F)
-tuples_on D)
proof
set X = D;
let F be
with_the_same_arity
FinSequence of (
HFuncs X);
thus (
dom
<:F:>)
c= ((
arity F)
-tuples_on X)
proof
A1: (
dom
<:F:>)
= (
meet (
doms F)) by
FUNCT_6: 29
.= (
meet (
rng (
doms F))) by
FUNCT_6:def 4;
let x be
object such that
A2: x
in (
dom
<:F:>);
consider y be
object such that
A3: y
in (
rng (
doms F)) by
A2,
A1,
SETFAM_1: 1,
XBOOLE_0:def 1;
reconsider y as
set by
TARSKI: 1;
A4: x
in y by
A2,
A1,
A3,
SETFAM_1:def 1;
consider z be
object such that
A5: z
in (
dom (
doms F)) and
A6: ((
doms F)
. z)
= y by
A3,
FUNCT_1:def 3;
A7: (
dom (
doms F))
= (
dom F) by
FUNCT_6:def 2;
then z
in (
dom F) by
A5;
then
A8: (F
. z)
in (
rng F) by
FUNCT_1: 3;
(
rng F)
c= (
HFuncs X) by
RELAT_1:def 19;
then
reconsider Fz = (F
. z) as
Element of (
HFuncs X) by
A8;
A9: (
dom Fz)
c= ((
arity Fz)
-tuples_on X) by
Th19;
((
doms F)
. z)
= (
dom Fz) by
A7,
A5,
FUNCT_6:def 2;
then x
in ((
arity Fz)
-tuples_on X) by
A6,
A4,
A9;
hence thesis by
A8,
Def4;
end;
end;
registration
let X be non
empty
set;
let F be
with_the_same_arity
FinSequence of (
HFuncs X);
cluster
<:F:> ->
homogeneous;
coherence
proof
(
dom
<:F:>)
c= ((
arity F)
-tuples_on X) by
Th40;
hence (
dom
<:F:>) is
with_common_domain;
end;
end
theorem ::
COMPUT_1:42
Th41: for f be
Element of (
HFuncs D), F be
with_the_same_arity
FinSequence of (
HFuncs D) holds (
dom (f
*
<:F:>))
c= ((
arity F)
-tuples_on D) & (
rng (f
*
<:F:>))
c= D & (f
*
<:F:>)
in (
HFuncs D)
proof
set X = D;
let f be
Element of (
HFuncs X);
let F be
with_the_same_arity
FinSequence of (
HFuncs X);
A1: (
dom (f
*
<:F:>))
c= (
dom
<:F:>) by
RELAT_1: 25;
A2: ((
arity F)
-tuples_on X)
c= (X
* ) by
FINSEQ_2: 142;
(
dom
<:F:>)
c= ((
arity F)
-tuples_on X) by
Th40;
hence (
dom (f
*
<:F:>))
c= ((
arity F)
-tuples_on X) by
A1;
then
A3: (
dom (f
*
<:F:>))
c= (X
* ) by
A2;
thus (
rng (f
*
<:F:>))
c= X by
RELAT_1:def 19;
then (f
*
<:F:>) is
PartFunc of (X
* ), X by
A3,
RELSET_1: 4;
then (f
*
<:F:>)
in (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
hence thesis;
end;
definition
let X,Y be non
empty
set, P be
PFUNC_DOMAIN of X, Y;
let S be non
empty
Subset of P;
:: original:
Element
redefine
mode
Element of S ->
Element of P ;
coherence
proof
let f be
Element of S;
thus thesis;
end;
end
registration
let f be
homogeneous(
NAT
* )
-defined
Function;
cluster
<*f*> ->
with_the_same_arity;
coherence
proof
let h,g be
Function such that
A1: h
in (
rng
<*f*>) and
A2: g
in (
rng
<*f*>);
A3: (
rng
<*f*>)
=
{f} by
FINSEQ_1: 39;
then
A4: h
= f by
A1,
TARSKI:def 1;
hence h is
empty implies g is
empty or (
dom g)
=
{
{} } by
A2,
A3,
TARSKI:def 1;
assume that h is non
empty and g is non
empty;
take (
arity f),
NAT ;
g
= f by
A2,
A3,
TARSKI:def 1;
hence thesis by
A4,
Th20;
end;
end
theorem ::
COMPUT_1:43
for f be
homogeneous
to-naturals(
NAT
* )
-defined
Function holds (
arity
<*f*>)
= (
arity f)
proof
let f be
homogeneous
to-naturals(
NAT
* )
-defined
Function;
(
rng
<*f*>)
=
{f} by
FINSEQ_1: 38;
then f
in (
rng
<*f*>) by
TARSKI:def 1;
hence thesis by
Def4;
end;
theorem ::
COMPUT_1:44
Th43: for f,g be non
empty
Element of (
HFuncs
NAT ), F be
with_the_same_arity
FinSequence of (
HFuncs
NAT ) st g
= (f
*
<:F:>) holds (
arity g)
= (
arity F)
proof
let f,g be non
empty
Element of (
HFuncs
NAT ), F be
with_the_same_arity
FinSequence of (
HFuncs
NAT );
assume g
= (f
*
<:F:>);
then
A1: (
dom g)
c= ((
arity F)
-tuples_on
NAT ) by
Th41;
consider x be
object such that
A2: x
in (
dom g) by
XBOOLE_0:def 1;
reconsider x as
Element of ((
arity F)
-tuples_on
NAT ) by
A1,
A2;
(
len x)
= (
arity F) by
CARD_1:def 7;
hence thesis by
A2,
MARGREL1:def 25;
end;
theorem ::
COMPUT_1:45
Th44: for f be non
empty
quasi_total
Element of (
HFuncs D), F be
with_the_same_arity
FinSequence of (
HFuncs D) st (
arity f)
= (
len F) & F is non
empty & (for h be
Element of (
HFuncs D) st h
in (
rng F) holds h is
quasi_total non
empty) holds (f
*
<:F:>) is non
empty
quasi_total
Element of (
HFuncs D) & (
dom (f
*
<:F:>))
= ((
arity F)
-tuples_on D)
proof
set X = D;
let f be non
empty
quasi_total
Element of (
HFuncs X), F be
with_the_same_arity
FinSequence of (
HFuncs X) such that
A1: (
arity f)
= (
len F) and
A2: F is non
empty and
A3: for h be
Element of (
HFuncs X) st h
in (
rng F) holds h is
quasi_total non
empty;
set n = (
arity F);
set fF = (f
*
<:F:>);
A4: (
dom fF)
c= (n
-tuples_on X) by
Th41;
A5: (n
-tuples_on X)
c= (
dom fF)
proof
let x be
object;
A6: (
product (
rngs F))
c= ((
len F)
-tuples_on X)
proof
let p be
object;
A7: (
dom (
rngs F))
= (
dom F) by
FUNCT_6:def 3;
assume p
in (
product (
rngs F));
then
consider g be
Function such that
A8: p
= g and
A9: (
dom g)
= (
dom (
rngs F)) and
A10: for x be
object st x
in (
dom (
rngs F)) holds (g
. x)
in ((
rngs F)
. x) by
CARD_3:def 5;
A11: (
dom F)
= (
Seg (
len F)) by
FINSEQ_1:def 3;
then
reconsider g as
FinSequence by
A9,
A7,
FINSEQ_1:def 2;
(
rng g)
c= X
proof
let x be
object;
assume x
in (
rng g);
then
consider d be
object such that
A12: d
in (
dom g) and
A13: (g
. d)
= x by
FUNCT_1:def 3;
A14: (g
. d)
in ((
rngs F)
. d) by
A9,
A10,
A12;
reconsider d as
Element of
NAT by
A12;
reconsider Fd = (F
. d) as
Element of (
HFuncs X) by
A9,
A7,
A12,
FINSEQ_2: 11;
A15: (
rng Fd)
c= X by
RELAT_1:def 19;
((
rngs F)
. d)
= (
rng Fd) by
A9,
A7,
A12,
FUNCT_6:def 3;
hence thesis by
A13,
A14,
A15;
end;
then
reconsider g as
FinSequence of X by
FINSEQ_1:def 4;
(
len g)
= (
len F) by
A9,
A7,
A11,
FINSEQ_1:def 3;
then p is
Element of ((
len F)
-tuples_on X) by
A8,
FINSEQ_2: 92;
hence thesis;
end;
(
rng
<:F:>)
c= (
product (
rngs F)) by
FUNCT_6: 29;
then
A16: (
rng
<:F:>)
c= ((
len F)
-tuples_on X) by
A6;
A17: (
dom f)
= ((
arity f)
-tuples_on X) by
Th21;
A18: (n
-tuples_on X)
c= (
dom
<:F:>)
proof
let x be
object;
A19: (
dom (
doms F))
= (
dom F) by
FUNCT_6:def 2;
assume
A20: x
in (n
-tuples_on X);
A21:
now
let y be
set;
assume y
in (
rng (
doms F));
then
consider w be
object such that
A22: w
in (
dom (
doms F)) and
A23: ((
doms F)
. w)
= y by
FUNCT_1:def 3;
A24: w
in (
dom F) by
A19,
A22;
then
reconsider w as
Element of
NAT ;
reconsider Fw = (F
. w) as
Element of (
HFuncs X) by
A24,
FINSEQ_2: 11;
A25: ((
doms F)
. w)
= (
dom Fw) by
A19,
A22,
FUNCT_6:def 2;
A26: Fw
in (
rng F) by
A24,
FUNCT_1: 3;
then Fw is non
empty
quasi_total by
A3;
then (
dom Fw)
= ((
arity Fw)
-tuples_on X) by
Th21;
hence x
in y by
A20,
A23,
A25,
A26,
Def4;
end;
consider z be
object such that
A27: z
in (
dom F) by
A2,
XBOOLE_0:def 1;
z
in (
dom (
doms F)) by
A27,
A19;
then
A28: (
rng (
doms F))
<>
{} by
RELAT_1: 42;
(
dom
<:F:>)
= (
meet (
doms F)) by
FUNCT_6: 29
.= (
meet (
rng (
doms F))) by
FUNCT_6:def 4;
hence thesis by
A28,
A21,
SETFAM_1:def 1;
end;
assume
A29: x
in (n
-tuples_on X);
then (
<:F:>
. x)
in (
rng
<:F:>) by
A18,
FUNCT_1: 3;
hence thesis by
A1,
A29,
A18,
A17,
A16,
FUNCT_1: 11;
end;
then
A30: (
dom fF)
= (n
-tuples_on X) by
A4,
XBOOLE_0:def 10;
A31: (
rng fF)
c= X by
Th41;
((
arity F)
-tuples_on X)
c= (X
* ) by
FINSEQ_2: 142;
then (
dom fF)
c= (X
* ) by
A4;
then fF is
Relation of (X
* ), X by
A31,
RELSET_1: 4;
then fF is
Element of (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
then fF
in (
HFuncs X);
then
reconsider fF as
Element of (
HFuncs X);
fF is
quasi_total
proof
let x,y be
FinSequence of X such that
A32: (
len x)
= (
len y) and
A33: x
in (
dom fF);
(
len x)
= n by
A4,
A33,
CARD_1:def 7;
then y is
Element of (n
-tuples_on X) by
A32,
FINSEQ_2: 92;
hence y
in (
dom fF) by
A30;
end;
hence (f
*
<:F:>) is non
empty
quasi_total
Element of (
HFuncs X) by
A5;
thus thesis by
A4,
A5,
XBOOLE_0:def 10;
end;
theorem ::
COMPUT_1:46
Th45: for f be
quasi_total
Element of (
HFuncs D), F be
with_the_same_arity
FinSequence of (
HFuncs D) st (
arity f)
= (
len F) & for h be
Element of (
HFuncs D) st h
in (
rng F) holds h is
quasi_total holds (f
*
<:F:>) is
quasi_total
Element of (
HFuncs D)
proof
set X = D;
let f be
quasi_total
Element of (
HFuncs X), F be
with_the_same_arity
FinSequence of (
HFuncs X) such that
A1: (
arity f)
= (
len F) and
A2: for h be
Element of (
HFuncs X) st h
in (
rng F) holds h is
quasi_total;
reconsider g =
{} as
PartFunc of (X
* ), X by
RELSET_1: 12;
A3: g is
quasi_total;
g
in (
PFuncs ((X
* ),X)) by
PARTFUN1: 45;
then
A4: g
in { h where h be
Element of (
PFuncs ((X
* ),X)) : h is
homogeneous };
per cases ;
suppose f
=
{} ;
hence thesis;
end;
suppose F
=
{} ;
hence thesis by
A4,
A3,
FUNCT_6: 40;
end;
suppose ex h be
set st h
in (
rng F) & h
=
{} ;
then
<:F:>
=
{} by
Th7;
hence thesis by
A4,
A3;
end;
suppose
A5: F
<>
{} & f
<>
{} & for h be
set st h
in (
rng F) holds h
<>
{} ;
then for h be
Element of (
HFuncs X) st h
in (
rng F) holds h is
quasi_total non
empty by
A2;
hence thesis by
A1,
A5,
Th44;
end;
end;
theorem ::
COMPUT_1:47
Th46: for f,g be non
empty
quasi_total
Element of (
HFuncs D) st (
arity f)
=
0 & (
arity g)
=
0 & (f
.
{} )
= (g
.
{} ) holds f
= g
proof
set X = D;
let f,g be non
empty
quasi_total
Element of (
HFuncs X);
assume that
A1: (
arity f)
=
0 and
A2: (
arity g)
=
0 and
A3: (f
.
{} )
= (g
.
{} );
now
thus (
dom f)
= (
0
-tuples_on X) by
A1,
Th21
.=
{(
<*> X)} by
FINSEQ_2: 94;
thus (
dom g)
= (
0
-tuples_on X) by
A2,
Th21
.=
{(
<*> X)} by
FINSEQ_2: 94;
let x be
object;
assume x
in
{(
<*> X)};
then x
=
{} by
TARSKI:def 1;
hence (f
. x)
= (g
. x) by
A3;
end;
hence thesis;
end;
theorem ::
COMPUT_1:48
Th47: for f,g be non
empty
len-total
homogeneous
to-naturals(
NAT
* )
-defined
Function st (
arity f)
=
0 & (
arity g)
=
0 & (f
.
{} )
= (g
.
{} ) holds f
= g
proof
let f,g be non
empty
len-total
homogeneous
to-naturals(
NAT
* )
-defined
Function;
assume that
A1: (
arity f)
=
0 and
A2: (
arity g)
=
0 and
A3: (f
.
{} )
= (g
.
{} );
A4: g is non
empty
quasi_total
Element of (
HFuncs
NAT ) by
Th28;
f is non
empty
quasi_total
Element of (
HFuncs
NAT ) by
Th28;
hence thesis by
A1,
A2,
A3,
A4,
Th46;
end;
begin
reserve f1,f2 for non
empty
homogeneous
to-naturals(
NAT
* )
-defined
Function,
e1,e2 for
homogeneous
to-naturals(
NAT
* )
-defined
Function,
p for
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
definition
let g,f1,f2 be
homogeneous
to-naturals(
NAT
* )
-defined
Function, i be
Element of
NAT ;
::
COMPUT_1:def9
pred g
is_primitive-recursively_expressed_by f1,f2,i means ex n be
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 be
FinSequence of
NAT st (
len p)
= n holds ((p
+* (i,
0 ))
in (
dom g) iff (
Del (p,i))
in (
dom f1)) & ((p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i)))) & for n be
Nat holds ((p
+* (i,(n
+ 1)))
in (
dom g) iff (p
+* (i,n))
in (
dom g) & ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)
in (
dom f2)) & ((p
+* (i,(n
+ 1)))
in (
dom g) implies (g
. (p
+* (i,(n
+ 1))))
= (f2
. ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)));
end
defpred
Q[
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
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let i be
Nat;
let p be
FinSequence of
NAT ;
::
COMPUT_1:def10
func
primrec (f1,f2,i,p) ->
Element of (
HFuncs
NAT ) means
:
Def10: ex F be
sequence of (
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 be
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
proof
reconsider ff1 = f1, ff2 = f2 as
Element of (
HFuncs
NAT ) by
Th27;
set n = (
len p);
reconsider z = (ff1
. (
Del (p,i))) as
Element of
NAT ;
defpred
A[
Nat,
Element of (
HFuncs
NAT ),
Element of (
HFuncs
NAT )] means
Q[$1, $2, $3, p, i, ff2];
(p
+* (i,
0 ))
in (
NAT
* ) by
FINSEQ_1:def 11;
then
reconsider Ap =
{(p
+* (i,
0 ))} as non
empty
Subset of (
NAT
* ) by
ZFMISC_1: 31;
{} is
PartFunc of (
NAT
* ),
NAT by
RELSET_1: 12;
then
{}
in (
PFuncs ((
NAT
* ),
NAT )) by
PARTFUN1: 45;
then
A1:
{}
in (
HFuncs
NAT );
(Ap
--> z)
= ((p
+* (i,
0 ))
.--> z);
then (Ap
--> z)
in (
HFuncs
NAT );
then
reconsider t = (Ap
--> z), e =
{} as
Element of (
HFuncs
NAT ) by
A1;
i
in (
dom p) & (
Del (p,i))
in (
dom f1) or not i
in (
dom p) or not (
Del (p,i))
in (
dom f1);
then
consider A be
Element of (
HFuncs
NAT ) such that
A2: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies A
= t and
A3: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies A
= e;
A4: for m be
Nat holds for x be
Element of (
HFuncs
NAT ) holds ex y be
Element of (
HFuncs
NAT ) st
A[m, x, y]
proof
let m be
Nat, x be
Element of (
HFuncs
NAT );
set f = (x
+* (
{(p
+* (i,(m
+ 1)))}
--> (f2
. ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>))));
reconsider z = (ff2
. ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)) as
Element of
NAT ;
i
in (
dom p) & (p
+* (i,m))
in (
dom x) & ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom f2) or not i
in (
dom p) or not (p
+* (i,m))
in (
dom x) or not ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom f2);
then
consider y be
Function such that
A5: i
in (
dom p) & (p
+* (i,m))
in (
dom x) & ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom f2) & y
= (x
+* (
{(p
+* (i,(m
+ 1)))}
--> (f2
. ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)))) or ( not i
in (
dom p) or not (p
+* (i,m))
in (
dom x) or not ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom f2)) & y
= x;
(p
+* (i,(m
+ 1)))
in (
NAT
* ) by
FINSEQ_1:def 11;
then
reconsider B =
{(p
+* (i,(m
+ 1)))} as
Subset of (
NAT
* ) by
ZFMISC_1: 31;
(
dom (B
--> z))
= B;
then
A6: (
dom f)
= ((
dom x)
\/ B) by
FUNCT_4:def 1;
(
dom p)
= (
dom (p
+* (i,(m
+ 1)))) by
FUNCT_7: 30;
then (
len (p
+* (i,(m
+ 1))))
= n by
FINSEQ_3: 29;
then (p
+* (i,(m
+ 1))) is
Element of (n
-tuples_on
NAT ) by
FINSEQ_2: 92;
then
A7: B
c= (n
-tuples_on
NAT ) by
ZFMISC_1: 31;
A8: f
= (x
+* (B
--> z));
now
assume
A9: (p
+* (i,m))
in (
dom x);
(
dom x)
c= (n
-tuples_on
NAT )
proof
let a be
object;
A10: (
dom p)
= (
dom (p
+* (i,m))) by
FUNCT_7: 30;
assume
A11: a
in (
dom x);
then
reconsider q = a as
Element of (
NAT
* );
(
len q)
= (
len (p
+* (i,m))) by
A9,
A11,
MARGREL1:def 1;
then (
len q)
= n by
A10,
FINSEQ_3: 29;
hence thesis;
end;
then
A12: f is
homogeneous by
A7,
A6,
Th15,
XBOOLE_1: 8;
f
in (
PFuncs ((
NAT
* ),
NAT )) by
A8,
PARTFUN1: 45;
hence f
in (
HFuncs
NAT ) by
A12;
end;
then
reconsider y as
Element of (
HFuncs
NAT ) by
A5;
take y;
thus i
in (
dom p) & (p
+* (i,m))
in (
dom x) & ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom ff2) implies y
= (x
+* ((p
+* (i,(m
+ 1)))
.--> (ff2
. ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)))) by
A5;
thus not i
in (
dom p) or not (p
+* (i,m))
in (
dom x) or not ((p
+* (i,m))
^
<*(x
. (p
+* (i,m)))*>)
in (
dom ff2) implies y
= x by
A5;
end;
consider FF be
sequence of (
HFuncs
NAT ) such that
A13: (FF
.
0 )
= A and
A14: for m be
Nat holds
A[m, (FF
. m) qua
Element of (
HFuncs
NAT ), (FF
. (m
+ 1)) qua
Element of (
HFuncs
NAT )] from
RECDEF_1:sch 2(
A4);
take (FF
. (p
/. i)), FF;
thus thesis by
A2,
A3,
A13,
A14;
end;
uniqueness
proof
reconsider ff2 = f2 as
Element of (
HFuncs
NAT ) by
Th27;
let g1,g2 be
Element of (
HFuncs
NAT );
given F1 be
sequence of (
HFuncs
NAT ) such that
A15: g1
= (F1
. (p
/. i)) and
A16: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F1
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A17: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A18: for m be
Nat holds
Q[m, (F1
. m) qua
Element of (
HFuncs
NAT ), (F1
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2];
given F2 be
sequence of (
HFuncs
NAT ) such that
A19: g2
= (F2
. (p
/. i)) and
A20: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F2
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A21: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F2
.
0 )
=
{} and
A22: for m be
Nat holds
Q[m, (F2
. m) qua
Element of (
HFuncs
NAT ), (F2
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2];
defpred
p[
Nat] means (F1
. $1)
= (F2
. $1);
A23:
now
let m be
Nat;
assume
p[m];
then
A24:
Q[m, (F1
. m) qua
Element of (
HFuncs
NAT ), (F2
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, ff2] by
A22;
Q[m, (F1
. m) qua
Element of (
HFuncs
NAT ), (F1
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2] by
A18;
hence
p[(m
+ 1)] by
A24;
end;
A25:
p[
0 ] by
A16,
A17,
A20,
A21;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A25,
A23);
hence thesis by
A15,
A19;
end;
end
theorem ::
COMPUT_1:49
Th48: for i be
Nat holds for p,q be
FinSequence of
NAT st q
in (
dom (
primrec (e1,e2,i,p))) holds ex k st q
= (p
+* (i,k))
proof
let i be
Nat;
set f1 = e1, f2 = e2;
let p,q be
FinSequence of
NAT such that
A1: q
in (
dom (
primrec (f1,f2,i,p)));
consider F be
sequence of (
HFuncs
NAT ) such that
A2: (
primrec (f1,f2,i,p))
= (F
. (p
/. i)) and
A3: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A4: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A5: for m be
Nat holds
Q[m, (F
. m) qua
Element of (
HFuncs
NAT ), (F
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2] by
Def10;
defpred
p[
Nat] means q
in (
dom (F
. $1)) implies ex k be
Element of
NAT st q
= (p
+* (i,k));
A6: for m be
Nat st
p[m] holds
p[(m
+ 1)]
proof
let m be
Nat such that
A7:
p[m] and
A8: q
in (
dom (F
. (m
+ 1)));
per cases ;
suppose i
in (
dom p) & (p
+* (i,m))
in (
dom (F
. m)) & ((p
+* (i,m))
^
<*((F
. m)
. (p
+* (i,m)))*>)
in (
dom f2);
then (F
. (m
+ 1))
= ((F
. m)
+* ((p
+* (i,(m
+ 1)))
.--> (f2
. ((p
+* (i,m))
^
<*((F
. m)
. (p
+* (i,m)))*>)))) by
A5;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom ((p
+* (i,(m
+ 1)))
.--> (f2
. ((p
+* (i,m))
^
<*((F
. m)
. (p
+* (i,m)))*>))))) by
FUNCT_4:def 1;
then
A9: (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/
{(p
+* (i,(m
+ 1)))});
thus ex k be
Element of
NAT st q
= (p
+* (i,k))
proof
per cases by
A8,
A9,
XBOOLE_0:def 3;
suppose q
in (
dom (F
. m));
hence thesis by
A7;
end;
suppose q
in
{(p
+* (i,(m
+ 1)))};
then q
= (p
+* (i,(m
+ 1))) by
TARSKI:def 1;
hence thesis;
end;
end;
end;
suppose 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);
hence thesis by
A5,
A7,
A8;
end;
end;
A10:
p[
0 ]
proof
assume
A11: q
in (
dom (F
.
0 ));
per cases ;
suppose i
in (
dom p) & (
Del (p,i))
in (
dom f1);
then (
dom (F
.
0 ))
=
{(p
+* (i,
0 ))} by
A3;
then (p
+* (i,
0 ))
= q by
A11,
TARSKI:def 1;
hence thesis;
end;
suppose not i
in (
dom p) or not (
Del (p,i))
in (
dom f1);
hence thesis by
A4,
A11;
end;
end;
for n be
Nat holds
p[n] from
NAT_1:sch 2(
A10,
A6);
hence thesis by
A1,
A2;
end;
theorem ::
COMPUT_1:50
Th49: for i be
Nat holds for p be
FinSequence of
NAT st not i
in (
dom p) holds (
primrec (e1,e2,i,p))
=
{}
proof
let i be
Nat;
set f1 = e1, f2 = e2;
let p be
FinSequence of
NAT ;
consider F be
sequence of (
HFuncs
NAT ) such that
A1: (
primrec (f1,f2,i,p))
= (F
. (p
/. i)) and i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A2: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A3: for m be
Nat holds
Q[m, (F
. m) qua
Element of (
HFuncs
NAT ), (F
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2] by
Def10;
defpred
p[
Nat] means (F
. $1)
=
{} ;
assume
A4: not i
in (
dom p);
then
A5: for m be
Nat st
p[m] holds
p[(m
+ 1)] by
A3;
A6:
p[
0 ] by
A4,
A2;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A6,
A5);
hence thesis by
A1;
end;
theorem ::
COMPUT_1:51
Th50: for i be
Nat holds for p,q be
FinSequence of
NAT holds (
primrec (e1,e2,i,p))
tolerates (
primrec (e1,e2,i,q))
proof
let i be
Nat;
set f1 = e1, f2 = e2;
let p1,p2 be
FinSequence of
NAT ;
per cases ;
suppose not i
in (
dom p1) or not i
in (
dom p2);
then (
primrec (f1,f2,i,p1))
=
{} or (
primrec (f1,f2,i,p2))
=
{} by
Th49;
hence thesis;
end;
suppose
A1: i
in (
dom p1) & i
in (
dom p2);
reconsider m = (p1
/. i), n = (p2
/. i) as
Element of
NAT ;
consider F2 be
sequence of (
HFuncs
NAT ) such that
A2: (
primrec (f1,f2,i,p2))
= (F2
. (p2
/. i)) and
A3: i
in (
dom p2) & (
Del (p2,i))
in (
dom f1) implies (F2
.
0 )
= ((p2
+* (i,
0 ))
.--> (f1
. (
Del (p2,i)))) and
A4: not i
in (
dom p2) or not (
Del (p2,i))
in (
dom f1) implies (F2
.
0 )
=
{} and
A5: for m be
Nat holds
Q[m, (F2
. m) qua
Element of (
HFuncs
NAT ), (F2
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p2, i, f2] by
Def10;
consider F1 be
sequence of (
HFuncs
NAT ) such that
A6: (
primrec (f1,f2,i,p1))
= (F1
. (p1
/. i)) and
A7: i
in (
dom p1) & (
Del (p1,i))
in (
dom f1) implies (F1
.
0 )
= ((p1
+* (i,
0 ))
.--> (f1
. (
Del (p1,i)))) and
A8: not i
in (
dom p1) or not (
Del (p1,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A9: for m be
Nat holds
Q[m, (F1
. m) qua
Element of (
HFuncs
NAT ), (F1
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p1, i, f2] by
Def10;
defpred
p[
Nat] means for x be
set st x
in (
dom (F1
. $1)) holds ex n be
Element of
NAT st x
= (p1
+* (i,n)) & n
<= $1;
A10:
now
let m be
Nat such that
A11:
p[m];
thus
p[(m
+ 1)]
proof
set p1c = ((p1
+* (i,m))
^
<*((F1
. m)
. (p1
+* (i,m)))*>);
let x be
set such that
A12: x
in (
dom (F1
. (m
+ 1)));
A13: m
<= (m
+ 1) by
NAT_1: 11;
per cases ;
suppose i
in (
dom p1) & (p1
+* (i,m))
in (
dom (F1
. m)) & p1c
in (
dom f2);
then (F1
. (m
+ 1))
= ((F1
. m)
+* ((p1
+* (i,(m
+ 1)))
.--> (f2
. p1c))) by
A9;
then (
dom (F1
. (m
+ 1)))
= ((
dom (F1
. m))
\/ (
dom ((p1
+* (i,(m
+ 1)))
.--> (f2
. p1c)))) by
FUNCT_4:def 1
.= ((
dom (F1
. m))
\/
{(p1
+* (i,(m
+ 1)))});
then
A14: x
in (
dom (F1
. m)) or x
in
{(p1
+* (i,(m
+ 1)))} by
A12,
XBOOLE_0:def 3;
thus ex n be
Element of
NAT st x
= (p1
+* (i,n)) & n
<= (m
+ 1)
proof
per cases by
A14,
TARSKI:def 1;
suppose x
in (
dom (F1
. m));
then ex n be
Element of
NAT st x
= (p1
+* (i,n)) & n
<= m by
A11;
hence thesis by
A13,
XXREAL_0: 2;
end;
suppose x
= (p1
+* (i,(m
+ 1)));
hence thesis;
end;
end;
end;
suppose not i
in (
dom p1) or not (p1
+* (i,m))
in (
dom (F1
. m)) or not p1c
in (
dom f2);
then (F1
. (m
+ 1))
= (F1
. m) by
A9;
then ex n be
Element of
NAT st x
= (p1
+* (i,n)) & n
<= m by
A11,
A12;
hence thesis by
A13,
XXREAL_0: 2;
end;
end;
end;
A15:
now
defpred
r[
Nat] means (F1
. $1)
= (F2
. $1);
assume
A16: (p1
+* (i,
0 ))
= (p2
+* (i,
0 ));
A17:
r[
0 ]
proof
per cases ;
suppose i
in (
dom p1) & (
Del (p1,i))
in (
dom f1);
hence thesis by
A1,
A7,
A3,
A16,
Th4;
end;
suppose not i
in (
dom p1) or not (
Del (p1,i))
in (
dom f1);
hence thesis by
A1,
A8,
A4,
A16,
Th4;
end;
end;
A18:
now
let m be
Nat such that
A19:
r[m];
A20:
Q[m, (F1
. m) qua
Element of (
HFuncs
NAT ), (F1
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p1, i, f2] by
A9;
A21:
Q[m, (F2
. m) qua
Element of (
HFuncs
NAT ), (F2
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p2, i, f2] by
A5;
(p1
+* (i,m))
= (p2
+* (i,m)) by
A16,
Th2;
hence
r[(m
+ 1)] by
A1,
A19,
A20,
A21,
Th2;
end;
thus for m be
Nat holds
r[m] from
NAT_1:sch 2(
A17,
A18);
end;
A22:
p[
0 ]
proof
let x be
set such that
A23: x
in (
dom (F1
.
0 ));
(
dom (F1
.
0 ))
=
{(p1
+* (i,
0 ))} by
A7,
A8,
A23;
then x
= (p1
+* (i,
0 )) by
A23,
TARSKI:def 1;
hence thesis;
end;
A24: for m be
Nat holds
p[m] from
NAT_1:sch 2(
A22,
A10);
A25: for m,n be
Nat holds (F1
. m)
c= (F1
. (m
+ n))
proof
let m be
Nat;
defpred
r[
Nat] means (F1
. m)
c= (F1
. (m
+ $1));
A26:
now
let n be
Nat such that
A27:
r[n];
set k = (m
+ n);
(F1
. k) qua
set
c= (F1
. (k
+ 1)) qua
set
proof
set p1c = ((p1
+* (i,k))
^
<*((F1
. k)
. (p1
+* (i,k)))*>);
let x be
object such that
A28: x
in (F1
. k);
per cases ;
suppose
A29: i
in (
dom p1) & (p1
+* (i,k))
in (
dom (F1
. k)) & p1c
in (
dom f2);
A30: (
dom (F1
. k))
misses (
dom ((p1
+* (i,(k
+ 1)))
.--> (f2
. p1c)))
proof
assume not thesis;
then
consider x be
object such that
A31: x
in ((
dom (F1
. k))
/\ (
dom (
{(p1
+* (i,(k
+ 1)))}
--> (f2
. p1c)))) by
XBOOLE_0: 4;
x
in (
dom (F1
. k)) by
A31,
XBOOLE_0:def 4;
then
consider n1 be
Element of
NAT such that
A32: x
= (p1
+* (i,n1)) and
A33: n1
<= k by
A24;
A34: (k
+ 1)
= ((p1
+* (i,(k
+ 1)))
. i) by
A1,
FUNCT_7: 31;
A35: x
= (p1
+* (i,(k
+ 1))) by
A31,
TARSKI:def 1;
n1
= ((p1
+* (i,n1))
. i) by
A1,
FUNCT_7: 31;
hence contradiction by
A35,
A32,
A33,
A34,
NAT_1: 13;
end;
(F1
. (k
+ 1))
= ((F1
. k)
+* ((p1
+* (i,(k
+ 1)))
.--> (f2
. p1c))) by
A9,
A29;
then (F1
. k)
c= (F1
. (k
+ 1)) by
A30,
FUNCT_4: 32;
hence thesis by
A28;
end;
suppose not i
in (
dom p1) or not (p1
+* (i,k))
in (
dom (F1
. k)) or not p1c
in (
dom f2);
hence thesis by
A9,
A28;
end;
end;
hence
r[(n
+ 1)] by
A27,
XBOOLE_1: 1;
end;
A36:
r[
0 ];
thus for n be
Nat holds
r[n] from
NAT_1:sch 2(
A36,
A26);
end;
defpred
p[
Nat] means for x be
set st x
in (
dom (F2
. $1)) holds ex n be
Element of
NAT st x
= (p2
+* (i,n)) & n
<= $1;
A37:
now
let m be
Nat such that
A38:
p[m];
thus
p[(m
+ 1)]
proof
set p2c = ((p2
+* (i,m))
^
<*((F2
. m)
. (p2
+* (i,m)))*>);
let x be
set such that
A39: x
in (
dom (F2
. (m
+ 1)));
A40: m
<= (m
+ 1) by
NAT_1: 11;
per cases ;
suppose i
in (
dom p2) & (p2
+* (i,m))
in (
dom (F2
. m)) & p2c
in (
dom f2);
then (F2
. (m
+ 1))
= ((F2
. m)
+* ((p2
+* (i,(m
+ 1)))
.--> (f2
. p2c))) by
A5;
then (
dom (F2
. (m
+ 1)))
= ((
dom (F2
. m))
\/ (
dom ((p2
+* (i,(m
+ 1)))
.--> (f2
. p2c)))) by
FUNCT_4:def 1
.= ((
dom (F2
. m))
\/
{(p2
+* (i,(m
+ 1)))});
then
A41: x
in (
dom (F2
. m)) or x
in
{(p2
+* (i,(m
+ 1)))} by
A39,
XBOOLE_0:def 3;
thus ex n be
Element of
NAT st x
= (p2
+* (i,n)) & n
<= (m
+ 1)
proof
per cases by
A41,
TARSKI:def 1;
suppose x
in (
dom (F2
. m));
then ex n be
Element of
NAT st x
= (p2
+* (i,n)) & n
<= m by
A38;
hence thesis by
A40,
XXREAL_0: 2;
end;
suppose x
= (p2
+* (i,(m
+ 1)));
hence thesis;
end;
end;
end;
suppose not i
in (
dom p2) or not (p2
+* (i,m))
in (
dom (F2
. m)) or not p2c
in (
dom f2);
then (F2
. (m
+ 1))
= (F2
. m) by
A5;
then ex n be
Element of
NAT st x
= (p2
+* (i,n)) & n
<= m by
A38,
A39;
hence thesis by
A40,
XXREAL_0: 2;
end;
end;
end;
A42:
p[
0 ]
proof
let x be
set such that
A43: x
in (
dom (F2
.
0 ));
(
dom (F2
.
0 ))
=
{(p2
+* (i,
0 ))} by
A3,
A4,
A43;
then x
= (p2
+* (i,
0 )) by
A43,
TARSKI:def 1;
hence thesis;
end;
A44: for m be
Nat holds
p[m] from
NAT_1:sch 2(
A42,
A37);
A45: for m,n be
Nat holds (F2
. m)
c= (F2
. (m
+ n))
proof
let m be
Nat;
defpred
r[
Nat] means (F2
. m)
c= (F2
. (m
+ $1));
A46:
now
let n be
Nat such that
A47:
r[n];
set k = (m
+ n);
(F2
. k)
c= (F2
. (k
+ 1))
proof
set p2c = ((p2
+* (i,k))
^
<*((F2
. k)
. (p2
+* (i,k)))*>);
let x be
object such that
A48: x
in (F2
. k);
per cases ;
suppose
A49: i
in (
dom p2) & (p2
+* (i,k))
in (
dom (F2
. k)) & p2c
in (
dom f2);
A50: (
dom (F2
. k))
misses (
dom ((p2
+* (i,(k
+ 1)))
.--> (f2
. p2c)))
proof
assume not thesis;
then
consider x be
object such that
A51: x
in ((
dom (F2
. k))
/\ (
dom (
{(p2
+* (i,(k
+ 1)))}
--> (f2
. p2c)))) by
XBOOLE_0: 4;
x
in (
dom (F2
. k)) by
A51,
XBOOLE_0:def 4;
then
consider n2 be
Element of
NAT such that
A52: x
= (p2
+* (i,n2)) and
A53: n2
<= k by
A44;
A54: (k
+ 1)
= ((p2
+* (i,(k
+ 1)))
. i) by
A1,
FUNCT_7: 31;
A55: x
= (p2
+* (i,(k
+ 1))) by
A51,
TARSKI:def 1;
n2
= ((p2
+* (i,n2))
. i) by
A1,
FUNCT_7: 31;
hence contradiction by
A55,
A52,
A53,
A54,
NAT_1: 13;
end;
(F2
. (k
+ 1))
= ((F2
. k)
+* ((p2
+* (i,(k
+ 1)))
.--> (f2
. p2c))) by
A5,
A49;
then (F2
. k)
c= (F2
. (k
+ 1)) by
A50,
FUNCT_4: 32;
hence thesis by
A48;
end;
suppose not i
in (
dom p2) or not (p2
+* (i,k))
in (
dom (F2
. k)) or not p2c
in (
dom f2);
hence thesis by
A5,
A48;
end;
end;
hence
r[(n
+ 1)] by
A47,
XBOOLE_1: 1;
end;
A56:
r[
0 ];
thus for n be
Nat holds
r[n] from
NAT_1:sch 2(
A56,
A46);
end;
reconsider F1m = (F1
. m), F1n = (F1
. n), F2m = (F2
. m), F2n = (F2
. n) as
Element of (
HFuncs
NAT );
A57:
now
assume
A58: (p1
+* (i,
0 ))
<> (p2
+* (i,
0 ));
let m be
Element of
NAT ;
assume ((
dom (F1
. m))
/\ (
dom (F2
. m)))
<>
{} ;
then
consider x be
object such that
A59: x
in ((
dom (F1
. m))
/\ (
dom (F2
. m))) by
XBOOLE_0:def 1;
x
in (
dom (F2
. m)) by
A59,
XBOOLE_0:def 4;
then
A60: ex n2 be
Element of
NAT st x
= (p2
+* (i,n2)) & n2
<= m by
A44;
x
in (
dom (F1
. m)) by
A59,
XBOOLE_0:def 4;
then ex n1 be
Element of
NAT st x
= (p1
+* (i,n1)) & n1
<= m by
A24;
hence contradiction by
A58,
A60,
Th2;
end;
thus thesis
proof
per cases ;
suppose m
<= n;
then
consider k be
Nat such that
A61: n
= (m
+ k) by
NAT_1: 10;
reconsider k as
Element of
NAT by
ORDINAL1:def 12;
A62: n
= (m
+ k) by
A61;
thus (
primrec (f1,f2,i,p1))
tolerates (
primrec (f1,f2,i,p2))
proof
per cases by
A15,
A57;
suppose F1n
= F2n;
hence thesis by
A6,
A2,
A25,
A62,
PARTFUN1: 58;
end;
suppose ((
dom F1n)
/\ (
dom F2n))
=
{} ;
then (
dom F1n)
misses (
dom F2n) by
XBOOLE_0:def 7;
then F1n
tolerates F2n by
PARTFUN1: 56;
hence thesis by
A6,
A2,
A25,
A62,
PARTFUN1: 58;
end;
end;
end;
suppose m
>= n;
then
consider k be
Nat such that
A63: m
= (n
+ k) by
NAT_1: 10;
reconsider k as
Element of
NAT by
ORDINAL1:def 12;
A64: m
= (n
+ k) by
A63;
thus (
primrec (f1,f2,i,p1))
tolerates (
primrec (f1,f2,i,p2))
proof
per cases by
A15,
A57;
suppose F1m
= F2m;
hence thesis by
A6,
A2,
A45,
A64,
PARTFUN1: 58;
end;
suppose ((
dom F1m)
/\ (
dom F2m))
=
{} ;
then (
dom F1m)
misses (
dom F2m) by
XBOOLE_0:def 7;
then F1m
tolerates F2m by
PARTFUN1: 56;
hence thesis by
A6,
A2,
A45,
A64,
PARTFUN1: 58;
end;
end;
end;
end;
end;
end;
theorem ::
COMPUT_1:52
Th51: for i be
Nat holds for p be
FinSequence of
NAT holds (
dom (
primrec (e1,e2,i,p)))
c= ((1
+ (
arity e1))
-tuples_on
NAT )
proof
let i be
Nat;
set f1 = e1, f2 = e2;
let p be
FinSequence of
NAT ;
per cases ;
suppose
A1: i
in (
dom p);
consider F be
sequence of (
HFuncs
NAT ) such that
A2: (
primrec (f1,f2,i,p))
= (F
. (p
/. i)) and
A3: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A4: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A5: for m be
Nat holds
Q[m, (F
. m) qua
Element of (
HFuncs
NAT ), (F
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p, i, f2] by
Def10;
defpred
p[
Nat] means (
dom (F
. $1))
c= ((1
+ (
arity f1))
-tuples_on
NAT );
A6:
now
let m be
Nat such that
A7:
p[m];
set pc = ((p
+* (i,m))
^
<*((F
. m)
. (p
+* (i,m)))*>);
per cases ;
suppose
A8: (p
+* (i,m))
in (
dom (F
. m)) & pc
in (
dom f2);
(
dom (p
+* (i,m)))
= (
dom p) by
FUNCT_7: 30
.= (
dom (p
+* (i,(m
+ 1)))) by
FUNCT_7: 30;
then
A9: (
len (p
+* (i,m)))
= (
len (p
+* (i,(m
+ 1)))) by
FINSEQ_3: 29;
(
len (p
+* (i,m)))
= (1
+ (
arity f1)) by
A7,
A8,
CARD_1:def 7;
then (p
+* (i,(m
+ 1))) is
Element of ((1
+ (
arity f1))
-tuples_on
NAT ) by
A9,
FINSEQ_2: 92;
then
A10:
{(p
+* (i,(m
+ 1)))}
c= ((1
+ (
arity f1))
-tuples_on
NAT ) by
ZFMISC_1: 31;
(F
. (m
+ 1))
= ((F
. m)
+* ((p
+* (i,(m
+ 1)))
.--> (f2
. pc))) by
A1,
A5,
A8;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom ((p
+* (i,(m
+ 1)))
.--> (f2
. pc)))) by
FUNCT_4:def 1;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/
{(p
+* (i,(m
+ 1)))});
hence
p[(m
+ 1)] by
A7,
A10,
XBOOLE_1: 8;
end;
suppose not (p
+* (i,m))
in (
dom (F
. m)) or not pc
in (
dom f2);
hence
p[(m
+ 1)] by
A5,
A7;
end;
end;
A11:
p[
0 ]
proof
per cases ;
suppose
A12: (
Del (p,i))
in (
dom f1);
(
dom f1)
c= ((
arity f1)
-tuples_on
NAT ) by
Th20;
then
A13: (
len (
Del (p,i)))
= (
arity f1) by
A12,
CARD_1:def 7;
A14: (
dom p)
= (
dom (p
+* (i,
0 ))) by
FUNCT_7: 30;
p
<> (
<*>
NAT ) by
A1;
then
consider n be
Nat such that
A15: (
len p)
= (n
+ 1) by
NAT_1: 6;
(
len (
Del (p,i)))
= n by
A1,
A15,
FINSEQ_3: 109;
then (
len (p
+* (i,
0 )))
= (1
+ (
arity f1)) by
A13,
A15,
A14,
FINSEQ_3: 29;
then
A16: (p
+* (i,
0 )) is
Element of ((1
+ (
arity f1))
-tuples_on
NAT ) by
FINSEQ_2: 92;
(
dom (F
.
0 ))
=
{(p
+* (i,
0 ))} by
A1,
A3,
A12;
hence thesis by
A16,
ZFMISC_1: 31;
end;
suppose not (
Del (p,i))
in (
dom f1);
hence thesis by
A4,
XBOOLE_1: 2;
end;
end;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A11,
A6);
hence thesis by
A2;
end;
suppose not i
in (
dom p);
then (
primrec (f1,f2,i,p))
=
{} by
Th49;
hence thesis;
end;
end;
theorem ::
COMPUT_1:53
Th52: for p be
FinSequence of
NAT st e1 is
empty holds (
primrec (e1,e2,i,p)) is
empty
proof
set f1 = e1, f2 = e2;
let p be
FinSequence of
NAT ;
consider F be
sequence of (
HFuncs
NAT ) such that
A1: (
primrec (f1,f2,i,p))
= (F
. (p
/. i)) and i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and
A2: not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A3: for m be
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)) by
Def10;
defpred
p[
Nat] means (F
. $1)
=
{} ;
A4: for k be
Nat st
p[k] holds
p[(k
+ 1)] by
A3,
RELAT_1: 38;
assume f1 is
empty;
then
A5:
p[
0 ] by
A2;
for k be
Nat holds
p[k] from
NAT_1:sch 2(
A5,
A4);
hence thesis by
A1;
end;
theorem ::
COMPUT_1:54
Th53: f1 is
len-total & f2 is
len-total & ((
arity f1)
+ 2)
= (
arity f2) & 1
<= i & i
<= (1
+ (
arity f1)) implies p
in (
dom (
primrec (f1,f2,i,p)))
proof
assume that
A1: f1 is
len-total and
A2: f2 is
len-total and
A3: ((
arity f1)
+ 2)
= (
arity f2) and
A4: 1
<= i and
A5: i
<= (1
+ (
arity f1));
A6: (
len p)
= (1
+ (
arity f1)) by
CARD_1:def 7;
then
A7: i
in (
dom p) by
A4,
A5,
FINSEQ_3: 25;
then
A8: (p
/. i)
= (p
. i) by
PARTFUN1:def 6;
consider F be
sequence of (
HFuncs
NAT ) such that
A9: (
primrec (f1,f2,i,p))
= (F
. (p
/. i)) and
A10: i
in (
dom p) & (
Del (p,i))
in (
dom f1) implies (F
.
0 )
= ((p
+* (i,
0 ))
.--> (f1
. (
Del (p,i)))) and not i
in (
dom p) or not (
Del (p,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A11: for m be
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)) by
Def10;
defpred
p[
Nat] means (p
+* (i,$1))
in (
dom (F
. $1));
A12: (p
+* (i,(p
. i)))
= p by
FUNCT_7: 35;
A13:
now
let m be
Nat such that
A14:
p[m];
reconsider aa = ((F
. m)
. (p
+* (i,m))) as
Element of
NAT ;
reconsider mm = m as
Element of
NAT by
ORDINAL1:def 12;
set pc = ((p
+* (i,m))
^
<*((F
. m)
. (p
+* (i,m)))*>);
reconsider p2 =
<*aa*> as
FinSequence of
NAT ;
reconsider p1 = ((p
+* (i,mm))
^ p2) as
FinSequence of
NAT ;
A15: (
len p2)
= 1 by
CARD_1:def 7;
(
len (p
+* (i,mm)))
= (1
+ (
arity f1)) by
CARD_1:def 7;
then (
len p1)
= (((
arity f1)
+ 1)
+ 1) by
A15,
FINSEQ_1: 22
.= (
arity f2) by
A3;
then
A16: p1 is
Element of ((
arity f2)
-tuples_on
NAT ) by
FINSEQ_2: 92;
(p
+* (i,(m
+ 1)))
in
{(p
+* (i,(m
+ 1)))} by
TARSKI:def 1;
then
A17: (p
+* (i,(m
+ 1)))
in (
dom (
{(p
+* (i,(m
+ 1)))}
--> (f2
. pc)));
(
dom f2)
= ((
arity f2)
-tuples_on
NAT ) by
A2,
Th22;
then (F
. (m
+ 1))
= ((F
. m)
+* ((p
+* (i,(m
+ 1)))
.--> (f2
. pc))) by
A7,
A11,
A14,
A16;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom (
{(p
+* (i,(m
+ 1)))}
--> (f2
. pc)))) by
FUNCT_4:def 1;
hence
p[(m
+ 1)] by
A17,
XBOOLE_0:def 3;
end;
A18:
now
reconsider Dpi = (
Del (p,i)) as
FinSequence of
NAT by
FINSEQ_3: 105;
reconsider Dpi9 = Dpi as
Element of ((
len Dpi)
-tuples_on
NAT ) by
FINSEQ_2: 92;
A19: (
dom f1)
= ((
arity f1)
-tuples_on
NAT ) by
A1,
Th22;
(
len (
Del (p,i)))
= (
arity f1) by
A6,
A7,
FINSEQ_3: 109;
then Dpi9
in (
dom f1) by
A19;
then (
dom (F
.
0 ))
=
{(p
+* (i,
0 ))} by
A4,
A5,
A6,
A10,
FINSEQ_3: 25;
hence
p[
0 ] by
TARSKI:def 1;
end;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A18,
A13);
hence thesis by
A8,
A9,
A12;
end;
definition
let f1,f2 be
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let i be
Nat;
::
COMPUT_1:def11
func
primrec (f1,f2,i) ->
Element of (
HFuncs
NAT ) means
:
Def11: ex G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) st it
= (
Union G) & for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p));
existence
proof
deffunc
f(
FinSequence of
NAT ) = (
primrec (f1,f2,i,$1));
reconsider ff1 = f1, ff2 = f2 as
Element of (
HFuncs
NAT ) by
Th27;
set n = ((
arity f1)
+ 1);
consider G be
Function of (n
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A1: for p be
Element of (n
-tuples_on
NAT ) holds (G
. p)
=
f(p) from
FUNCT_2:sch 4;
reconsider Y = (
rng G) as non
empty
Subset of (
HFuncs
NAT ) by
RELAT_1:def 19;
Y is
PartFunc-set of (
NAT
* ),
NAT
proof
let f be
Element of Y;
thus thesis;
end;
then
reconsider Y as
PFUNC_DOMAIN of (
NAT
* ),
NAT ;
A2: Y is
compatible
proof
let f,g be
Function;
assume f
in Y;
then
consider x be
object such that
A3: x
in (
dom G) and
A4: f
= (G
. x) by
FUNCT_1:def 3;
assume g
in Y;
then
consider y be
object such that
A5: y
in (
dom G) and
A6: g
= (G
. y) by
FUNCT_1:def 3;
reconsider x, y as
Element of (n
-tuples_on
NAT ) by
A3,
A5;
A7: g
= (
primrec (ff1,ff2,i,y)) by
A1,
A6;
f
= (
primrec (ff1,ff2,i,x)) by
A1,
A4;
hence thesis by
A7,
Th50;
end;
now
let x be
Element of (n
-tuples_on
NAT );
(G
. x)
= (
primrec (ff1,ff2,i,x)) by
A1;
hence (
dom (G
. x))
c= (n
-tuples_on
NAT ) by
Th51;
end;
then
consider g be
Element of (
HFuncs
NAT ) such that
A8: g
= (
Union G) and (
dom g)
c= (n
-tuples_on
NAT ) by
A2,
Th38;
take g, G;
thus thesis by
A1,
A8;
end;
uniqueness
proof
let g1,g2 be
Element of (
HFuncs
NAT );
given G1 be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A9: g1
= (
Union G1) and
A10: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G1
. p)
= (
primrec (f1,f2,i,p));
given G2 be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A11: g2
= (
Union G2) and
A12: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G2
. p)
= (
primrec (f1,f2,i,p));
now
let p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
thus (G1
. p)
= (
primrec (f1,f2,i,p)) by
A10
.= (G2
. p) by
A12;
end;
hence thesis by
A9,
A11,
FUNCT_2: 63;
end;
end
theorem ::
COMPUT_1:55
Th54: e1 is
empty implies (
primrec (e1,e2,i)) is
empty
proof
set f1 = e1, f2 = e2;
assume
A1: f1 is
empty;
consider G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A2: (
primrec (f1,f2,i))
= (
Union G) and
A3: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p)) by
Def11;
A4: (
dom G)
= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
FUNCT_2:def 1;
now
set p = the
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
let y be
object;
hereby
assume y
in (
rng G);
then
consider x be
object such that
A5: x
in (
dom G) and
A6: (G
. x)
= y by
FUNCT_1:def 3;
reconsider p = x as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A5;
(G
. p)
= (
primrec (f1,f2,i,p)) by
A3
.=
{} by
A1,
Th52;
hence y
in
{
{} } by
A6,
TARSKI:def 1;
end;
assume y
in
{
{} };
then
A7: y
=
{} by
TARSKI:def 1;
(G
. p)
= (
primrec (f1,f2,i,p)) by
A3
.=
{} by
A1,
Th52;
hence y
in (
rng G) by
A4,
A7,
FUNCT_1: 3;
end;
then
A8: (
rng G)
=
{
{} } by
TARSKI: 2;
(
Union G)
= (
union (
rng G))
.=
{} by
A8,
ZFMISC_1: 25;
hence thesis by
A2;
end;
theorem ::
COMPUT_1:56
Th55: (
dom (
primrec (f1,f2,i)))
c= (((
arity f1)
+ 1)
-tuples_on
NAT )
proof
let x be
object such that
A1: x
in (
dom (
primrec (f1,f2,i)));
consider G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A2: (
primrec (f1,f2,i))
= (
Union G) and
A3: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p)) by
Def11;
A4: (
rng G) is
compatible
proof
let f,g be
Function such that
A5: f
in (
rng G) and
A6: g
in (
rng G);
consider fx be
object such that
A7: fx
in (
dom G) and
A8: f
= (G
. fx) by
A5,
FUNCT_1:def 3;
reconsider fx as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A7;
consider gx be
object such that
A9: gx
in (
dom G) and
A10: g
= (G
. gx) by
A6,
FUNCT_1:def 3;
reconsider gx as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A9;
A11: (G
. gx)
= (
primrec (f1,f2,i,gx)) by
A3;
(G
. fx)
= (
primrec (f1,f2,i,fx)) by
A3;
hence thesis by
A8,
A10,
A11,
Th50;
end;
now
let x be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
(G
. x)
= (
primrec (f1,f2,i,x)) by
A3;
hence (
dom (G
. x))
c= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
Th51;
end;
then ex F be
Element of (
HFuncs
NAT ) st F
= (
Union G) & (
dom F)
c= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A4,
Th38;
hence thesis by
A1,
A2;
end;
theorem ::
COMPUT_1:57
Th56: f1 is
len-total & f2 is
len-total & ((
arity f1)
+ 2)
= (
arity f2) & 1
<= i & i
<= (1
+ (
arity f1)) implies (
dom (
primrec (f1,f2,i)))
= (((
arity f1)
+ 1)
-tuples_on
NAT ) & (
arity (
primrec (f1,f2,i)))
= ((
arity f1)
+ 1)
proof
assume that
A1: f1 is
len-total and
A2: f2 is
len-total and
A3: ((
arity f1)
+ 2)
= (
arity f2) and
A4: 1
<= i and
A5: i
<= (1
+ (
arity f1));
set n = ((
arity f1)
+ 1);
A6: (n
-tuples_on
NAT )
c= (
dom (
primrec (f1,f2,i)))
proof
let x be
object;
assume x
in (n
-tuples_on
NAT );
then
reconsider x9 = x as
Element of (n
-tuples_on
NAT );
consider G be
Function of (n
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A7: (
primrec (f1,f2,i))
= (
Union G) and
A8: for p be
Element of (n
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p)) by
Def11;
reconsider rngG = (
rng G) as non
empty
functional
compatible
set by
A7,
Th10;
A9: (
dom (
union rngG))
= (
union the set of all (
dom f) where f be
Element of rngG) by
Th11;
(
dom G)
= (n
-tuples_on
NAT ) by
FUNCT_2:def 1;
then (G
. x9)
in (
rng G) by
FUNCT_1: 3;
then
A10: (
dom (G
. x9))
in the set of all (
dom f) where f be
Element of rngG;
A11: x9
in (
dom (
primrec (f1,f2,i,x9))) by
A1,
A2,
A3,
A4,
A5,
Th53;
(G
. x9)
= (
primrec (f1,f2,i,x9)) by
A8;
hence thesis by
A7,
A11,
A9,
A10,
TARSKI:def 4;
end;
(
dom (
primrec (f1,f2,i)))
c= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
Th55;
hence (
dom (
primrec (f1,f2,i)))
= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A6;
hence thesis by
Th24;
end;
Lm2:
now
let f1,f2 be non
empty
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
let i be
Nat, m be
Element of
NAT ;
set pm1 = (p
+* (i,(m
+ 1))), pm = (p
+* (i,m));
let F1,F be
sequence of (
HFuncs
NAT ) such that
A1: i
in (
dom pm1) & (
Del (pm1,i))
in (
dom f1) implies (F1
.
0 )
= (
{(pm1
+* (i,
0 ))}
--> (f1
. (
Del (pm1,i)))) and
A2: not i
in (
dom pm1) or not (
Del (pm1,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A3: for M be
Nat holds
Q[M, (F1
. M) qua
Element of (
HFuncs
NAT ), (F1
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pm1, i, f2] and
A4: i
in (
dom pm) & (
Del (pm,i))
in (
dom f1) implies (F
.
0 )
= (
{(pm
+* (i,
0 ))}
--> (f1
. (
Del (pm,i)))) and
A5: not i
in (
dom pm) or not (
Del (pm,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A6: for M be
Nat holds
Q[M, (F
. M) qua
Element of (
HFuncs
NAT ), (F
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pm, i, f2];
A7: (
dom p)
= (
dom pm) by
FUNCT_7: 30;
A8: (pm
+* (i,
0 ))
= (p
+* (i,
0 )) by
FUNCT_7: 34
.= (pm1
+* (i,
0 )) by
FUNCT_7: 34;
A9: (
dom p)
= (
dom pm1) by
FUNCT_7: 30;
A10: (
Del (pm,i))
= (
Del (p,i)) by
Th3
.= (
Del (pm1,i)) by
Th3;
for x be
object st x
in
NAT holds (F
. x)
= (F1
. x)
proof
let x be
object;
defpred
p[
Nat] means (F
. $1)
= (F1
. $1);
A11: for k be
Nat st
p[k] holds
p[(k
+ 1)]
proof
let k be
Nat such that
A12:
p[k];
A13: (pm
+* (i,(k
+ 1)))
= (p
+* (i,(k
+ 1))) by
FUNCT_7: 34
.= (pm1
+* (i,(k
+ 1))) by
FUNCT_7: 34;
A14: (pm
+* (i,k))
= (p
+* (i,k)) by
FUNCT_7: 34
.= (pm1
+* (i,k)) by
FUNCT_7: 34;
per cases ;
suppose
A15: i
in (
dom pm) & (pm
+* (i,k))
in (
dom (F
. k)) & ((pm
+* (i,k))
^
<*((F
. k)
. (pm
+* (i,k)))*>)
in (
dom f2);
hence (F
. (k
+ 1))
= ((F
. k)
+* ((pm
+* (i,(k
+ 1)))
.--> (f2
. ((pm
+* (i,k))
^
<*((F
. k)
. (pm
+* (i,k)))*>)))) by
A6
.= (F1
. (k
+ 1)) by
A3,
A7,
A9,
A12,
A14,
A13,
A15;
end;
suppose
A16: not i
in (
dom pm) or not (pm
+* (i,k))
in (
dom (F
. k)) or not ((pm
+* (i,k))
^
<*((F
. k)
. (pm
+* (i,k)))*>)
in (
dom f2);
hence (F
. (k
+ 1))
= (F
. k) by
A6
.= (F1
. (k
+ 1)) by
A3,
A7,
A9,
A12,
A14,
A16;
end;
end;
A17:
p[
0 ] by
A1,
A2,
A4,
A5,
A7,
A8,
A10,
FUNCT_7: 30;
A18: for k be
Nat holds
p[k] from
NAT_1:sch 2(
A17,
A11);
assume x
in
NAT ;
hence thesis by
A18;
end;
hence F1
= F by
FUNCT_2: 12;
end;
Lm3:
now
let f1,f2 be non
empty
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
let i,m be
Element of
NAT such that
A1: i
in (
dom p);
set pm = (p
+* (i,m)), pm1 = (p
+* (i,(m
+ 1)));
let F be
sequence of (
HFuncs
NAT ) such that
A2: i
in (
dom pm1) & (
Del (pm1,i))
in (
dom f1) implies (F
.
0 )
= (
{(pm1
+* (i,
0 ))}
--> (f1
. (
Del (pm1,i)))) and
A3: not i
in (
dom pm1) or not (
Del (pm1,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A4: for M be
Nat holds
Q[M, (F
. M) qua
Element of (
HFuncs
NAT ), (F
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pm1, i, f2];
thus ((F
. (m
+ 1))
. pm)
= ((F
. m)
. pm)
proof
per cases ;
suppose
A5: i
in (
dom pm1) & (pm1
+* (i,m))
in (
dom (F
. m)) & ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)
in (
dom f2);
A6: pm1
= (pm1
+* (i,(m
+ 1))) by
FUNCT_7: 34;
A7: (pm1
. i)
= (m
+ 1) by
A1,
FUNCT_7: 31;
(pm
. i)
= m by
A1,
FUNCT_7: 31;
then pm
<> pm1 by
A7;
then
A8: not pm
in (
dom (
{(pm1
+* (i,(m
+ 1)))}
--> (f2
. ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)))) by
A6,
TARSKI:def 1;
(F
. (m
+ 1))
= ((F
. m)
+* ((pm1
+* (i,(m
+ 1)))
.--> (f2
. ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)))) by
A4,
A5;
hence thesis by
A8,
FUNCT_4: 11;
end;
suppose not i
in (
dom pm1) or not (pm1
+* (i,m))
in (
dom (F
. m)) or not ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)
in (
dom f2);
hence thesis by
A4;
end;
end;
A9: for m,k be
Nat st (p
+* (i,k))
in (
dom (F
. m)) holds k
<= m
proof
defpred
p[
Nat] means for k be
Nat st (p
+* (i,k))
in (
dom (F
. $1)) holds k
<= $1;
A10: for m be
Nat st
p[m] holds
p[(m
+ 1)]
proof
let m be
Nat such that
A11:
p[m];
let k be
Nat such that
A12: (p
+* (i,k))
in (
dom (F
. (m
+ 1)));
per cases ;
suppose i
in (
dom pm1) & (pm1
+* (i,m))
in (
dom (F
. m)) & ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)
in (
dom f2);
then (F
. (m
+ 1))
= ((F
. m)
+* ((pm1
+* (i,(m
+ 1)))
.--> (f2
. ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)))) by
A4;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom (
{(pm1
+* (i,(m
+ 1)))}
--> (f2
. ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>))))) by
FUNCT_4:def 1;
then
A13: (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/
{(pm1
+* (i,(m
+ 1)))});
thus k
<= (m
+ 1)
proof
per cases by
A12,
A13,
XBOOLE_0:def 3;
suppose
A14: (p
+* (i,k))
in (
dom (F
. m));
A15: m
<= (m
+ 1) by
NAT_1: 11;
k
<= m by
A11,
A14;
hence thesis by
A15,
XXREAL_0: 2;
end;
suppose (p
+* (i,k))
in
{(pm1
+* (i,(m
+ 1)))};
then
A16: (p
+* (i,k))
= (pm1
+* (i,(m
+ 1))) by
TARSKI:def 1
.= (p
+* (i,(m
+ 1))) by
FUNCT_7: 34;
k
= ((p
+* (i,k))
. i) by
A1,
FUNCT_7: 31
.= (m
+ 1) by
A1,
A16,
FUNCT_7: 31;
hence thesis;
end;
end;
end;
suppose not i
in (
dom pm1) or not (pm1
+* (i,m))
in (
dom (F
. m)) or not ((pm1
+* (i,m))
^
<*((F
. m)
. (pm1
+* (i,m)))*>)
in (
dom f2);
then (F
. (m
+ 1))
= (F
. m) by
A4;
then
A17: k
<= m by
A11,
A12;
m
<= (m
+ 1) by
NAT_1: 11;
hence thesis by
A17,
XXREAL_0: 2;
end;
end;
A18:
p[
0 ]
proof
let k be
Nat such that
A19: (p
+* (i,k))
in (
dom (F
.
0 ));
per cases ;
suppose i
in (
dom pm1) & (
Del (pm1,i))
in (
dom f1);
then (
dom (F
.
0 ))
=
{(pm1
+* (i,
0 ))} by
A2;
then
A20: (p
+* (i,k))
= (pm1
+* (i,
0 )) by
A19,
TARSKI:def 1
.= (p
+* (i,
0 )) by
FUNCT_7: 34;
k
= ((p
+* (i,k))
. i) by
A1,
FUNCT_7: 31
.=
0 by
A1,
A20,
FUNCT_7: 31;
hence thesis;
end;
suppose not i
in (
dom pm1) or not (
Del (pm1,i))
in (
dom f1);
hence thesis by
A3,
A19;
end;
end;
thus for n be
Nat holds
p[n] from
NAT_1:sch 2(
A18,
A10);
end;
thus not pm1
in (
dom (F
. m))
proof
assume not thesis;
then (m
+ 1)
<= m by
A9;
hence contradiction by
NAT_1: 13;
end;
end;
definition
let n be
Nat, p be
Element of (n
-tuples_on
NAT );
let i,k be
Element of
NAT ;
:: original:
+*
redefine
func p
+* (i,k) ->
Element of (n
-tuples_on
NAT ) ;
coherence
proof
thus (p
+* (i,k)) is
Element of (n
-tuples_on
NAT );
end;
end
Lm4:
now
let f1,f2 be non
empty
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
let i,m be
Element of
NAT such that
A1: i
in (
dom p);
let G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A2: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p));
thus for k,n be
Nat holds (
dom (G
. (p
+* (i,k))))
c= (
dom (G
. (p
+* (i,(k
+ n)))))
proof
let k be
Nat;
set pk = (p
+* (i,k));
defpred
p[
Nat] means (
dom (G
. pk))
c= (
dom (G
. (p
+* (i,(k
+ $1)))));
A3:
now
let n be
Nat such that
A4:
p[n];
reconsider m = (k
+ n) as
Element of
NAT by
ORDINAL1:def 12;
set pkn1 = (p
+* (i,(m
+ 1)));
set pkn = (p
+* (i,m));
consider F be
sequence of (
HFuncs
NAT ) such that
A5: (
primrec (f1,f2,i,pkn))
= (F
. (pkn
/. i)) and
A6: i
in (
dom pkn) & (
Del (pkn,i))
in (
dom f1) implies (F
.
0 )
= ((pkn
+* (i,
0 ))
.--> (f1
. (
Del (pkn,i)))) and
A7: not i
in (
dom pkn) or not (
Del (pkn,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A8: for M be
Nat holds
Q[M, (F
. M) qua
Element of (
HFuncs
NAT ), (F
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pkn, i, f2] by
Def10;
(
dom p)
= (
dom pkn1) by
FUNCT_7: 30;
then
A9: (pkn1
/. i)
= (pkn1
. i) by
A1,
PARTFUN1:def 6
.= (m
+ 1) by
A1,
FUNCT_7: 31;
consider F1 be
sequence of (
HFuncs
NAT ) such that
A10: (
primrec (f1,f2,i,pkn1))
= (F1
. (pkn1
/. i)) and
A11: i
in (
dom pkn1) & (
Del (pkn1,i))
in (
dom f1) implies (F1
.
0 )
= ((pkn1
+* (i,
0 ))
.--> (f1
. (
Del (pkn1,i)))) and
A12: not i
in (
dom pkn1) or not (
Del (pkn1,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A13: for M be
Nat holds
Q[M, (F1
. M) qua
Element of (
HFuncs
NAT ), (F1
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pkn1, i, f2] by
Def10;
F1
= F by
A6,
A7,
A8,
A11,
A12,
A13,
Lm2;
then
A14: (G
. (p
+* (i,(k
+ (n
+ 1)))))
= (F
. (m
+ 1)) by
A2,
A10,
A9;
(
dom p)
= (
dom pkn) by
FUNCT_7: 30;
then (pkn
/. i)
= (pkn
. i) by
A1,
PARTFUN1:def 6
.= m by
A1,
FUNCT_7: 31;
then
A15: (G
. (p
+* (i,(k
+ n))))
= (F
. m) by
A2,
A5;
per cases ;
suppose i
in (
dom pkn) & (pkn
+* (i,m))
in (
dom (F
. m)) & ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)
in (
dom f2);
then (F
. (m
+ 1))
= ((F
. m)
+* ((pkn
+* (i,(m
+ 1)))
.--> (f2
. ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)))) by
A8;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom (
{(pkn
+* (i,(m
+ 1)))}
--> (f2
. ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>))))) by
FUNCT_4:def 1;
then (
dom (F
. m))
c= (
dom (F
. (m
+ 1))) by
XBOOLE_1: 7;
hence
p[(n
+ 1)] by
A4,
A14,
A15,
XBOOLE_1: 1;
end;
suppose not i
in (
dom pkn) or not (pkn
+* (i,m))
in (
dom (F
. m)) or not ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)
in (
dom f2);
hence
p[(n
+ 1)] by
A4,
A8,
A14,
A15;
end;
end;
A16:
p[
0 ];
thus for n be
Nat holds
p[n] from
NAT_1:sch 2(
A16,
A3);
end;
end;
Lm5:
now
let f1,f2 be non
empty
homogeneous
to-naturals(
NAT
* )
-defined
Function;
let p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT );
let i,m be
Element of
NAT such that
A1: i
in (
dom p);
let G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A2: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p));
thus for k,n be
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
Nat;
set pk = (p
+* (i,k));
defpred
p[
Nat] means not pk
in (
dom (G
. pk)) implies not pk
in (
dom (G
. (p
+* (i,(k
+ $1)))));
A3: for n be
Nat st
p[n] holds
p[(n
+ 1)]
proof
let n be
Nat such that
A4:
p[n] and
A5: not pk
in (
dom (G
. pk));
reconsider m = (k
+ n) as
Element of
NAT by
ORDINAL1:def 12;
set pkn = (p
+* (i,m));
consider F be
sequence of (
HFuncs
NAT ) such that
A6: (
primrec (f1,f2,i,pkn))
= (F
. (pkn
/. i)) and
A7: i
in (
dom pkn) & (
Del (pkn,i))
in (
dom f1) implies (F
.
0 )
= ((pkn
+* (i,
0 ))
.--> (f1
. (
Del (pkn,i)))) and
A8: not i
in (
dom pkn) or not (
Del (pkn,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A9: for M be
Nat holds
Q[M, (F
. M) qua
Element of (
HFuncs
NAT ), (F
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pkn, i, f2] by
Def10;
A10: (
dom p)
= (
dom pkn) by
FUNCT_7: 30;
then (pkn
/. i)
= (pkn
. i) by
A1,
PARTFUN1:def 6
.= m by
A1,
FUNCT_7: 31;
then
A11: not pk
in (
dom (F
. m)) by
A2,
A4,
A5,
A6;
set pkn1 = (p
+* (i,((k
+ n)
+ 1)));
consider F1 be
sequence of (
HFuncs
NAT ) such that
A12: (
primrec (f1,f2,i,pkn1))
= (F1
. (pkn1
/. i)) and
A13: i
in (
dom pkn1) & (
Del (pkn1,i))
in (
dom f1) implies (F1
.
0 )
= ((pkn1
+* (i,
0 ))
.--> (f1
. (
Del (pkn1,i)))) and
A14: not i
in (
dom pkn1) or not (
Del (pkn1,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A15: for M be
Nat holds
Q[M, (F1
. M) qua
Element of (
HFuncs
NAT ), (F1
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pkn1, i, f2] by
Def10;
(
dom p)
= (
dom pkn1) by
FUNCT_7: 30;
then
A16: (pkn1
/. i)
= (pkn1
. i) by
A1,
PARTFUN1:def 6
.= (m
+ 1) by
A1,
FUNCT_7: 31;
F1
= F by
A7,
A8,
A9,
A13,
A14,
A15,
Lm2;
then
A17: (G
. (p
+* (i,(k
+ (n
+ 1)))))
= (F
. (m
+ 1)) by
A2,
A12,
A16;
per cases ;
suppose i
in (
dom pkn) & (pkn
+* (i,m))
in (
dom (F
. m)) & ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)
in (
dom f2);
then (F
. (m
+ 1))
= ((F
. m)
+* ((pkn
+* (i,(m
+ 1)))
.--> (f2
. ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)))) by
A9;
then (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/ (
dom (
{(pkn
+* (i,(m
+ 1)))}
--> (f2
. ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>))))) by
FUNCT_4:def 1;
then
A18: (
dom (F
. (m
+ 1)))
= ((
dom (F
. m))
\/
{(pkn
+* (i,(m
+ 1)))});
k
<= (k
+ n) by
NAT_1: 11;
then
A19: k
<> (m
+ 1) by
NAT_1: 13;
A20: (pk
. i)
= k by
A1,
FUNCT_7: 31;
((pkn
+* (i,(m
+ 1)))
. i)
= (m
+ 1) by
A1,
A10,
FUNCT_7: 31;
then not pk
in
{(pkn
+* (i,(m
+ 1)))} by
A19,
A20,
TARSKI:def 1;
hence thesis by
A11,
A17,
A18,
XBOOLE_0:def 3;
end;
suppose not i
in (
dom pkn) or not (pkn
+* (i,m))
in (
dom (F
. m)) or not ((pkn
+* (i,m))
^
<*((F
. m)
. (pkn
+* (i,m)))*>)
in (
dom f2);
hence thesis by
A9,
A11,
A17;
end;
end;
A21:
p[
0 ];
thus for n be
Nat holds
p[n] from
NAT_1:sch 2(
A21,
A3);
end;
end;
Lm6: for i,m be
Nat holds i
in (
dom p) implies ((p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) iff (
Del (p,i))
in (
dom f1)) & ((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))) iff (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
+ 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)))*>)))
proof
let i,m be
Nat;
set p0 = (p
+* (i,
0 ));
consider G be
Function of (((
arity f1)
+ 1)
-tuples_on
NAT ), (
HFuncs
NAT ) such that
A1: (
primrec (f1,f2,i))
= (
Union G) and
A2: for p be
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) holds (G
. p)
= (
primrec (f1,f2,i,p)) by
Def11;
reconsider rngG = (
rng G) as
functional
compatible
set by
A1,
Th10;
assume
A3: i
in (
dom p);
A4:
now
let k be
Element of
NAT such that
A5: (p
+* (i,k))
in (
dom (
primrec (f1,f2,i))) and
A6: not (p
+* (i,k))
in (
dom (G
. (p
+* (i,k))));
(
union rngG)
<>
{} by
A1,
A5;
then
reconsider rngG = (
rng G) as non
empty
functional
compatible
set;
set pk = (p
+* (i,k));
(
dom (
union rngG))
= (
union the set of all (
dom f) where f be
Element of rngG) by
Th11;
then
consider X be
set such that
A7: pk
in X and
A8: X
in the set of all (
dom f) where f be
Element of rngG by
A1,
A5,
TARSKI:def 4;
consider f be
Element of rngG such that
A9: X
= (
dom f) by
A8;
consider pp be
object such that
A10: pp
in (
dom G) and
A11: f
= (G
. pp) by
FUNCT_1:def 3;
reconsider pp as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A10;
(G
. pp)
= (
primrec (f1,f2,i,pp)) by
A2;
then
A12: ex m be
Element of
NAT st pk
= (pp
+* (i,m)) by
A7,
A9,
A11,
Th48;
set ppi = (pp
. i);
A13: (p
+* (i,ppi))
= (pk
+* (i,ppi)) by
FUNCT_7: 34
.= (pp
+* (i,ppi)) by
A12,
FUNCT_7: 34
.= pp by
FUNCT_7: 35;
per cases by
XXREAL_0: 1;
suppose k
= ppi;
hence contradiction by
A6,
A7,
A9,
A11,
A13;
end;
suppose ppi
< k;
then
consider m be
Nat such that
A14: k
= (ppi
+ m) by
NAT_1: 10;
reconsider m as
Element of
NAT by
ORDINAL1:def 12;
k
= (ppi
+ m) by
A14;
then (
dom (G
. pp))
c= (
dom (G
. pk)) by
A3,
A2,
A13,
Lm4;
hence contradiction by
A6,
A7,
A9,
A11;
end;
suppose ppi
> k;
then
consider m be
Nat such that
A15: ppi
= (k
+ m) by
NAT_1: 10;
reconsider m as
Element of
NAT by
ORDINAL1:def 12;
ppi
= (k
+ m) by
A15;
hence contradiction by
A3,
A2,
A6,
A7,
A9,
A11,
A13,
Lm5;
end;
end;
A16: (
dom p)
= (
dom p0) by
FUNCT_7: 30;
A17:
now
A18: p0
in
{p0} by
TARSKI:def 1;
A19: (p0
/. i)
= (p0
. i) by
A3,
A16,
PARTFUN1:def 6
.=
0 by
A3,
FUNCT_7: 31;
consider F be
sequence of (
HFuncs
NAT ) such that
A20: (
primrec (f1,f2,i,p0))
= (F
. (p0
/. i)) and
A21: i
in (
dom p0) & (
Del (p0,i))
in (
dom f1) implies (F
.
0 )
= ((p0
+* (i,
0 ))
.--> (f1
. (
Del (p0,i)))) and
A22: not i
in (
dom p0) or not (
Del (p0,i))
in (
dom f1) implies (F
.
0 )
=
{} and for m be
Nat holds
Q[m, (F
. m) qua
Element of (
HFuncs
NAT ), (F
. (m
+ 1)) qua
Element of (
HFuncs
NAT ), p0, i, f2] by
Def10;
A23: (G
. p0)
= (
primrec (f1,f2,i,p0)) by
A2;
thus p0
in (
dom (G
. p0)) iff (
Del (p,i))
in (
dom f1)
proof
thus p0
in (
dom (G
. p0)) implies (
Del (p,i))
in (
dom f1) by
A2,
A20,
A22,
A19,
Th3;
assume (
Del (p,i))
in (
dom f1);
then (
dom (F
.
0 ))
=
{(p0
+* (i,
0 ))} by
A3,
A21,
Th3,
FUNCT_7: 30
.=
{p0} by
FUNCT_7: 34;
hence thesis by
A23,
A20,
A19,
TARSKI:def 1;
end;
assume p0
in (
dom (G
. p0));
then (F
.
0 )
= (
{p0}
--> (f1
. (
Del (p0,i)))) by
A2,
A20,
A21,
A22,
A19,
FUNCT_7: 34;
then (F
.
0 )
= (
{p0}
--> (f1
. (
Del (p,i)))) by
Th3;
hence ((G
. p0)
. p0)
= (f1
. (
Del (p,i))) by
A23,
A20,
A19,
A18,
FUNCOP_1: 7;
end;
reconsider mm = m as
Element of
NAT by
ORDINAL1:def 12;
set pm1 = (p
+* (i,(mm
+ 1))), pm = (p
+* (i,mm)), pc =
<*((G
. pm1)
. (pm1
+* (i,m)))*>;
A24: (
dom G)
= (((
arity f1)
+ 1)
-tuples_on
NAT ) by
FUNCT_2:def 1;
then
A25: (G
. pm1)
in (
rng G) by
FUNCT_1:def 3;
reconsider rngG as non
empty
functional
compatible
set;
A26: (G
. p0)
in (
rng G) by
A24,
FUNCT_1:def 3;
thus (p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) iff (
Del (p,i))
in (
dom f1)
proof
thus (p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) implies (
Del (p,i))
in (
dom f1) by
A4,
A17;
assume
A27: (
Del (p,i))
in (
dom f1);
(
dom (G
. p0))
in the set of all (
dom f) where f be
Element of rngG by
A26;
then p0
in (
union the set of all (
dom f) where f be
Element of rngG) by
A17,
A27,
TARSKI:def 4;
hence thesis by
A1,
Th11;
end;
hereby
assume
A28: (p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i)));
then p0
in (
dom (G
. p0)) by
A4;
then ((
union rngG)
. p0)
= ((G
. p0)
. p0) by
A26,
Th12;
hence ((
primrec (f1,f2,i))
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i))) by
A1,
A4,
A17,
A28;
end;
A29: (
dom p)
= (
dom pm1) by
FUNCT_7: 30;
A30: (pm1
+* (i,(m
+ 1)))
= pm1 by
FUNCT_7: 34;
A31: (pm1
+* (i,m))
= pm by
FUNCT_7: 34;
A32: (
dom p)
= (
dom pm) by
FUNCT_7: 30;
A33:
now
A34: (pm
/. i)
= (pm
. i) by
A3,
A32,
PARTFUN1:def 6
.= m by
A3,
FUNCT_7: 31;
consider F be
sequence of (
HFuncs
NAT ) such that
A35: (
primrec (f1,f2,i,pm))
= (F
. (pm
/. i)) and
A36: i
in (
dom pm) & (
Del (pm,i))
in (
dom f1) implies (F
.
0 )
= ((pm
+* (i,
0 ))
.--> (f1
. (
Del (pm,i)))) and
A37: not i
in (
dom pm) or not (
Del (pm,i))
in (
dom f1) implies (F
.
0 )
=
{} and
A38: for M be
Nat holds
Q[M, (F
. M) qua
Element of (
HFuncs
NAT ), (F
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pm, i, f2] by
Def10;
A39: (G
. pm1)
= (
primrec (f1,f2,i,pm1)) by
A2;
consider F1 be
sequence of (
HFuncs
NAT ) such that
A40: (
primrec (f1,f2,i,pm1))
= (F1
. (pm1
/. i)) and
A41: i
in (
dom pm1) & (
Del (pm1,i))
in (
dom f1) implies (F1
.
0 )
= ((pm1
+* (i,
0 ))
.--> (f1
. (
Del (pm1,i)))) and
A42: not i
in (
dom pm1) or not (
Del (pm1,i))
in (
dom f1) implies (F1
.
0 )
=
{} and
A43: for M be
Nat holds
Q[M, (F1
. M) qua
Element of (
HFuncs
NAT ), (F1
. (M
+ 1)) qua
Element of (
HFuncs
NAT ), pm1, i, f2] by
Def10;
A44: ((F1
. (m
+ 1))
. pm)
= ((F1
. m)
. pm) by
A3,
A41,
A42,
A43,
Lm3;
A45: pm1
in
{pm1} by
TARSKI:def 1;
then
A46: pm1
in (
dom (
{pm1}
--> (f2
. (pm
^
<*((F1
. m)
. pm)*>))));
A47: (G
. pm)
= (
primrec (f1,f2,i,pm)) by
A2;
A48: (pm1
/. i)
= (pm1
. i) by
A3,
A29,
PARTFUN1:def 6
.= (m
+ 1) by
A3,
FUNCT_7: 31;
A49: (F1
. m)
= (F
. m) by
A41,
A42,
A43,
A36,
A37,
A38,
Lm2;
A50: not pm1
in (
dom (F1
. m)) by
A3,
A41,
A42,
A43,
Lm3;
thus
A51: pm1
in (
dom (G
. pm1)) iff pm
in (
dom (G
. pm)) & (pm
^ pc)
in (
dom f2)
proof
hereby
assume
A52: pm1
in (
dom (G
. pm1));
then
A53: pm1
in (
dom (F1
. (m
+ 1))) by
A2,
A40,
A48;
assume
A54: not (pm
in (
dom (G
. pm)) & (pm
^ pc)
in (
dom f2));
per cases by
A54;
suppose not pm
in (
dom (G
. pm));
then not pm
in (
dom (F1
. m)) by
A2,
A35,
A34,
A49;
hence contradiction by
A31,
A43,
A50,
A53;
end;
suppose not (pm
^ pc)
in (
dom f2);
hence contradiction by
A31,
A39,
A40,
A43,
A48,
A44,
A50,
A52;
end;
end;
assume that
A55: pm
in (
dom (G
. pm)) and
A56: (pm
^ pc)
in (
dom f2);
pm1
in
{pm1} by
TARSKI:def 1;
then pm1
in (
dom (
{pm1}
--> (f2
. (pm
^
<*((F1
. m)
. pm)*>))));
then
A57: pm1
in ((
dom (F1
. m))
\/ (
dom (
{pm1}
--> (f2
. (pm
^
<*((F1
. m)
. pm)*>))))) by
XBOOLE_0:def 3;
(F1
. (m
+ 1))
= ((F1
. m)
+* (pm1
.--> (f2
. (pm
^
<*((F1
. m)
. pm)*>)))) by
A3,
A29,
A31,
A30,
A39,
A47,
A40,
A43,
A35,
A48,
A34,
A49,
A44,
A55,
A56;
hence thesis by
A39,
A40,
A48,
A57,
FUNCT_4:def 1;
end;
assume
A58: pm1
in (
dom (G
. pm1));
then (pm
^
<*((F1
. m)
. pm)*>)
in (
dom f2) by
A31,
A39,
A40,
A43,
A48,
A51;
then (F1
. (m
+ 1))
= ((F1
. m)
+* (pm1
.--> (f2
. (pm
^
<*((F1
. m)
. pm)*>)))) by
A3,
A29,
A31,
A30,
A47,
A43,
A35,
A34,
A49,
A51,
A58;
hence ((G
. pm1)
. pm1)
= ((
{pm1}
--> (f2
. (pm
^
<*((F1
. m)
. pm)*>)))
. pm1) by
A39,
A40,
A48,
A46,
FUNCT_4: 13
.= (f2
. (pm
^ pc)) by
A31,
A39,
A40,
A48,
A44,
A45,
FUNCOP_1: 7;
end;
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)
proof
hereby
assume
A59: (p
+* (i,(m
+ 1)))
in (
dom (
primrec (f1,f2,i)));
(G
. pm)
in (
rng G) by
A24,
FUNCT_1:def 3;
then (
dom (G
. pm))
in the set of all (
dom f) where f be
Element of rngG;
then pm
in (
union the set of all (
dom f) where f be
Element of rngG) by
A4,
A33,
A59,
TARSKI:def 4;
hence (p
+* (i,m))
in (
dom (
primrec (f1,f2,i))) by
A1,
Th11;
A60: (G
. pm1)
in (
rng G) by
A24,
FUNCT_1:def 3;
(
dom (G
. pm))
c= (
dom (G
. pm1)) by
A3,
A2,
Lm4;
then ((
union rngG)
. pm)
= ((G
. pm1)
. pm) by
A4,
A33,
A59,
A60,
Th12;
hence ((p
+* (i,m))
^
<*((
primrec (f1,f2,i))
. (p
+* (i,m)))*>)
in (
dom f2) by
A1,
A4,
A33,
A59,
FUNCT_7: 34;
end;
assume that
A61: (p
+* (i,m))
in (
dom (
primrec (f1,f2,i))) and
A62: ((p
+* (i,m))
^
<*((
primrec (f1,f2,i))
. (p
+* (i,m)))*>)
in (
dom f2);
A63: (G
. pm1)
in (
rng G) by
A24,
FUNCT_1:def 3;
(G
. pm1)
in (
rng G) by
A24,
FUNCT_1:def 3;
then
A64: (
dom (G
. pm1))
in the set of all (
dom f) where f be
Element of rngG;
A65: (
dom (G
. pm))
c= (
dom (G
. pm1)) by
A3,
A2,
Lm4;
pm
in (
dom (G
. pm)) by
A4,
A61;
then pm1
in (
union the set of all (
dom f) where f be
Element of rngG) by
A1,
A31,
A33,
A62,
A64,
A63,
A65,
Th12,
TARSKI:def 4;
hence thesis by
A1,
Th11;
end;
assume
A66: (p
+* (i,(m
+ 1)))
in (
dom (
primrec (f1,f2,i)));
A67: (
dom (G
. pm))
c= (
dom (G
. pm1)) by
A3,
A2,
Lm4;
then
A68: ((
union rngG)
. pm1)
= ((G
. pm1)
. pm1) by
A4,
A66,
A25,
Th12;
((
union rngG)
. pm)
= ((G
. pm1)
. pm) by
A4,
A33,
A66,
A25,
A67,
Th12;
hence thesis by
A1,
A4,
A33,
A66,
A68,
FUNCT_7: 34;
end;
theorem ::
COMPUT_1:58
i
in (
dom p) implies ((p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) iff (
Del (p,i))
in (
dom f1)) by
Lm6;
theorem ::
COMPUT_1:59
i
in (
dom p) & (p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) implies ((
primrec (f1,f2,i))
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i))) by
Lm6;
theorem ::
COMPUT_1:60
Th59: i
in (
dom p) & f1 is
len-total implies ((
primrec (f1,f2,i))
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i)))
proof
assume that
A1: i
in (
dom p) and
A2: f1 is
len-total;
A3: (
Del (p,i)) is
FinSequence of
NAT by
FINSEQ_3: 105;
(
len p)
= ((
arity f1)
+ 1) by
CARD_1:def 7;
then (
len (
Del (p,i)))
= (
arity f1) by
A1,
FINSEQ_3: 109;
then
A4: (
Del (p,i)) is
Element of ((
arity f1)
-tuples_on
NAT ) by
A3,
FINSEQ_2: 92;
(
dom f1)
= ((
arity f1)
-tuples_on
NAT ) by
A2,
Th22;
then (p
+* (i,
0 ))
in (
dom (
primrec (f1,f2,i))) by
A1,
A4,
Lm6;
hence thesis by
A1,
Lm6;
end;
theorem ::
COMPUT_1:61
i
in (
dom p) implies ((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:62
i
in (
dom p) & (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
Lm6;
theorem ::
COMPUT_1:63
Th62: f1 is
len-total & f2 is
len-total & ((
arity f1)
+ 2)
= (
arity f2) & 1
<= i & i
<= (1
+ (
arity f1)) implies ((
primrec (f1,f2,i))
. (p
+* (i,(m
+ 1))))
= (f2
. ((p
+* (i,m))
^
<*((
primrec (f1,f2,i))
. (p
+* (i,m)))*>))
proof
assume that
A1: f1 is
len-total and
A2: f2 is
len-total and
A3: ((
arity f1)
+ 2)
= (
arity f2) and
A4: 1
<= i and
A5: i
<= (1
+ (
arity f1));
(
len p)
= ((
arity f1)
+ 1) by
CARD_1:def 7;
then
A6: i
in (
dom p) by
A4,
A5,
FINSEQ_3: 25;
(p
+* (i,(m
+ 1)))
in (((
arity f1)
+ 1)
-tuples_on
NAT );
then (p
+* (i,(m
+ 1)))
in (
dom (
primrec (f1,f2,i))) by
A1,
A2,
A3,
A4,
A5,
Th56;
hence thesis by
A6,
Lm6;
end;
theorem ::
COMPUT_1:64
Th63: ((
arity f1)
+ 2)
= (
arity f2) & 1
<= i & i
<= ((
arity f1)
+ 1) implies (
primrec (f1,f2,i))
is_primitive-recursively_expressed_by (f1,f2,i)
proof
assume that
A1: ((
arity f1)
+ 2)
= (
arity f2) and
A2: 1
<= i and
A3: i
<= ((
arity f1)
+ 1);
take n = ((
arity f1)
+ 1);
set g = (
primrec (f1,f2,i));
thus (
dom g)
c= (n
-tuples_on
NAT ) by
Th55;
thus i
>= 1 & i
<= n by
A2,
A3;
thus ((
arity f1)
+ 1)
= n;
thus (n
+ 1)
= (
arity f2) by
A1;
let p be
FinSequence of
NAT ;
assume
A4: (
len p)
= n;
then
A5: i
in (
dom p) by
A2,
A3,
FINSEQ_3: 25;
A6: p is
Element of (n
-tuples_on
NAT ) by
A4,
FINSEQ_2: 92;
hence (p
+* (i,
0 ))
in (
dom g) iff (
Del (p,i))
in (
dom f1) by
A5,
Lm6;
thus (p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i))) by
A6,
A5,
Lm6;
let m be
Nat;
thus (p
+* (i,(m
+ 1)))
in (
dom g) iff (p
+* (i,m))
in (
dom g) & ((p
+* (i,m))
^
<*(g
. (p
+* (i,m)))*>)
in (
dom f2) by
A6,
A5,
Lm6;
thus (p
+* (i,(m
+ 1)))
in (
dom g) implies (g
. (p
+* (i,(m
+ 1))))
= (f2
. ((p
+* (i,m))
^
<*(g
. (p
+* (i,m)))*>)) by
A6,
A5,
Lm6;
end;
theorem ::
COMPUT_1:65
1
<= i & i
<= ((
arity f1)
+ 1) implies for g be
Element of (
HFuncs
NAT ) st g
is_primitive-recursively_expressed_by (f1,f2,i) holds g
= (
primrec (f1,f2,i))
proof
assume that
A1: i
>= 1 and
A2: i
<= ((
arity f1)
+ 1);
let g be
Element of (
HFuncs
NAT );
set n = ((
arity f1)
+ 1), h = (
primrec (f1,f2,i));
given n9 be
Element of
NAT such that
A3: (
dom g)
c= (n9
-tuples_on
NAT ) and i
>= 1 and i
<= n9 and
A4: ((
arity f1)
+ 1)
= n9 and (n9
+ 1)
= (
arity f2) and
A5: for p be
FinSequence of
NAT st (
len p)
= n9 holds ((p
+* (i,
0 ))
in (
dom g) iff (
Del (p,i))
in (
dom f1)) & ((p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i)))) & for n be
Nat holds ((p
+* (i,(n
+ 1)))
in (
dom g) iff (p
+* (i,n))
in (
dom g) & ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)
in (
dom f2)) & ((p
+* (i,(n
+ 1)))
in (
dom g) implies (g
. (p
+* (i,(n
+ 1))))
= (f2
. ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)));
A6:
now
let p be
Element of (n
-tuples_on
NAT );
defpred
p[
Nat] means ((p
+* (i,$1))
in (
dom g) iff (p
+* (i,$1))
in (
dom h)) & ((p
+* (i,$1))
in (
dom g) implies (g
. (p
+* (i,$1)))
= (h
. (p
+* (i,$1))));
set k = (p
/. i);
A7: p
= (p
+* (i,k)) by
FUNCT_7: 38;
A8: (
len p)
= n by
CARD_1:def 7;
then
A9: i
in (
dom p) by
A1,
A2,
FINSEQ_3: 25;
A10: for m be
Nat st
p[m] holds
p[(m
+ 1)]
proof
let m be
Nat such that
A11: (p
+* (i,m))
in (
dom g) iff (p
+* (i,m))
in (
dom h) and
A12: (p
+* (i,m))
in (
dom g) implies (g
. (p
+* (i,m)))
= (h
. (p
+* (i,m)));
(p
+* (i,(m
+ 1)))
in (
dom g) iff (p
+* (i,m))
in (
dom g) & ((p
+* (i,m))
^
<*(g
. (p
+* (i,m)))*>)
in (
dom f2) by
A4,
A5,
A8;
hence (p
+* (i,(m
+ 1)))
in (
dom g) iff (p
+* (i,(m
+ 1)))
in (
dom h) by
A9,
A11,
A12,
Lm6;
A13: (p
+* (i,(m
+ 1)))
in (
dom h) iff (p
+* (i,m))
in (
dom h) & ((p
+* (i,m))
^
<*(h
. (p
+* (i,m)))*>)
in (
dom f2) by
A9,
Lm6;
assume
A14: (p
+* (i,(m
+ 1)))
in (
dom g);
then (g
. (p
+* (i,(m
+ 1))))
= (f2
. ((p
+* (i,m))
^
<*(g
. (p
+* (i,m)))*>)) by
A4,
A5,
A8;
hence thesis by
A4,
A5,
A8,
A9,
A11,
A12,
A13,
A14,
Lm6;
end;
A15: (p
+* (i,
0 ))
in (
dom h) iff (
Del (p,i))
in (
dom f1) by
A9,
Lm6;
then (p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i))) & (h
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i))) by
A4,
A5,
A8,
A9,
Lm6;
then
A16:
p[
0 ] by
A4,
A5,
A8,
A15;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A16,
A10);
hence (p
in (
dom g) iff p
in (
dom h)) & (p
in (
dom g) implies (g
. p)
= (h
. p)) by
A7;
end;
A17: (
dom h)
c= (n
-tuples_on
NAT ) by
Th55;
then
A18: (
dom g)
= (
dom h) by
A3,
A4,
A6;
for x be
object st x
in (
dom h) holds (g
. x)
= (h
. x) by
A17,
A6;
hence thesis by
A18;
end;
begin
definition
let X be
set;
::
COMPUT_1:def12
attr X is
composition_closed means for f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
FinSequence of (
HFuncs
NAT ) st f
in X & (
arity f)
= (
len F) & (
rng F)
c= X holds (f
*
<:F:>)
in X;
::
COMPUT_1:def13
attr X is
primitive-recursion_closed means for g,f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st g
is_primitive-recursively_expressed_by (f1,f2,i) & f1
in X & f2
in X holds g
in X;
end
definition
let X be
set;
::
COMPUT_1:def14
attr X is
primitive-recursively_closed means
:
Def14: (
0
const
0 )
in X & (1
succ 1)
in X & (for n,i be
Element of
NAT st 1
<= i & i
<= n holds (n
proj i)
in X) & X is
composition_closed & X is
primitive-recursion_closed;
end
theorem ::
COMPUT_1:66
Th65: (
HFuncs
NAT ) is
primitive-recursively_closed
proof
set X = (
HFuncs
NAT );
thus (
0
const
0 )
in X & (1
succ 1)
in X & for n,i be
Element of
NAT st 1
<= i & i
<= n holds (n
proj i)
in X by
Th30,
Th32,
Th34;
thus for f be
Element of (
HFuncs
NAT ) holds for F be
with_the_same_arity
FinSequence of (
HFuncs
NAT ) st f
in X & (
arity f)
= (
len F) & (
rng F)
c= X holds (f
*
<:F:>)
in X by
Th41;
let g be
Element of (
HFuncs
NAT );
thus thesis;
end;
registration
cluster
primitive-recursively_closed non
empty for
Subset of (
HFuncs
NAT );
existence
proof
(
HFuncs
NAT )
c= (
HFuncs
NAT );
then
reconsider X = (
HFuncs
NAT ) as non
empty
Subset of (
HFuncs
NAT );
take X;
thus thesis by
Th65;
end;
end
reserve P for
primitive-recursively_closed non
empty
Subset of (
HFuncs
NAT );
Lm7: for X be non
empty
set, n,i be
Element of
NAT st 1
<= i & i
<= n holds for x be
Element of X holds for p be
Element of (n
-tuples_on X) holds (p
+* (i,x))
in (n
-tuples_on X);
theorem ::
COMPUT_1:67
Th66: for g be
Element of (
HFuncs
NAT ) st e1
=
{} & g
is_primitive-recursively_expressed_by (e1,e2,i) holds g
=
{}
proof
set f1 = e1, f2 = e2;
let g be
Element of (
HFuncs
NAT );
assume
A1: f1
=
{} ;
assume g
is_primitive-recursively_expressed_by (f1,f2,i);
then
consider n be
Element of
NAT such that
A2: (
dom g)
c= (n
-tuples_on
NAT ) and i
>= 1 and i
<= n and ((
arity f1)
+ 1)
= n and (n
+ 1)
= (
arity f2) and
A3: for p be
FinSequence of
NAT st (
len p)
= n holds ((p
+* (i,
0 ))
in (
dom g) iff (
Del (p,i))
in (
dom f1)) & ((p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i)))) & for n be
Nat holds ((p
+* (i,(n
+ 1)))
in (
dom g) iff (p
+* (i,n))
in (
dom g) & ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)
in (
dom f2)) & ((p
+* (i,(n
+ 1)))
in (
dom g) implies (g
. (p
+* (i,(n
+ 1))))
= (f2
. ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)));
A4:
now
let y be
Element of (n
-tuples_on
NAT );
defpred
p[
Nat] means not (y
+* (i,$1))
in (
dom g);
A5: (
len y)
= n by
CARD_1:def 7;
then
A6: for k be
Nat st
p[k] holds
p[(k
+ 1)] by
A3;
A7:
p[
0 ] by
A1,
A3,
A5;
thus for k be
Nat holds
p[k] from
NAT_1:sch 2(
A7,
A6);
end;
assume g
<>
{} ;
then
consider x be
object such that
A8: x
in (
dom g) by
XBOOLE_0:def 1;
reconsider x as
Element of (n
-tuples_on
NAT ) by
A2,
A8;
set xi = (x
. i);
x
= (x
+* (i,xi)) by
FUNCT_7: 35;
hence contradiction by
A4,
A8;
end;
theorem ::
COMPUT_1:68
Th67: for g be
Element of (
HFuncs
NAT ), f1,f2 be
quasi_total
Element of (
HFuncs
NAT ), i be
Element of
NAT st g
is_primitive-recursively_expressed_by (f1,f2,i) holds g is
quasi_total & (f1 is non
empty implies g is non
empty)
proof
let g be
Element of (
HFuncs
NAT ), f1,f2 be
quasi_total
Element of (
HFuncs
NAT ), i be
Element of
NAT ;
assume
A1: g
is_primitive-recursively_expressed_by (f1,f2,i);
then
consider n be
Element of
NAT such that
A2: (
dom g)
c= (n
-tuples_on
NAT ) and
A3: i
>= 1 and
A4: i
<= n and
A5: ((
arity f1)
+ 1)
= n and
A6: (n
+ 1)
= (
arity f2) and
A7: for p be
FinSequence of
NAT st (
len p)
= n holds ((p
+* (i,
0 ))
in (
dom g) iff (
Del (p,i))
in (
dom f1)) & ((p
+* (i,
0 ))
in (
dom g) implies (g
. (p
+* (i,
0 )))
= (f1
. (
Del (p,i)))) & for n be
Nat holds ((p
+* (i,(n
+ 1)))
in (
dom g) iff (p
+* (i,n))
in (
dom g) & ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)
in (
dom f2)) & ((p
+* (i,(n
+ 1)))
in (
dom g) implies (g
. (p
+* (i,(n
+ 1))))
= (f2
. ((p
+* (i,n))
^
<*(g
. (p
+* (i,n)))*>)));
reconsider f29 = f2 as non
empty
quasi_total
Element of (
HFuncs
NAT ) by
A6,
Th17;
per cases ;
suppose f1 is
empty;
hence thesis by
A1,
Th66;
end;
suppose f1 is non
empty;
then
A8: (
dom f1)
= ((
arity f1)
-tuples_on
NAT ) by
Th21;
A9: g is
quasi_total
proof
let x,y be
FinSequence of
NAT such that
A10: (
len x)
= (
len y) and
A11: x
in (
dom g);
defpred
p[
Nat] means (y
+* (i,$1))
in (
dom g);
A12: (
len x)
= n by
A2,
A11,
CARD_1:def 7;
A13:
now
let k be
Nat such that
A14:
p[k];
A15: (
dom f29)
= ((
arity f2)
-tuples_on
NAT ) by
Th21;
reconsider kk = k as
Element of
NAT by
ORDINAL1:def 12;
(
len ((y
+* (i,k))
^
<*(g
. (y
+* (i,k)))*>))
= ((
len (y
+* (i,k)))
+ (
len
<*(g
. (y
+* (i,k)))*>)) by
FINSEQ_1: 22
.= (n
+ (
len
<*(g
. (y
+* (i,k)))*>)) by
A10,
A12,
FUNCT_7: 97
.= (n
+ 1) by
FINSEQ_1: 39;
then ((y
+* (i,kk))
^
<*(g
. (y
+* (i,kk)))*>) is
Element of (
dom f2) by
A6,
A15,
FINSEQ_2: 92;
then ((y
+* (i,k))
^
<*(g
. (y
+* (i,k)))*>)
in (
dom f29);
hence
p[(k
+ 1)] by
A7,
A10,
A12,
A14;
end;
y is
Element of ((
len y)
-tuples_on
NAT ) by
FINSEQ_2: 92;
then (
Del (y,i))
in ((
arity f1)
-tuples_on
NAT ) by
A3,
A4,
A5,
A10,
A12,
Th9;
then
A16:
p[
0 ] by
A7,
A8,
A10,
A12;
for k be
Nat holds
p[k] from
NAT_1:sch 2(
A16,
A13);
then
A17: (y
+* (i,(y
/. i)))
in (
dom g);
i
in (
dom y) by
A3,
A4,
A10,
A12,
FINSEQ_3: 25;
then (y
. i)
= (y
/. i) by
PARTFUN1:def 6;
hence y
in (
dom g) by
A17,
FUNCT_7: 35;
end;
consider pp be
object such that
A18: pp
in (n
-tuples_on
NAT ) by
XBOOLE_0:def 1;
pp is
Element of (n
-tuples_on
NAT ) by
A18;
then
reconsider p = pp as
FinSequence of
NAT ;
A19: (
len p)
= n by
A18,
CARD_1:def 7;
(
Del (p,i))
in ((
arity f1)
-tuples_on
NAT ) by
A3,
A4,
A5,
A18,
Th9;
hence thesis by
A7,
A19,
A8,
A9;
end;
end;
theorem ::
COMPUT_1:69
Th68: (n
const c)
in P
proof
defpred
p[
Nat] means (
0
const $1)
in P;
defpred
r[
Nat] means for c be
Element of
NAT holds ($1
const c)
in P;
A1: P is
composition_closed by
Def14;
A2: for i be
Nat st
p[i] holds
p[(i
+ 1)]
proof
reconsider 1succ1 = (1
succ 1) as
quasi_total
Element of (
HFuncs
NAT ) by
Th28;
let i be
Nat;
A3: (1
succ 1)
in P by
Def14;
A4: (
<*>
NAT ) is
Element of (
0
-tuples_on
NAT ) by
FINSEQ_2: 131;
then
A5: ((
0
const i)
.
{} )
= i;
reconsider 0consti = (
0
const i) as
Element of (
HFuncs
NAT ) by
Th27;
set F =
<*(
0
const i)*>;
<*0consti*> is
FinSequence of (
HFuncs
NAT );
then
reconsider F as
with_the_same_arity
FinSequence of (
HFuncs
NAT );
assume (
0
const i)
in P;
then
A6:
{(
0
const i)}
c= P by
ZFMISC_1: 31;
A7: (
arity (1
succ 1))
= 1 by
Th33
.= (
len F) by
FINSEQ_1: 39;
A8: (
rng F)
=
{(
0
const i)} by
FINSEQ_1: 39;
reconsider i1 = i as
Element of
NAT by
ORDINAL1:def 12;
now
let h be
Element of (
HFuncs
NAT );
assume h
in (
rng F);
then h
= (
0
const i1) by
A8,
TARSKI:def 1;
hence h is
quasi_total by
Th28;
end;
then
reconsider g = (1succ1
*
<:F:>) as
quasi_total
Element of (
HFuncs
NAT ) by
A7,
Th45;
A9: (
arity (
0
const (i
+ 1)))
=
0 by
Th31;
A10: ((
0
const (i
+ 1))
.
{} )
= (i
+ 1) by
A4;
A11: (
dom (1
succ 1))
= (1
-tuples_on
NAT ) by
Def7;
A12: (
arity (
0
const i1))
=
0 by
Th31;
(
dom (
0
const i1))
= (
0
-tuples_on
NAT );
then
A14: (
<:F:>
.
{} )
=
<*i*> by
A4,
A5,
FINSEQ_3: 141;
reconsider ii =
<*i1*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
A15: (
dom
<:
<*(
0
const i)*>:>)
= (
dom (
0
const i)) by
FINSEQ_3: 141;
then (g
.
{} )
= ((1
succ 1)
. (
<:F:>
.
{} )) by
A4,
FUNCT_1: 13;
then
A16: (g
.
{} )
= ((ii
/. 1)
+ 1) by
A14,
Def7
.= (i1
+ 1) by
FINSEQ_4: 16;
(
dom (
0
const i))
= (
0
-tuples_on
NAT );
then (
<:
<*(
0
const i)*>:>
.
{} )
= ii by
A4,
A5,
FINSEQ_3: 141;
then
A18:
{}
in (
dom g) by
A4,
A15,
A11,
FUNCT_1: 11;
(
0
const i)
in (
rng F) by
A8,
TARSKI:def 1;
then (
arity F)
=
0 by
A12,
Def4;
then (
arity g)
=
0 by
A18,
Th43,
RELAT_1: 38;
then (
0
const (i
+ 1))
= ((1
succ 1)
*
<:
<*(
0
const i)*>:>) by
A9,
A10,
A18,
A16,
Th47,
RELAT_1: 38;
hence thesis by
A1,
A6,
A8,
A3,
A7;
end;
A19: P is
primitive-recursion_closed by
Def14;
A20:
now
let n be
Nat such that
A21:
r[n];
thus
r[(n
+ 1)]
proof
let i be
Element of
NAT ;
reconsider nn = n as
Element of
NAT by
ORDINAL1:def 12;
set g = ((nn
+ 1)
const i), f1 = (nn
const i), j = (n
+ 1), f2 = ((nn
+ 2)
proj (nn
+ 2));
A23: (n
+ (1
+ 1))
= (j
+ 1);
then 1
<= (n
+ 2) by
NAT_1: 11;
then
A24: f2
in P by
Def14;
A25: (
arity f2)
= (n
+ 2) by
Th36;
A26: (
dom f2)
= ((n
+ 2)
-tuples_on
NAT ) by
Th35;
A27: (
arity f1)
= n by
Th31;
A29: (
arity g)
= j by
Th31;
A30: g
is_primitive-recursively_expressed_by (f1,f2,(n
+ 1))
proof
take m = (
arity g);
thus (
dom g)
c= (m
-tuples_on
NAT ) by
Th20;
thus j
>= 1 & j
<= m by
Th31,
NAT_1: 11;
thus ((
arity f1)
+ 1)
= m & (m
+ 1)
= (
arity f2) by
A27,
A25,
A23,
Th31;
let p be
FinSequence of
NAT ;
assume (
len p)
= m;
then
A31: p is
Element of (j
-tuples_on
NAT ) by
A29,
FINSEQ_2: 92;
A32: j
>= 1 by
NAT_1: 11;
hence (p
+* (j,
0 ))
in (
dom g) implies (
Del (p,j))
in (
dom f1) by
A31,
Th9;
thus (
Del (p,j))
in (
dom f1) implies (p
+* (j,
0 ))
in (
dom g) by
A31,
A32,
Lm7;
(f1
. (
Del (p,j)))
= i by
A31,
A32,
Th9,
FUNCOP_1: 7;
hence (p
+* (j,
0 ))
in (
dom g) implies (g
. (p
+* (j,
0 )))
= (f1
. (
Del (p,j))) by
FUNCOP_1: 7;
let m be
Nat;
reconsider mm = m as
Element of
NAT by
ORDINAL1:def 12;
A33: (p
+* (j,mm))
in (j
-tuples_on
NAT ) by
A31,
A32,
Lm7;
then
A34: ((p
+* (j,mm))
^
<*i*>) is
Tuple of (n
+ 2),
NAT by
A23;
then
A35: ((p
+* (j,m))
^
<*i*>) is
Element of ((n
+ 2)
-tuples_on
NAT ) by
FINSEQ_2: 131;
hereby
hereby
assume (p
+* (j,(m
+ 1)))
in (
dom g);
(p
+* (j,mm))
in (
dom g) by
A31,
A32,
Lm7;
hence (p
+* (j,m))
in (
dom g);
(g
. (p
+* (j,mm)))
= i by
A31,
A32,
Lm7,
FUNCOP_1: 7;
hence ((p
+* (j,m))
^
<*(g
. (p
+* (j,m)))*>)
in (
dom f2) by
A26,
A34,
FINSEQ_2: 131;
end;
thus (p
+* (j,m))
in (
dom g) & ((p
+* (j,m))
^
<*(g
. (p
+* (j,m)))*>)
in (
dom f2) implies (p
+* (j,(m
+ 1)))
in (
dom g) by
A31,
A32,
Lm7;
end;
assume (p
+* (j,(m
+ 1)))
in (
dom g);
(
len (p
+* (j,m)))
= j by
A33,
CARD_1:def 7;
then
A36: (((p
+* (j,m))
^
<*i*>)
. (j
+ 1))
= i by
FINSEQ_1: 42;
thus (g
. (p
+* (j,(m
+ 1))))
= i by
A31,
A32,
Lm7,
FUNCOP_1: 7
.= (f2
. ((p
+* (j,m))
^
<*i*>)) by
A36,
A35,
Th37
.= (f2
. ((p
+* (j,mm))
^
<*(g
. (p
+* (j,mm)))*>)) by
A31,
A32,
Lm7,
FUNCOP_1: 7
.= (f2
. ((p
+* (j,m))
^
<*(g
. (p
+* (j,m)))*>));
end;
A37: f1
in P by
A21;
((n
+ 1)
const i) is
Element of (
HFuncs
NAT ) by
Th27;
hence thesis by
A19,
A30,
A37,
A24;
end;
end;
A38:
p[
0 ] by
Def14;
for i be
Nat holds
p[i] from
NAT_1:sch 2(
A38,
A2);
then
A39:
r[
0 ];
for n be
Nat holds
r[n] from
NAT_1:sch 2(
A39,
A20);
hence thesis;
end;
theorem ::
COMPUT_1:70
Th69: 1
<= i & i
<= n implies (n
succ i)
in P
proof
A1: (1
succ 1)
in P by
Def14;
A2: (
arity (1
succ 1))
= 1 by
Th33
.= (
len
<*(n
proj i)*>) by
FINSEQ_1: 39;
reconsider nproji = (n
proj i) as
Element of (
HFuncs
NAT ) by
Th27;
assume that
A3: 1
<= i and
A4: i
<= n;
A5:
<*nproji*> is
with_the_same_arity
FinSequence of (
HFuncs
NAT );
now
(
rng (n
proj i))
=
NAT by
A3,
A4,
Th35;
then
A6: (
rng
<:
<*(n
proj i)*>:>)
= (1
-tuples_on
NAT ) by
Th8;
thus (
dom (n
succ i))
= (n
-tuples_on
NAT ) by
Def7;
A7: (
dom (n
proj i))
= (n
-tuples_on
NAT ) by
Th35;
then
A8: (
dom
<:
<*(n
proj i)*>:>)
= (n
-tuples_on
NAT ) by
FINSEQ_3: 141;
(
dom (1
succ 1))
= (1
-tuples_on
NAT ) by
Def7;
hence (
dom ((1
succ 1)
*
<:
<*(n
proj i)*>:>))
= (n
-tuples_on
NAT ) by
A8,
A6,
RELAT_1: 27;
let x be
object;
assume x
in (n
-tuples_on
NAT );
then
reconsider x9 = x as
Element of (n
-tuples_on
NAT );
set xi = (x9
. i);
(
len x9)
= n by
CARD_1:def 7;
then
A9: i
in (
dom x9) by
A3,
A4,
FINSEQ_3: 25;
A10: ((n
succ i)
. x)
= ((x9
/. i)
+ 1) by
Def7
.= (xi
+ 1) by
A9,
PARTFUN1:def 6;
reconsider ii =
<*xi*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
(((1
succ 1)
*
<:
<*(n
proj i)*>:>)
. x9)
= ((1
succ 1)
. (
<:
<*(n
proj i)*>:>
. x9)) by
A8,
FUNCT_1: 13
.= ((1
succ 1)
.
<*((n
proj i)
. x9)*>) by
A7,
FINSEQ_3: 141
.= ((1
succ 1)
.
<*(x9
. i)*>) by
Th37
.= ((ii
/. 1)
+ 1) by
Def7
.= (xi
+ 1) by
FINSEQ_4: 16;
hence ((n
succ i)
. x)
= (((1
succ 1)
*
<:
<*(n
proj i)*>:>)
. x) by
A10;
end;
then
A11: (n
succ i)
= ((1
succ 1)
*
<:
<*(n
proj i)*>:>);
A12: (
rng
<*(n
proj i)*>)
c= P
proof
let x be
object;
assume x
in (
rng
<*(n
proj i)*>);
then x
in
{(n
proj i)} by
FINSEQ_1: 39;
then x
= (n
proj i) by
TARSKI:def 1;
hence thesis by
A3,
A4,
Def14;
end;
P is
composition_closed by
Def14;
hence thesis by
A11,
A1,
A2,
A12,
A5;
end;
theorem ::
COMPUT_1:71
Th70:
{}
in P
proof
reconsider F =
{} as
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) by
FINSEQ_1: 49;
set f = (
0
const
0 );
A1: (
rng
{} )
c= P;
A2: (
arity f)
=
0 by
Th31;
A3: P is
composition_closed by
Def14;
f
in P by
Th68;
then (f
*
<:F:>)
in P by
A2,
A1,
A3,
CARD_1: 27;
hence thesis by
FUNCT_6: 40;
end;
theorem ::
COMPUT_1:72
Th71: for f be
Element of P, F be
with_the_same_arity
FinSequence of P st (
arity f)
= (
len F) holds (f
*
<:F:>)
in P
proof
let f be
Element of P, F be
with_the_same_arity
FinSequence of P;
assume
A1: (
arity f)
= (
len F);
A2: (
rng F)
c= P by
FINSEQ_1:def 4;
per cases ;
suppose f is
empty;
then (f
*
<:F:>)
=
{} ;
hence thesis by
Th70;
end;
suppose f is non
empty;
then
reconsider f9 = f as non
empty
Element of (
HFuncs
NAT );
A3: (P
* )
c= ((
HFuncs
NAT )
* ) by
FINSEQ_1: 62;
F
in (P
* ) by
FINSEQ_1:def 11;
then
reconsider F9 = F as
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) by
A3;
P is
composition_closed by
Def14;
then (f9
*
<:F9:>)
in P by
A1,
A2;
hence thesis;
end;
end;
theorem ::
COMPUT_1:73
Th72: for f1,f2 be
Element of P st ((
arity f1)
+ 2)
= (
arity f2) holds for i be
Element of
NAT st 1
<= i & i
<= ((
arity f1)
+ 1) holds (
primrec (f1,f2,i))
in P
proof
let f1,f2 be
Element of P;
assume
A1: ((
arity f1)
+ 2)
= (
arity f2);
let i be
Element of
NAT ;
assume that
A2: 1
<= i and
A3: i
<= ((
arity f1)
+ 1);
A4: P is
primitive-recursion_closed by
Def14;
per cases ;
suppose f1 is
empty;
then (
primrec (f1,f2,i)) is
empty by
Th54;
hence thesis by
Th70;
end;
suppose f1 is non
empty;
then (
primrec (f1,f2,i))
is_primitive-recursively_expressed_by (f1,f2,i) by
A1,
A2,
A3,
Th17,
Th63;
hence thesis by
A4;
end;
end;
definition
::
COMPUT_1:def15
func
PrimRec ->
Subset of (
HFuncs
NAT ) equals (
meet { R where R be
Subset of (
HFuncs
NAT ) : R is
primitive-recursively_closed });
coherence
proof
set S = { R where R be
Subset of (
HFuncs
NAT ) : R is
primitive-recursively_closed };
set T = (
meet S);
A1:
{(
HFuncs
NAT )}
c= (
bool (
HFuncs
NAT )) by
ZFMISC_1: 68;
(
HFuncs
NAT )
in
{(
HFuncs
NAT )} by
TARSKI:def 1;
then
A2: (
HFuncs
NAT )
in S by
A1,
Th65;
T
c= (
HFuncs
NAT ) by
A2,
SETFAM_1:def 1;
hence thesis;
end;
end
theorem ::
COMPUT_1:74
Th73: for X be
Subset of (
HFuncs
NAT ) st X is
primitive-recursively_closed holds
PrimRec
c= X
proof
let X be
Subset of (
HFuncs
NAT );
set S = { R where R be
Subset of (
HFuncs
NAT ) : R is
primitive-recursively_closed };
assume X is
primitive-recursively_closed;
then
A1: X
in S;
let x be
object;
assume x
in
PrimRec ;
hence thesis by
A1,
SETFAM_1:def 1;
end;
registration
cluster
PrimRec -> non
empty
primitive-recursively_closed;
coherence
proof
set S = { R where R be
Subset of (
HFuncs
NAT ) : R is
primitive-recursively_closed };
A1:
{(
HFuncs
NAT )}
c= (
bool (
HFuncs
NAT )) by
ZFMISC_1: 68;
(
HFuncs
NAT )
in
{(
HFuncs
NAT )} by
TARSKI:def 1;
then
A2: (
HFuncs
NAT )
in S by
A1,
Th65;
A3:
now
let Y be
set;
assume Y
in S;
then ex R be
Subset of (
HFuncs
NAT ) st R
= Y & R is
primitive-recursively_closed;
hence (
0
const
0 )
in Y;
end;
hence
PrimRec is non
empty by
A2,
SETFAM_1:def 1;
thus
PrimRec is
primitive-recursively_closed
proof
thus (
0
const
0 )
in
PrimRec by
A2,
A3,
SETFAM_1:def 1;
now
let Y be
set;
assume Y
in S;
then ex R be
Subset of (
HFuncs
NAT ) st R
= Y & R is
primitive-recursively_closed;
hence (1
succ 1)
in Y;
end;
hence (1
succ 1)
in
PrimRec by
A2,
SETFAM_1:def 1;
hereby
let n,i be
Element of
NAT ;
assume that
A4: 1
<= i and
A5: i
<= n;
now
let Y be
set;
assume Y
in S;
then ex R be
Subset of (
HFuncs
NAT ) st R
= Y & R is
primitive-recursively_closed;
hence (n
proj i)
in Y by
A4,
A5;
end;
hence (n
proj i)
in
PrimRec by
A2,
SETFAM_1:def 1;
end;
hereby
let f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
FinSequence of (
HFuncs
NAT ) such that
A6: f
in
PrimRec and
A7: (
arity f)
= (
len F) and
A8: (
rng F)
c=
PrimRec ;
now
let Y be
set;
assume
A9: Y
in S;
then
consider R be
Subset of (
HFuncs
NAT ) such that
A10: R
= Y and
A11: R is
primitive-recursively_closed;
A12: R is
composition_closed by
A11;
A13:
PrimRec
c= R by
A9,
A10,
SETFAM_1: 3;
then (
rng F)
c= R by
A8;
hence (f
*
<:F:>)
in Y by
A6,
A7,
A10,
A12,
A13;
end;
hence (f
*
<:F:>)
in
PrimRec by
A2,
SETFAM_1:def 1;
end;
hereby
let g,f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT such that
A14: g
is_primitive-recursively_expressed_by (f1,f2,i) and
A15: f1
in
PrimRec and
A16: f2
in
PrimRec ;
now
let Y be
set;
assume
A17: Y
in S;
then
consider R be
Subset of (
HFuncs
NAT ) such that
A18: R
= Y and
A19: R is
primitive-recursively_closed;
A20: f2
in R by
A16,
A17,
A18,
SETFAM_1:def 1;
A21: R is
primitive-recursion_closed by
A19;
f1
in R by
A15,
A17,
A18,
SETFAM_1:def 1;
hence g
in Y by
A14,
A18,
A21,
A20;
end;
hence g
in
PrimRec by
A2,
SETFAM_1:def 1;
end;
end;
end;
end
registration
cluster ->
homogeneous for
Element of
PrimRec ;
coherence ;
end
definition
let x be
set;
::
COMPUT_1:def16
attr x is
primitive-recursive means
:
Def16: x
in
PrimRec ;
end
registration
cluster
primitive-recursive ->
Relation-like
Function-like for
set;
coherence ;
end
registration
cluster
primitive-recursive ->
homogeneous
to-naturals(
NAT
* )
-defined for
Relation;
coherence ;
end
registration
cluster ->
primitive-recursive for
Element of
PrimRec ;
coherence ;
end
registration
cluster
primitive-recursive for
Function;
existence
proof
set x = the
Element of
PrimRec ;
take x;
thus thesis;
end;
cluster
primitive-recursive for
Element of (
HFuncs
NAT );
existence
proof
set x = the
Element of
PrimRec ;
take x;
thus thesis;
end;
end
definition
::
COMPUT_1:def17
func
initial-funcs ->
Subset of (
HFuncs
NAT ) equals (
{(
0
const
0 ), (1
succ 1)}
\/ { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n });
coherence
proof
set Q1 =
{(
0
const
0 ), (1
succ 1)}, Q2 = { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n };
A1: Q2
c= (
HFuncs
NAT )
proof
let x be
object;
assume x
in Q2;
then ex n,i be
Element of
NAT st x
= (n
proj i) & 1
<= i & i
<= n;
hence thesis by
Th34;
end;
Q1
c= (
HFuncs
NAT )
proof
let x be
object;
assume x
in Q1;
then x
= (
0
const
0 ) or x
= (1
succ 1) by
TARSKI:def 2;
hence thesis by
Th30,
Th32;
end;
hence thesis by
A1,
XBOOLE_1: 8;
end;
let Q be
Subset of (
HFuncs
NAT );
::
COMPUT_1:def18
func
PR-closure Q ->
Subset of (
HFuncs
NAT ) equals (Q
\/ { g where g be
Element of (
HFuncs
NAT ) : ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in Q & f2
in Q & g
is_primitive-recursively_expressed_by (f1,f2,i) });
coherence
proof
set Q1 = { g where g be
Element of (
HFuncs
NAT ) : ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in Q & f2
in Q & g
is_primitive-recursively_expressed_by (f1,f2,i) };
Q1
c= (
HFuncs
NAT )
proof
let x be
object;
assume x
in Q1;
then ex g be
Element of (
HFuncs
NAT ) st x
= g & ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in Q & f2
in Q & g
is_primitive-recursively_expressed_by (f1,f2,i);
hence thesis;
end;
hence thesis by
XBOOLE_1: 8;
end;
::
COMPUT_1:def19
func
composition-closure Q ->
Subset of (
HFuncs
NAT ) equals (Q
\/ { (f
*
<:F:>) where f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) : f
in Q & (
arity f)
= (
len F) & (
rng F)
c= Q });
coherence
proof
set Q1 = { (f
*
<:F:>) where f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) : f
in Q & (
arity f)
= (
len F) & (
rng F)
c= Q };
Q1
c= (
HFuncs
NAT )
proof
let x be
object;
assume x
in Q1;
then ex f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) st x
= (f
*
<:F:>) & f
in Q & (
arity f)
= (
len F) & (
rng F)
c= Q;
hence thesis by
Th41;
end;
hence thesis by
XBOOLE_1: 8;
end;
end
definition
::
COMPUT_1:def20
func
PrimRec-Approximation ->
sequence of (
bool (
HFuncs
NAT )) means
:
Def20: (it
.
0 )
=
initial-funcs & for m be
Nat holds (it
. (m
+ 1))
= ((
PR-closure (it
. m))
\/ (
composition-closure (it
. m)));
existence
proof
deffunc
f(
set,
Subset of (
HFuncs
NAT )) = ((
PR-closure $2)
\/ (
composition-closure $2));
consider A be
sequence of (
bool (
HFuncs
NAT )) such that
A1: (A
.
0 )
=
initial-funcs and
A2: for m be
Nat holds (A
. (m
+ 1))
=
f(m,.) from
NAT_1:sch 12;
take A;
thus (A
.
0 )
=
initial-funcs by
A1;
let m be
Nat;
thus thesis by
A2;
end;
uniqueness
proof
deffunc
f(
set,
Subset of (
HFuncs
NAT )) = ((
PR-closure $2)
\/ (
composition-closure $2));
let it1,it2 be
sequence of (
bool (
HFuncs
NAT )) such that
A3: (it1
.
0 )
=
initial-funcs and
A4: for m be
Nat holds (it1
. (m
+ 1))
= ((
PR-closure (it1
. m))
\/ (
composition-closure (it1
. m))) and
A5: (it2
.
0 )
=
initial-funcs and
A6: for m be
Nat holds (it2
. (m
+ 1))
= ((
PR-closure (it2
. m))
\/ (
composition-closure (it2
. m)));
A7: for m be
Nat holds (it1
. (m
+ 1))
=
f(m,.) by
A4;
A8: for m be
Nat holds (it2
. (m
+ 1))
=
f(m,.) by
A6;
A9: (it2
.
0 )
=
initial-funcs by
A5;
A10: (it1
.
0 )
=
initial-funcs by
A3;
thus it1
= it2 from
NAT_1:sch 16(
A10,
A7,
A9,
A8);
end;
end
theorem ::
COMPUT_1:75
Th74: m
<= n implies (
PrimRec-Approximation
. m)
c= (
PrimRec-Approximation
. n)
proof
set prd =
PrimRec-Approximation ;
defpred
p[
Nat] means m
<= $1 implies (prd
. m)
c= (prd
. $1);
A1: for n be
Nat st
p[n] holds
p[(n
+ 1)]
proof
let n be
Nat such that
A2:
p[n] and
A3: m
<= (n
+ 1);
(prd
. (n
+ 1))
= ((
PR-closure (prd
. n))
\/ (
composition-closure (prd
. n))) by
Def20;
then
A4: (
PR-closure (prd
. n))
c= (prd
. (n
+ 1)) by
XBOOLE_1: 7;
(prd
. n)
c= (
PR-closure (prd
. n)) by
XBOOLE_1: 7;
then
A5: (prd
. n)
c= (prd
. (n
+ 1)) by
A4;
per cases by
A3,
XXREAL_0: 1;
suppose m
< (n
+ 1);
hence thesis by
A2,
A5,
NAT_1: 13;
end;
suppose m
= (n
+ 1);
hence thesis;
end;
end;
A6:
p[
0 ];
for n be
Nat holds
p[n] from
NAT_1:sch 2(
A6,
A1);
hence thesis;
end;
theorem ::
COMPUT_1:76
Th75: (
Union
PrimRec-Approximation ) is
primitive-recursively_closed
proof
set PROJ = { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n };
set prd =
PrimRec-Approximation ;
set UP = (
Union prd);
A1: (
dom prd)
=
NAT by
FUNCT_2:def 1;
A2: (prd
.
0 )
= (
{(
0
const
0 ), (1
succ 1)}
\/ PROJ) by
Def20;
(
0
const
0 )
in
{(
0
const
0 ), (1
succ 1)} by
TARSKI:def 2;
then (
0
const
0 )
in (prd
.
0 ) by
A2,
XBOOLE_0:def 3;
hence (
0
const
0 )
in UP by
A1,
CARD_5: 2;
(1
succ 1)
in
{(
0
const
0 ), (1
succ 1)} by
TARSKI:def 2;
then (1
succ 1)
in (prd
.
0 ) by
A2,
XBOOLE_0:def 3;
hence (1
succ 1)
in UP by
A1,
CARD_5: 2;
hereby
let n,i be
Element of
NAT ;
assume that
A3: 1
<= i and
A4: i
<= n;
(n
proj i)
in PROJ by
A3,
A4;
then (n
proj i)
in (prd
.
0 ) by
A2,
XBOOLE_0:def 3;
hence (n
proj i)
in UP by
A1,
CARD_5: 2;
end;
hereby
deffunc
mcocl(
Element of
NAT ) = { (f
*
<:F:>) where f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) : f
in (prd
. $1) & (
arity f)
= (
len F) & (
rng F)
c= (prd
. $1) };
let f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
FinSequence of (
HFuncs
NAT ) such that
A5: f
in UP and
A6: (
arity f)
= (
len F) and
A7: (
rng F)
c= UP;
consider kf be
object such that
A8: kf
in (
dom prd) and
A9: f
in (prd
. kf) by
A5,
CARD_5: 2;
reconsider kf as
Element of
NAT by
A8;
per cases ;
suppose (
arity f)
=
0 ;
then F
=
{} by
A6;
then
A10: (
rng F)
c= (prd
. kf);
F is
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) by
FINSEQ_1:def 11;
then (f
*
<:F:>)
in
mcocl(kf) by
A6,
A9,
A10;
then (f
*
<:F:>)
in ((prd
. kf)
\/
mcocl(kf)) by
XBOOLE_0:def 3;
then (f
*
<:F:>)
in ((
PR-closure (prd
. kf))
\/ (
composition-closure (prd
. kf))) by
XBOOLE_0:def 3;
then (f
*
<:F:>)
in (prd
. (kf
+ 1)) by
Def20;
hence (f
*
<:F:>)
in UP by
A1,
CARD_5: 2;
end;
suppose
A11: (
arity f)
<>
0 ;
defpred
B[
object,
object] means ex k be
Element of
NAT st (F
. $1)
in (prd
. k) & $2
= k;
A12: for x be
object st x
in (
Seg (
len F)) holds ex y be
Element of
NAT st
B[x, y]
proof
let x be
object;
assume x
in (
Seg (
len F));
then x
in (
dom F) by
FINSEQ_1:def 3;
then (F
. x)
in (
rng F) by
FUNCT_1:def 3;
then
consider k be
object such that
A13: k
in (
dom prd) and
A14: (F
. x)
in (prd
. k) by
A7,
CARD_5: 2;
reconsider k as
Element of
NAT by
A13;
take k;
take k1 = k;
thus (F
. x)
in (prd
. k1) by
A14;
thus thesis;
end;
consider fKF be
Function of (
Seg (
len F)),
NAT such that
A15: for x be
object st x
in (
Seg (
len F)) holds
B[x, (fKF
. x)] from
MONOID_1:sch 1(
A12);
set KF = (
rng fKF);
reconsider KF as non
empty
finite
Subset of
NAT by
A6,
A11,
RELAT_1:def 19;
set K = (
max KF);
set k = (
max (kf,K));
reconsider k as
Element of
NAT by
ORDINAL1:def 12;
A16: (
dom fKF)
= (
Seg (
len F)) by
FUNCT_2:def 1;
A17: (
rng F)
c= (prd
. k)
proof
let x be
object;
A18: K
<= k by
XXREAL_0: 25;
assume x
in (
rng F);
then
consider d be
object such that
A19: d
in (
dom F) and
A20: x
= (F
. d) by
FUNCT_1:def 3;
A21: d
in (
Seg (
len F)) by
A19,
FINSEQ_1:def 3;
then
consider m be
Element of
NAT such that
A22: (F
. d)
in (prd
. m) and
A23: (fKF
. d)
= m by
A15;
m
in KF by
A16,
A21,
A23,
FUNCT_1: 3;
then m
<= K by
XXREAL_2:def 8;
then (prd
. m)
c= (prd
. k) by
A18,
Th74,
XXREAL_0: 2;
hence thesis by
A20,
A22;
end;
A24: F is
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) by
FINSEQ_1:def 11;
(prd
. kf)
c= (prd
. k) by
Th74,
XXREAL_0: 25;
then (f
*
<:F:>)
in
mcocl(k) by
A6,
A9,
A17,
A24;
then (f
*
<:F:>)
in ((prd
. k)
\/
mcocl(k)) by
XBOOLE_0:def 3;
then (f
*
<:F:>)
in ((
PR-closure (prd
. k))
\/ (
composition-closure (prd
. k))) by
XBOOLE_0:def 3;
then (f
*
<:F:>)
in (prd
. (k
+ 1)) by
Def20;
hence (f
*
<:F:>)
in UP by
A1,
CARD_5: 2;
end;
end;
deffunc
mprcl(
Element of
NAT ) = { g where g be
Element of (
HFuncs
NAT ) : ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in (prd
. $1) & f2
in (prd
. $1) & g
is_primitive-recursively_expressed_by (f1,f2,i) };
let g,f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT such that
A25: g
is_primitive-recursively_expressed_by (f1,f2,i) and
A26: f1
in UP and
A27: f2
in UP;
consider k2 be
object such that
A28: k2
in (
dom prd) and
A29: f2
in (prd
. k2) by
A27,
CARD_5: 2;
reconsider k2 as
Element of
NAT by
A28;
consider k1 be
object such that
A30: k1
in (
dom prd) and
A31: f1
in (prd
. k1) by
A26,
CARD_5: 2;
reconsider k1 as
Element of
NAT by
A30;
per cases ;
suppose k1
<= k2;
then (prd
. k1)
c= (prd
. k2) by
Th74;
then g
in
mprcl(k2) by
A25,
A31,
A29;
then g
in ((prd
. k2)
\/
mprcl(k2)) by
XBOOLE_0:def 3;
then g
in ((
PR-closure (prd
. k2))
\/ (
composition-closure (prd
. k2))) by
XBOOLE_0:def 3;
then g
in (prd
. (k2
+ 1)) by
Def20;
hence thesis by
A1,
CARD_5: 2;
end;
suppose k2
<= k1;
then (prd
. k2)
c= (prd
. k1) by
Th74;
then g
in
mprcl(k1) by
A25,
A31,
A29;
then g
in ((prd
. k1)
\/
mprcl(k1)) by
XBOOLE_0:def 3;
then g
in ((
PR-closure (prd
. k1))
\/ (
composition-closure (prd
. k1))) by
XBOOLE_0:def 3;
then g
in (prd
. (k1
+ 1)) by
Def20;
hence thesis by
A1,
CARD_5: 2;
end;
end;
theorem ::
COMPUT_1:77
Th76:
PrimRec
= (
Union
PrimRec-Approximation )
proof
set prd =
PrimRec-Approximation ;
defpred
p[
Nat] means (prd
. $1)
c=
PrimRec ;
A1:
now
let m be
Nat such that
A2:
p[m];
thus
p[(m
+ 1)]
proof
set mcocl = { (f
*
<:F:>) where f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) : f
in (prd
. m) & (
arity f)
= (
len F) & (
rng F)
c= (prd
. m) };
set mprcl = { g where g be
Element of (
HFuncs
NAT ) : ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in (prd
. m) & f2
in (prd
. m) & g
is_primitive-recursively_expressed_by (f1,f2,i) };
let x be
object;
A3: (prd
. (m
+ 1))
= ((
PR-closure (prd
. m))
\/ (
composition-closure (prd
. m))) by
Def20;
assume
A4: x
in (prd
. (m
+ 1));
per cases by
A4,
A3,
XBOOLE_0:def 3;
suppose
A5: x
in (
PR-closure (prd
. m));
thus thesis
proof
per cases by
A5,
XBOOLE_0:def 3;
suppose x
in (prd
. m);
hence thesis by
A2;
end;
suppose
A6: x
in mprcl;
A7:
PrimRec is
primitive-recursion_closed by
Def14;
ex g be
Element of (
HFuncs
NAT ) st x
= g & ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in (prd
. m) & f2
in (prd
. m) & g
is_primitive-recursively_expressed_by (f1,f2,i) by
A6;
hence thesis by
A2,
A7;
end;
end;
end;
suppose
A8: x
in (
composition-closure (prd
. m));
thus thesis
proof
per cases by
A8,
XBOOLE_0:def 3;
suppose x
in (prd
. m);
hence thesis by
A2;
end;
suppose
A9: x
in mcocl;
A10:
PrimRec is
composition_closed by
Def14;
consider f be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) such that
A11: x
= (f
*
<:F:>) and
A12: f
in (prd
. m) and
A13: (
arity f)
= (
len F) and
A14: (
rng F)
c= (prd
. m) by
A9;
(
rng F)
c=
PrimRec by
A2,
A14,
XBOOLE_1: 1;
hence thesis by
A2,
A11,
A12,
A13,
A10;
end;
end;
end;
end;
end;
A15:
p[
0 ]
proof
let x be
object;
assume
A16: x
in (prd
.
0 );
(prd
.
0 )
= (
{(
0
const
0 ), (1
succ 1)}
\/ { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n }) by
Def20;
then
A17: x
in
{(
0
const
0 ), (1
succ 1)} or x
in { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n } by
A16,
XBOOLE_0:def 3;
per cases by
A17,
TARSKI:def 2;
suppose x
= (
0
const
0 );
hence thesis by
Def14;
end;
suppose x
= (1
succ 1);
hence thesis by
Def14;
end;
suppose x
in { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n };
then ex n,i be
Element of
NAT st x
= (n
proj i) & 1
<= i & i
<= n;
hence thesis by
Def14;
end;
end;
A18: for k be
Nat holds
p[k] from
NAT_1:sch 2(
A15,
A1);
A19: (
Union prd)
c=
PrimRec
proof
let x be
object;
assume that
A20: x
in (
Union prd) and
A21: not x
in
PrimRec ;
consider X be
set such that
A22: x
in X and
A23: X
in (
rng prd) by
A20,
TARSKI:def 4;
consider m be
object such that
A24: m
in (
dom prd) and
A25: (prd
. m)
= X by
A23,
FUNCT_1:def 3;
reconsider m as
Element of
NAT by
A24;
(prd
. m)
c=
PrimRec by
A18;
hence contradiction by
A21,
A22,
A25;
end;
PrimRec
c= (
Union prd) by
Th73,
Th75;
hence thesis by
A19,
XBOOLE_0:def 10;
end;
theorem ::
COMPUT_1:78
Th77: for f be
Element of (
HFuncs
NAT ) st f
in (
PrimRec-Approximation
. m) holds f is
quasi_total
proof
defpred
p[
Nat] means for f be
Element of (
HFuncs
NAT ) st f
in (
PrimRec-Approximation
. $1) holds f is
quasi_total;
set prd =
PrimRec-Approximation ;
A1: for m be
Nat st
p[m] holds
p[(m
+ 1)]
proof
let m be
Nat;
assume
A2:
p[m];
let f be
Element of (
HFuncs
NAT );
assume f
in (prd
. (m
+ 1));
then
A3: f
in ((
PR-closure (prd
. m))
\/ (
composition-closure (prd
. m))) by
Def20;
per cases by
A3,
XBOOLE_0:def 3;
suppose
A4: f
in (
PR-closure (prd
. m));
thus f is
quasi_total
proof
per cases by
A4,
XBOOLE_0:def 3;
suppose f
in (prd
. m);
hence thesis by
A2;
end;
suppose f
in { g where g be
Element of (
HFuncs
NAT ) : ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in (prd
. m) & f2
in (prd
. m) & g
is_primitive-recursively_expressed_by (f1,f2,i) };
then
consider g be
Element of (
HFuncs
NAT ) such that
A5: f
= g and
A6: ex f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT st f1
in (prd
. m) & f2
in (prd
. m) & g
is_primitive-recursively_expressed_by (f1,f2,i);
consider f1,f2 be
Element of (
HFuncs
NAT ), i be
Element of
NAT such that
A7: f1
in (prd
. m) and
A8: f2
in (prd
. m) and
A9: g
is_primitive-recursively_expressed_by (f1,f2,i) by
A6;
A10: f2 is
quasi_total by
A2,
A8;
f1 is
quasi_total by
A2,
A7;
hence thesis by
A5,
A9,
A10,
Th67;
end;
end;
end;
suppose
A11: f
in (
composition-closure (prd
. m));
thus f is
quasi_total
proof
per cases by
A11,
XBOOLE_0:def 3;
suppose f
in (prd
. m);
hence thesis by
A2;
end;
suppose f
in { (h
*
<:F:>) where h be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) : h
in (prd
. m) & (
arity h)
= (
len F) & (
rng F)
c= (prd
. m) };
then
consider h be
Element of (
HFuncs
NAT ), F be
with_the_same_arity
Element of ((
HFuncs
NAT )
* ) such that
A12: f
= (h
*
<:F:>) and
A13: h
in (prd
. m) and
A14: (
arity h)
= (
len F) and
A15: (
rng F)
c= (prd
. m);
A16: for h be
Element of (
HFuncs
NAT ) st h
in (
rng F) holds h is
quasi_total by
A2,
A15;
h is
quasi_total by
A2,
A13;
hence thesis by
A12,
A14,
A16,
Th45;
end;
end;
end;
end;
A17:
p[
0 ]
proof
let f be
Element of (
HFuncs
NAT );
assume f
in (prd
.
0 );
then f
in
initial-funcs by
Def20;
then
A18: f
in
{(
0
const
0 ), (1
succ 1)} or f
in { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n } by
XBOOLE_0:def 3;
per cases by
A18,
TARSKI:def 2;
suppose f
= (
0
const
0 );
hence thesis by
Th28;
end;
suppose f
= (1
succ 1);
hence thesis by
Th28;
end;
suppose f
in { (n
proj i) where n,i be
Element of
NAT : 1
<= i & i
<= n };
then ex n,i be
Element of
NAT st f
= (n
proj i) & 1
<= i & i
<= n;
hence thesis by
Th28;
end;
end;
for m be
Nat holds
p[m] from
NAT_1:sch 2(
A17,
A1);
hence thesis;
end;
registration
cluster ->
quasi_total
homogeneous for
Element of
PrimRec ;
coherence
proof
set prd =
PrimRec-Approximation ;
let f be
Element of
PrimRec ;
consider X be
set such that
A1: f
in X and
A2: X
in (
rng prd) by
Th76,
TARSKI:def 4;
ex m be
object st m
in (
dom prd) & (prd
. m)
= X by
A2,
FUNCT_1:def 3;
hence thesis by
A1,
Th77;
end;
end
registration
cluster
primitive-recursive ->
quasi_total for
Element of (
HFuncs
NAT );
coherence ;
end
registration
cluster
primitive-recursive ->
len-total for (
NAT
* )
-defined
Function;
coherence
proof
let x be (
NAT
* )
-defined
Function;
assume x
in
PrimRec ;
then x is
Element of
PrimRec ;
hence thesis;
end;
cluster non
empty for
Element of
PrimRec ;
existence
proof
(
0
const
0 )
in
PrimRec by
Th68;
hence thesis;
end;
end
begin
definition
let n be
set;
let f be
homogeneous
Relation;
::
COMPUT_1:def21
attr f is n
-ary means
:
Def21: (
arity f)
= n;
end
registration
cluster 1
-ary -> non
empty for
homogeneous
Function;
coherence
proof
let f be
homogeneous
Function;
assume (
arity f)
= 1;
then ex x be
FinSequence st x
in (
dom f) by
MARGREL1:def 25;
hence thesis;
end;
cluster 2
-ary -> non
empty for
homogeneous
Function;
coherence
proof
let f be
homogeneous
Function;
assume (
arity f)
= 2;
then ex x be
FinSequence st x
in (
dom f) by
MARGREL1:def 25;
hence thesis;
end;
cluster 3
-ary -> non
empty for
homogeneous
Function;
coherence
proof
let f be
homogeneous
Function;
assume (
arity f)
= 3;
then ex x be
FinSequence st x
in (
dom f) by
MARGREL1:def 25;
hence thesis;
end;
end
registration
let n be non
zero
Element of
NAT ;
cluster (n
proj 1) ->
primitive-recursive;
coherence
proof
1
<= n by
NAT_1: 14;
then (n
proj 1)
in
PrimRec by
Def14;
hence thesis;
end;
end
registration
cluster (2
proj 2) ->
primitive-recursive;
coherence by
Def14;
cluster (1
succ 1) ->
primitive-recursive;
coherence by
Th69;
cluster (3
succ 3) ->
primitive-recursive;
coherence by
Th69;
let i be
Element of
NAT ;
cluster (
0
const i) ->
0
-ary;
coherence by
Th31;
cluster (1
const i) -> 1
-ary;
coherence by
Th31;
cluster (2
const i) -> 2
-ary;
coherence by
Th31;
cluster (3
const i) -> 3
-ary;
coherence by
Th31;
cluster (1
proj i) -> 1
-ary;
coherence by
Th36;
cluster (2
proj i) -> 2
-ary;
coherence by
Th36;
cluster (3
proj i) -> 3
-ary;
coherence by
Th36;
cluster (1
succ i) -> 1
-ary;
coherence by
Th33;
cluster (2
succ i) -> 2
-ary;
coherence by
Th33;
cluster (3
succ i) -> 3
-ary;
coherence by
Th33;
let j be
Element of
NAT ;
cluster (i
const j) ->
primitive-recursive;
coherence by
Th68;
end
registration
cluster
0
-ary
primitive-recursive non
empty for
homogeneous
Function;
existence by
Def14;
cluster 1
-ary
primitive-recursive for
homogeneous
Function;
existence by
Def14;
cluster 2
-ary
primitive-recursive for
homogeneous
Function;
existence
proof
take f = (2
proj 1);
thus f is 2
-ary;
thus f
in
PrimRec by
Def14;
end;
cluster 3
-ary
primitive-recursive for
homogeneous
Function;
existence
proof
take f = (3
proj 1);
thus f is 3
-ary;
thus f
in
PrimRec by
Def14;
end;
end
registration
cluster non
empty
0
-ary
len-total
to-naturals for
homogeneous(
NAT
* )
-defined
Function;
existence
proof
(
0
const
0 ) is
0
-ary;
hence thesis;
end;
cluster non
empty1
-ary
len-total
to-naturals for
homogeneous(
NAT
* )
-defined
Function;
existence
proof
(1
const
0 ) is 1
-ary;
hence thesis;
end;
cluster non
empty2
-ary
len-total
to-naturals for
homogeneous(
NAT
* )
-defined
Function;
existence
proof
(2
const
0 ) is 2
-ary;
hence thesis;
end;
cluster non
empty3
-ary
len-total
to-naturals for
homogeneous(
NAT
* )
-defined
Function;
existence
proof
(3
const
0 ) is 3
-ary;
hence thesis;
end;
end
registration
let f be
0
-ary non
empty
primitive-recursive
Function;
let g be 2
-ary
primitive-recursive
Function;
cluster (
primrec (f,g,1)) ->
primitive-recursive1
-ary;
coherence
proof
A1: g
in
PrimRec by
Def16;
A2: (
arity f)
=
0 by
Def21;
f is
Element of
PrimRec by
Def16;
then (
dom f)
= (
0
-tuples_on
NAT ) by
A2,
Th21
.=
{(
<*>
NAT )} by
FINSEQ_2: 94;
then
A3:
{}
in (
dom f) by
TARSKI:def 1;
A4: f
in
PrimRec by
Def16;
A5: 1
<= (
0
+ 1);
(
arity g)
= (
0
+ 2) by
Def21;
hence (
primrec (f,g,1))
in
PrimRec by
A5,
A2,
A4,
A1,
Th72;
reconsider ii =
<*
0 *> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
(
dom
<*
0 *>)
=
{1} by
FINSEQ_1: 2,
FINSEQ_1: 38;
then
A6: 1
in (
dom
<*
0 *>) by
TARSKI:def 1;
(
Del (
<*
0 *>,1))
=
{} by
WSIERP_1: 19;
then (ii
+* (1,
0 ))
in (
dom (
primrec (f,g,1))) by
A5,
A2,
A3,
A6,
Lm6;
then
A7:
<*
0 *>
in (
dom (
primrec (f,g,1))) by
FUNCT_7: 95;
(
len
<*
0 *>)
= 1 by
FINSEQ_1: 39;
hence (
arity (
primrec (f,g,1)))
= 1 by
A7,
MARGREL1:def 25;
end;
end
registration
let f be 1
-ary
primitive-recursive
Function;
let g be 3
-ary
primitive-recursive
Function;
cluster (
primrec (f,g,1)) ->
primitive-recursive2
-ary;
coherence
proof
A1: g
in
PrimRec by
Def16;
A2: 1
<= (1
+ 1);
A3: (
arity g)
= (1
+ 2) by
Def21;
A4: (
arity f)
= 1 by
Def21;
f
in
PrimRec by
Def16;
hence (
primrec (f,g,1))
in
PrimRec by
A2,
A4,
A3,
A1,
Th72;
thus (
arity (
primrec (f,g,1)))
= 2 by
A2,
A4,
A3,
Th56;
end;
cluster (
primrec (f,g,2)) ->
primitive-recursive2
-ary;
coherence
proof
A5: g
in
PrimRec by
Def16;
A6: 2
<= (1
+ 1);
A7: (
arity g)
= (1
+ 2) by
Def21;
A8: (
arity f)
= 1 by
Def21;
f
in
PrimRec by
Def16;
hence (
primrec (f,g,2))
in
PrimRec by
A6,
A8,
A7,
A5,
Th72;
thus (
arity (
primrec (f,g,2)))
= 2 by
A6,
A8,
A7,
Th56;
end;
end
theorem ::
COMPUT_1:79
Th78: for f1 be 1
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function, f2 be non
empty
to-naturals
homogeneous(
NAT
* )
-defined
Function holds ((
primrec (f1,f2,2))
.
<*i,
0 *>)
= (f1
.
<*i*>)
proof
let f1 be 1
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function, f2 be non
empty
to-naturals
homogeneous(
NAT
* )
-defined
Function;
(
arity f1)
= 1 by
Def21;
then
reconsider p =
<*i,
0 *> as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
FINSEQ_2: 101;
(
len p)
= 2 by
FINSEQ_1: 44;
then
A1: 2
in (
dom p) by
FINSEQ_3: 25;
(p
+* (2,
0 ))
= p by
Th1;
hence ((
primrec (f1,f2,2))
.
<*i,
0 *>)
= (f1
. (
Del (p,2))) by
A1,
Th59
.= (f1
.
<*i*>) by
WSIERP_1: 19;
end;
theorem ::
COMPUT_1:80
Th79: f1 is
len-total & (
arity f1)
=
0 implies ((
primrec (f1,f2,1))
.
<*
0 *>)
= (f1
.
{} )
proof
assume that
A1: f1 is
len-total and
A2: (
arity f1)
=
0 ;
reconsider p =
<*
0 *> as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A2,
FINSEQ_2: 131;
(
len p)
= 1 by
FINSEQ_1: 39;
then
A3: 1
in (
dom p) by
FINSEQ_3: 25;
(p
+* (1,
0 ))
= p by
FUNCT_7: 95;
hence ((
primrec (f1,f2,1))
.
<*
0 *>)
= (f1
. (
Del (p,1))) by
A1,
A3,
Th59
.= (f1
.
{} ) by
WSIERP_1: 19;
end;
theorem ::
COMPUT_1:81
Th80: for f1 be 1
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function, f2 be 3
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function holds ((
primrec (f1,f2,2))
.
<*i, (j
+ 1)*>)
= (f2
.
<*i, j, ((
primrec (f1,f2,2))
.
<*i, j*>)*>)
proof
let f1 be 1
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function, f2 be 3
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function;
A1: (
arity f1)
= 1 by
Def21;
then
reconsider p =
<*i, j*> as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
FINSEQ_2: 101;
A2: (p
+* (2,(j
+ 1)))
=
<*i, (j
+ 1)*> by
Th1;
A3: (p
+* (2,j))
=
<*i, j*> by
Th1;
((
arity f1)
+ 2)
= (
arity f2) by
A1,
Def21;
hence ((
primrec (f1,f2,2))
.
<*i, (j
+ 1)*>)
= (f2
. ((p
+* (2,j))
^
<*((
primrec (f1,f2,2))
. (p
+* (2,j)))*>)) by
A1,
A2,
Th62
.= (f2
.
<*i, j, ((
primrec (f1,f2,2))
.
<*i, j*>)*>) by
A3,
FINSEQ_1: 43;
end;
theorem ::
COMPUT_1:82
Th81: f1 is
len-total & f2 is
len-total & (
arity f1)
=
0 & (
arity f2)
= 2 implies ((
primrec (f1,f2,1))
.
<*(i
+ 1)*>)
= (f2
.
<*i, ((
primrec (f1,f2,1))
.
<*i*>)*>)
proof
assume that
A1: f1 is
len-total and
A2: f2 is
len-total and
A3: (
arity f1)
=
0 and
A4: (
arity f2)
= 2;
reconsider p =
<*i*> as
Element of (((
arity f1)
+ 1)
-tuples_on
NAT ) by
A3,
FINSEQ_2: 131;
A5: (p
+* (1,(i
+ 1)))
=
<*(i
+ 1)*> by
FUNCT_7: 95;
A6: (p
+* (1,i))
=
<*i*> by
FUNCT_7: 95;
((
arity f1)
+ 2)
= (
arity f2) by
A3,
A4;
hence ((
primrec (f1,f2,1))
.
<*(i
+ 1)*>)
= (f2
. ((p
+* (1,i))
^
<*((
primrec (f1,f2,1))
. (p
+* (1,i)))*>)) by
A1,
A2,
A3,
A5,
Th62
.= (f2
.
<*i, ((
primrec (f1,f2,1))
.
<*i*>)*>) by
A6,
FINSEQ_1:def 9;
end;
Lm8:
now
reconsider z3 =
<*
0 ,
0 ,
0 *> as
FinSequence of
NAT ;
let g be
quasi_total
homogeneous non
empty
PartFunc of (
NAT
* ),
NAT ;
set G = (g
*
<:
<*(3
proj 1), (3
proj 3)*>:>);
A1: (
rng G)
c=
NAT by
RELAT_1:def 19;
assume
A2: (
arity g)
= 2;
then
A3: (
dom g)
= (2
-tuples_on
NAT ) by
Th21;
thus
A4: (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((
dom (3
proj 1))
/\ (
dom (3
proj 3))) by
FINSEQ_3: 142;
hence
A5: (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((3
-tuples_on
NAT )
/\ (
dom (3
proj 3))) by
Th35
.= ((3
-tuples_on
NAT )
/\ (3
-tuples_on
NAT )) by
Th35
.= (3
-tuples_on
NAT );
now
set f =
<*(3
proj 1), (3
proj 3)*>;
let x be
object;
set F =
<:f:>;
A6: (
product (
rngs f))
= (
product
<*(
rng (3
proj 1)), (
rng (3
proj 3))*>) by
FINSEQ_3: 133
.= (
product
<*
NAT , (
rng (3
proj 3))*>) by
Th35
.= (
product
<*
NAT ,
NAT *>) by
Th35
.= (2
-tuples_on
NAT ) by
FINSEQ_3: 128;
hereby
A7: (
rng F)
c= (
product (
rngs f)) by
FUNCT_6: 29;
assume x
in (
rng F);
hence x
in (
dom g) by
A3,
A6,
A7;
end;
assume x
in (
dom g);
then x is
Element of (2
-tuples_on
NAT ) by
A2,
Th21;
then
consider d1,d2 be
Element of
NAT such that
A8: x
=
<*d1, d2*> by
FINSEQ_2: 100;
reconsider x9 =
<*d1,
0 , d2*> as
Element of (3
-tuples_on
NAT ) by
FINSEQ_2: 104;
(F
. x9)
=
<*((3
proj 1)
. x9), ((3
proj 3)
. x9)*> by
A4,
A5,
FINSEQ_3: 142
.=
<*(x9
. 1), ((3
proj 3)
. x9)*> by
Th37
.=
<*(x9
. 1), (x9
. 3)*> by
Th37
.=
<*d1, (x9
. 3)*> by
FINSEQ_1: 45
.= x by
A8,
FINSEQ_1: 45;
hence x
in (
rng F) by
A5,
FUNCT_1:def 3;
end;
then (
rng
<:
<*(3
proj 1), (3
proj 3)*>:>)
= (
dom g) by
TARSKI: 2;
hence
A9: (
dom (g
*
<:
<*(3
proj 1), (3
proj 3)*>:>))
= (3
-tuples_on
NAT ) by
A5,
RELAT_1: 27;
then
reconsider G as
PartFunc of (
NAT
* ),
NAT by
A1,
FINSEQ_2: 142,
RELSET_1: 4;
reconsider G as
homogeneous
PartFunc of (
NAT
* ),
NAT by
A9,
MARGREL1:def 21;
take G;
thus G
= (g
*
<:
<*(3
proj 1), (3
proj 3)*>:>);
G is
Element of (
PFuncs ((
NAT
* ),
NAT )) by
PARTFUN1: 45;
then G
in (
HFuncs
NAT );
hence G is
Element of (
HFuncs
NAT );
(
len z3)
= 3 by
FINSEQ_1: 45;
then
A10: z3 is
Element of (3
-tuples_on
NAT ) by
FINSEQ_2: 92;
for x be
FinSequence st x
in (
dom G) holds 3
= (
len x) by
A9,
CARD_1:def 7;
hence (
arity G)
= 3 by
A10,
A9,
MARGREL1:def 25;
hence G is
quasi_total non
empty by
A9,
Th21;
end;
definition
let g be
Function;
::
COMPUT_1:def22
func
(1,2)->(1,?,2) g ->
Function equals (g
*
<:
<*(3
proj 1), (3
proj 3)*>:>);
coherence ;
end
registration
let g be
to-naturals(
NAT
* )
-defined
Function;
cluster (
(1,2)->(1,?,2) g) ->
to-naturals(
NAT
* )
-defined;
coherence
proof
set G = (
(1,2)->(1,?,2) g);
A1: (3
-tuples_on
NAT )
c= (
NAT
* ) by
FINSEQ_2: 142;
(
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((
dom (3
proj 1))
/\ (
dom (3
proj 3))) by
FINSEQ_3: 142;
then
A2: (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((3
-tuples_on
NAT )
/\ (
dom (3
proj 3))) by
Th35
.= ((3
-tuples_on
NAT )
/\ (3
-tuples_on
NAT )) by
Th35
.= (3
-tuples_on
NAT );
(
dom G)
c= (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>) by
RELAT_1: 25;
then (
dom G)
c= (
NAT
* ) by
A2,
A1;
hence thesis;
end;
end
registration
let g be
homogeneous
Function;
cluster (
(1,2)->(1,?,2) g) ->
homogeneous;
coherence
proof
set G = (
(1,2)->(1,?,2) g);
(
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((
dom (3
proj 1))
/\ (
dom (3
proj 3))) by
FINSEQ_3: 142;
then (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((3
-tuples_on
NAT )
/\ (
dom (3
proj 3))) by
Th35
.= ((3
-tuples_on
NAT )
/\ (3
-tuples_on
NAT )) by
Th35
.= (3
-tuples_on
NAT );
then (
dom G)
c= (3
-tuples_on
NAT ) by
RELAT_1: 25;
hence (
dom G) is
with_common_domain;
end;
end
registration
let g be 2
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function;
cluster (
(1,2)->(1,?,2) g) -> non
empty3
-ary
len-total;
coherence
proof
A1: g is
quasi_total
homogeneous non
empty
PartFunc of (
NAT
* ),
NAT by
Th16;
(
arity g)
= 2 by
Def21;
then
consider G be
homogeneous
PartFunc of (
NAT
* ),
NAT such that
A2: G
= (g
*
<:
<*(3
proj 1), (3
proj 3)*>:>) and G is
Element of (
HFuncs
NAT ) and
A3: (
arity G)
= 3 and
A4: G is
quasi_total non
empty by
A1,
Lm8;
reconsider G9 = G as
quasi_total non
empty
homogeneous
PartFunc of (
NAT
* ),
NAT by
A4;
G9 is non
empty3
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function by
A3,
Def21;
hence thesis by
A2;
end;
end
theorem ::
COMPUT_1:83
Th82: for f be 2
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function holds ((
(1,2)->(1,?,2) f)
.
<*i, j, k*>)
= (f
.
<*i, k*>)
proof
let f be 2
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function;
reconsider ff = f as
quasi_total
homogeneous non
empty
PartFunc of (
NAT
* ),
NAT by
Th16;
reconsider ijk =
<*i, j, k*> as
Element of (3
-tuples_on
NAT ) by
FINSEQ_2: 104;
A1: (
arity ff)
= 2 by
Def21;
then
A2: (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= ((
dom (3
proj 1))
/\ (
dom (3
proj 3))) by
Lm8;
A3: (
dom
<:
<*(3
proj 1), (3
proj 3)*>:>)
= (3
-tuples_on
NAT ) by
A1,
Lm8;
(
dom (ff
*
<:
<*(3
proj 1), (3
proj 3)*>:>))
= (3
-tuples_on
NAT ) by
A1,
Lm8;
hence ((
(1,2)->(1,?,2) f)
.
<*i, j, k*>)
= (f
. (
<:
<*(3
proj 1), (3
proj 3)*>:>
. ijk)) by
FUNCT_1: 12
.= (f
.
<*((3
proj 1)
. ijk), ((3
proj 3)
. ijk)*>) by
A2,
A3,
FINSEQ_3: 142
.= (f
.
<*(ijk
. 1), ((3
proj 3)
. ijk)*>) by
Th37
.= (f
.
<*(ijk
. 1), (ijk
. 3)*>) by
Th37
.= (f
.
<*i, (ijk
. 3)*>) by
FINSEQ_1: 45
.= (f
.
<*i, k*>) by
FINSEQ_1: 45;
end;
theorem ::
COMPUT_1:84
Th83: for g be 2
-ary
primitive-recursive
Function holds (
(1,2)->(1,?,2) g)
in
PrimRec
proof
A1: (3
proj 3)
in
PrimRec by
Def14;
A2: (2
-tuples_on
PrimRec )
c= (
PrimRec
* ) by
FINSEQ_2: 142;
(3
proj 1)
in
PrimRec by
Def14;
then
<*(3
proj 1), (3
proj 3)*>
in (2
-tuples_on
PrimRec ) by
A1,
FINSEQ_2: 101;
then
reconsider F =
<*(3
proj 1), (3
proj 3)*> as
Element of (
PrimRec
* ) by
A2;
F is
with_the_same_arity
proof
let f,g be
Function;
assume that
A3: f
in (
rng F) and
A4: g
in (
rng F);
A5: (
rng F)
=
{(3
proj 1), (3
proj 3)} by
FINSEQ_2: 127;
hence f is
empty implies g is
empty or (
dom g)
=
{
{} } by
A3,
TARSKI:def 2;
assume that f is non
empty and g is non
empty;
take 3,
NAT ;
f
= (3
proj 1) or f
= (3
proj 3) by
A3,
A5,
TARSKI:def 2;
hence (
dom f)
c= (3
-tuples_on
NAT ) by
Th35;
g
= (3
proj 1) or g
= (3
proj 3) by
A4,
A5,
TARSKI:def 2;
hence thesis by
Th35;
end;
then
reconsider F as
with_the_same_arity
Element of (
PrimRec
* );
let g be 2
-ary
primitive-recursive
Function;
(
arity g)
= 2 by
Def21;
then
A6: (
arity g)
= (
len F) by
FINSEQ_1: 44;
g is
Element of
PrimRec by
Def16;
hence thesis by
A6,
Th71;
end;
registration
let f be 2
-ary
primitive-recursive
homogeneous
Function;
cluster (
(1,2)->(1,?,2) f) ->
primitive-recursive3
-ary;
coherence by
Th83;
end
definition
::
COMPUT_1:def23
func
[+] -> 2
-ary
primitive-recursive
Function equals (
primrec ((1
proj 1),(3
succ 3),2));
coherence ;
end
theorem ::
COMPUT_1:85
Th84: (
[+]
.
<*i, j*>)
= (i
+ j)
proof
reconsider q =
<*i*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
defpred
p[
Nat] means (
[+]
.
<*i, $1*>)
= (i
+ $1);
A1:
now
let j be
Nat;
reconsider jj = j as
Element of
NAT by
ORDINAL1:def 12;
reconsider r =
<*i, jj, (i
+ jj)*> as
Element of (3
-tuples_on
NAT ) by
FINSEQ_2: 104;
assume
p[j];
then (
[+]
.
<*i, (jj
+ 1)*>)
= ((3
succ 3)
. r) by
Th80
.= ((r
/. 3)
+ 1) by
Def7
.= ((i
+ jj)
+ 1) by
FINSEQ_4: 18
.= (i
+ (j
+ 1));
hence
p[(j
+ 1)];
end;
(
[+]
.
<*i,
0 *>)
= ((1
proj 1)
. q) by
Th78
.= (q
. 1) by
Th37
.= (i
+
0 ) by
FINSEQ_1: 40;
then
A2:
p[
0 ];
for j be
Nat holds
p[j] from
NAT_1:sch 2(
A2,
A1);
hence thesis;
end;
definition
::
COMPUT_1:def24
func
[*] -> 2
-ary
primitive-recursive
Function equals (
primrec ((1
const
0 ),(
(1,2)->(1,?,2)
[+] ),2));
coherence ;
end
theorem ::
COMPUT_1:86
Th85: for i,j be
Nat holds (
[*]
.
<*i, j*>)
= (i
* j)
proof
let i be
Nat;
reconsider i1 = i as
Element of
NAT by
ORDINAL1:def 12;
defpred
p[
Nat] means (
[*]
.
<*i, $1*>)
= (i
* $1);
A1:
now
let j be
Nat;
reconsider jj = j as
Element of
NAT by
ORDINAL1:def 12;
assume
p[j];
then (
[*]
.
<*i1, (jj
+ 1)*>)
= ((
(1,2)->(1,?,2)
[+] )
.
<*i, jj, (i
* jj)*>) by
Th80
.= (
[+]
.
<*i1, (i1
* jj)*>) by
Th82
.= ((i
* 1)
+ (i
* jj)) by
Th84
.= (i
* (j
+ 1));
hence
p[(j
+ 1)];
end;
reconsider ii =
<*i1*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 98;
(
[*]
.
<*i,
0 *>)
= ((1
const
0 )
. ii) by
Th78
.= (i
*
0 );
then
A2:
p[
0 ];
thus for i be
Nat holds
p[i] from
NAT_1:sch 2(
A2,
A1);
end;
registration
let g,h be 2
-ary
primitive-recursive
homogeneous
Function;
cluster
<*g, h*> ->
with_the_same_arity;
coherence
proof
reconsider g, h as
Element of
PrimRec by
Def16;
A1: (
rng
<*g, h*>)
=
{g, h} by
FINSEQ_2: 127;
A2:
now
let f1,f2 be
homogeneous
Function;
assume that
A3: f1
in (
rng
<*g, h*>) and
A4: f2
in (
rng
<*g, h*>);
f1
= g or f1
= h by
A1,
A3,
TARSKI:def 2;
then
A5: (
arity f1)
= 2 by
Def21;
f2
= g or f2
= h by
A1,
A4,
TARSKI:def 2;
hence (
arity f1)
= (
arity f2) by
A5,
Def21;
end;
(
rng
<*g, h*>)
c=
PrimRec by
FINSEQ_1:def 4;
hence thesis by
A2,
Th29,
XBOOLE_1: 1;
end;
end
registration
let f,g,h be 2
-ary
primitive-recursive
Function;
cluster (f
*
<:
<*g, h*>:>) ->
primitive-recursive;
coherence
proof
reconsider g9 = g, h9 = h as
Element of
PrimRec by
Def16;
A1: f
in
PrimRec by
Def16;
A2: (
rng
<*g9, h9*>)
c=
PrimRec by
FINSEQ_1:def 4;
then (
rng
<*g, h*>)
c= (
HFuncs
NAT ) by
XBOOLE_1: 1;
then
reconsider F =
<*g, h*> as
with_the_same_arity
FinSequence of (
HFuncs
NAT ) by
FINSEQ_1:def 4;
A3:
PrimRec is
composition_closed by
Def14;
A4: (
arity f)
= 2 by
Def21;
(
len F)
= 2 by
FINSEQ_1: 44;
hence (f
*
<:
<*g, h*>:>)
in
PrimRec by
A2,
A1,
A3,
A4;
end;
end
registration
let f,g,h be 2
-ary
primitive-recursive
Function;
cluster (f
*
<:
<*g, h*>:>) -> 2
-ary;
coherence
proof
set x = the
Element of (2
-tuples_on
NAT );
reconsider f9 = f, fgh = (f
*
<:
<*g, h*>:>), g9 = g, h9 = h as
Element of
PrimRec by
Def16;
A1: f9
= f;
(
rng
<*g9, h9*>)
c=
PrimRec by
FINSEQ_1:def 4;
then (
rng
<*g, h*>)
c= (
HFuncs
NAT ) by
XBOOLE_1: 1;
then
reconsider F =
<*g, h*> as
with_the_same_arity
FinSequence of (
HFuncs
NAT ) by
FINSEQ_1:def 4;
A2: (
dom
<:F:>)
= ((
dom g)
/\ (
dom h)) by
FINSEQ_3: 142;
A3: (
arity g)
= 2 by
Def21;
(
rng F)
=
{g, h} by
FINSEQ_2: 127;
then g
in (
rng F) by
TARSKI:def 2;
then
A4: (
arity F)
= 2 by
A3,
Def4;
(
arity f)
= 2 by
Def21;
then
A5: (
dom f9)
= (2
-tuples_on
NAT ) by
Lm1;
(
arity h)
= 2 by
Def21;
then
A6: (
dom h9)
= (2
-tuples_on
NAT ) by
Lm1;
A7: (
dom g9)
= (2
-tuples_on
NAT ) by
A3,
Lm1;
then (
<:F:>
. x)
=
<*(g9
. x), (h9
. x)*> by
A6,
A2,
FINSEQ_3: 142;
then (
<:F:>
. x) is
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
then fgh is non
empty by
A5,
A7,
A6,
A2,
FUNCT_1: 11,
RELAT_1: 38;
hence (
arity (f
*
<:
<*g, h*>:>))
= 2 by
A1,
A4,
Th43;
end;
end
registration
let f be 1
-ary
primitive-recursive
Function;
let g be
primitive-recursive
Function;
cluster (f
*
<:
<*g*>:>) ->
primitive-recursive;
coherence
proof
reconsider g9 = g as
Element of
PrimRec by
Def16;
A1: f
in
PrimRec by
Def16;
A2: (
rng
<*g9*>)
c=
PrimRec by
FINSEQ_1:def 4;
then (
rng
<*g*>)
c= (
HFuncs
NAT ) by
XBOOLE_1: 1;
then
reconsider F =
<*g9*> as
with_the_same_arity
FinSequence of (
HFuncs
NAT ) by
FINSEQ_1:def 4;
A3:
PrimRec is
composition_closed by
Def14;
A4: (
arity f)
= 1 by
Def21;
(
len F)
= 1 by
FINSEQ_1: 39;
hence (f
*
<:
<*g*>:>)
in
PrimRec by
A2,
A1,
A3,
A4;
end;
end
registration
let f be 1
-ary
primitive-recursive
Function;
let g be 2
-ary
primitive-recursive
Function;
cluster (f
*
<:
<*g*>:>) -> 2
-ary;
coherence
proof
set x = the
Element of (2
-tuples_on
NAT );
reconsider f9 = f, fg = (f
*
<:
<*g*>:>), g9 = g as
Element of
PrimRec by
Def16;
A1: f9
= f;
(
rng
<*g9*>)
c=
PrimRec by
FINSEQ_1:def 4;
then (
rng
<*g*>)
c= (
HFuncs
NAT ) by
XBOOLE_1: 1;
then
reconsider F =
<*g9*> as
with_the_same_arity
FinSequence of (
HFuncs
NAT ) by
FINSEQ_1:def 4;
A2: (
dom
<:F:>)
= (
dom g) by
FINSEQ_3: 141;
(
arity f)
= 1 by
Def21;
then
A3: (
dom f9)
= (1
-tuples_on
NAT ) by
Lm1;
A4: (
arity g)
= 2 by
Def21;
(
rng F)
=
{g} by
FINSEQ_1: 39;
then g
in (
rng F) by
TARSKI:def 1;
then
A5: (
arity F)
= 2 by
A4,
Def4;
A6: (
dom g9)
= (2
-tuples_on
NAT ) by
A4,
Lm1;
then (
<:F:>
. x)
=
<*(g9
. x)*> by
FINSEQ_3: 141;
then (
<:F:>
. x)
in (1
-tuples_on
NAT ) by
FINSEQ_2: 98;
then fg is non
empty by
A6,
A2,
A3,
FUNCT_1: 11,
RELAT_1: 38;
hence (
arity (f
*
<:
<*g*>:>))
= 2 by
A1,
A5,
Th43;
end;
end
definition
::
COMPUT_1:def25
func
[!] -> 1
-ary
primitive-recursive
Function equals (
primrec ((
0
const 1),(
[*]
*
<:
<*((1
succ 1)
*
<:
<*(2
proj 1)*>:>), (2
proj 2)*>:>),1));
coherence ;
end
scheme ::
COMPUT_1:sch1
Primrec1 { F() -> 1
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function , G() -> 2
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function , f(
set) ->
Element of
NAT , g(
set,
set) ->
Element of
NAT } :
for i,j be
Element of
NAT holds ((F()
*
<:
<*G()*>:>)
.
<*i, j*>)
= f(g)
provided
A1: for i be
Element of
NAT holds (F()
.
<*i*>)
= f(i)
and
A2: for i,j be
Element of
NAT holds (G()
.
<*i, j*>)
= g(i,j);
let i,j be
Element of
NAT ;
(
arity G())
= 2 by
Def21;
then
A3: (
dom G())
= (2
-tuples_on
NAT ) by
Th22;
(
dom
<:
<*G()*>:>)
= (
dom G()) by
FINSEQ_3: 141;
hence ((F()
*
<:
<*G()*>:>)
.
<*i, j*>)
= (F()
. (
<:
<*G()*>:>
.
<*i, j*>)) by
A3,
FINSEQ_2: 101,
FUNCT_1: 13
.= (F()
.
<*(G()
.
<*i, j*>)*>) by
A3,
FINSEQ_2: 101,
FINSEQ_3: 141
.= (F()
.
<*g(i,j)*>) by
A2
.= f(g) by
A1;
end;
scheme ::
COMPUT_1:sch2
Primrec2 { F,G,H() -> 2
-ary
len-total
to-naturals
homogeneous(
NAT
* )
-defined
Function , f,g,h(
set,
set) ->
Element of
NAT } :
for i,j be
Element of
NAT holds ((F()
*
<:
<*G(), H()*>:>)
.
<*i, j*>)
= f(g,h)
provided
A1: for i,j be
Element of
NAT holds (F()
.
<*i, j*>)
= f(i,j)
and
A2: for i,j be
Element of
NAT holds (G()
.
<*i, j*>)
= g(i,j)
and
A3: for i,j be
Element of
NAT holds (H()
.
<*i, j*>)
= h(i,j);
let i,j be
Element of
NAT ;
(
arity G())
= 2 by
Def21;
then
A4: (
dom G())
= (2
-tuples_on
NAT ) by
Th22;
(
arity H())
= 2 by
Def21;
then
A5: (
dom H())
= (2
-tuples_on
NAT ) by
Th22;
A6: (
dom
<:
<*G(), H()*>:>)
= ((
dom G())
/\ (
dom H())) by
FINSEQ_3: 142;
hence ((F()
*
<:
<*G(), H()*>:>)
.
<*i, j*>)
= (F()
. (
<:
<*G(), H()*>:>
.
<*i, j*>)) by
A4,
A5,
FINSEQ_2: 101,
FUNCT_1: 13
.= (F()
.
<*(G()
.
<*i, j*>), (H()
.
<*i, j*>)*>) by
A6,
A4,
A5,
FINSEQ_2: 101,
FINSEQ_3: 142
.= (F()
.
<*g(i,j), (H()
.
<*i, j*>)*>) by
A2
.= (F()
.
<*g(i,j), h(i,j)*>) by
A3
.= f(g,h) by
A1;
end;
theorem ::
COMPUT_1:87
(
[!]
.
<*i*>)
= (i
! )
proof
defpred
p[
Nat] means (
[!]
.
<*$1*>)
= ($1
! );
deffunc
c(
Element of
NAT ,
Element of
NAT ) = $2;
deffunc
a(
Element of
NAT ,
Element of
NAT ) = ($1
* $2);
deffunc
g(
Element of
NAT ,
Element of
NAT ) = $1;
deffunc
f(
Element of
NAT ) = ($1
+ 1);
set g = (
[*]
*
<:
<*((1
succ 1)
*
<:
<*(2
proj 1)*>:>), (2
proj 2)*>:>);
deffunc
b(
Element of
NAT ,
Element of
NAT ) =
f(g);
A1: for i,j be
Element of
NAT holds ((2
proj 1)
.
<*i, j*>)
=
g(i,j)
proof
let i,j be
Element of
NAT ;
reconsider ij =
<*i, j*> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
thus ((2
proj 1)
.
<*i, j*>)
= (ij
. 1) by
Th37
.= i by
FINSEQ_1: 44;
end;
A2: for i be
Element of
NAT holds ((1
succ 1)
.
<*i*>)
=
f(i)
proof
let i be
Element of
NAT ;
reconsider ij =
<*i*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
thus ((1
succ 1)
.
<*i*>)
= ((ij
/. 1)
+ 1) by
Def7
.= (i
+ 1) by
FINSEQ_4: 16;
end;
for i,j be
Element of
NAT holds (((1
succ 1)
*
<:
<*(2
proj 1)*>:>)
.
<*i, j*>)
=
f(g) from
Primrec1(
A2,
A1);
then
A3: for i,j be
Element of
NAT holds (((1
succ 1)
*
<:
<*(2
proj 1)*>:>)
.
<*i, j*>)
=
b(i,j);
A4: for i,j be
Element of
NAT holds ((2
proj 2)
.
<*i, j*>)
=
c(i,j)
proof
let i,j be
Element of
NAT ;
reconsider ij =
<*i, j*> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
thus ((2
proj 2)
.
<*i, j*>)
= (ij
. 2) by
Th37
.= j by
FINSEQ_1: 44;
end;
A5: for i,j be
Element of
NAT holds (
[*]
.
<*i, j*>)
=
a(i,j) by
Th85;
A6: for i,j be
Element of
NAT holds (g
.
<*i, j*>)
=
a(b,c) from
Primrec2(
A5,
A3,
A4);
A7: (
arity (
0
const 1))
=
0 by
Th31;
A8: (
arity g)
= 2 by
Def21;
A9:
now
let i be
Nat;
reconsider i1 = i as
Element of
NAT by
ORDINAL1:def 12;
reconsider ie = (i
! ) as
Element of
NAT ;
assume
p[i];
then (
[!]
.
<*(i1
+ 1)*>)
= (g
.
<*i1, ie*>) by
A8,
A7,
Th81
.= ((i1
+ 1)
* ie) by
A6
.= ((i
+ 1)
! ) by
NEWTON: 15;
hence
p[(i
+ 1)];
end;
(
0
-tuples_on
NAT )
=
{
{} } by
Th5;
then
A10:
{}
in (
0
-tuples_on
NAT ) by
TARSKI:def 1;
(
[!]
.
<*
0 *>)
= ((
0
const 1)
.
{} ) by
A7,
Th79
.= (
0
! ) by
A10,
FUNCOP_1: 7,
NEWTON: 12;
then
A11:
p[
0 ];
for i be
Nat holds
p[i] from
NAT_1:sch 2(
A11,
A9);
hence thesis;
end;
definition
::
COMPUT_1:def26
func
[^] -> 2
-ary
primitive-recursive
Function equals (
primrec ((1
const 1),(
(1,2)->(1,?,2)
[*] ),2));
coherence ;
end
theorem ::
COMPUT_1:88
(
[^]
.
<*i, j*>)
= (i
|^ j)
proof
defpred
p[
Nat] means (
[^]
.
<*i, $1*>)
= (i
|^ $1);
A1:
now
let j be
Nat;
reconsider jj = j as
Element of
NAT by
ORDINAL1:def 12;
reconsider ij = (i
|^ jj) as
Element of
NAT ;
assume
p[j];
then (
[^]
.
<*i, (jj
+ 1)*>)
= ((
(1,2)->(1,?,2)
[*] )
.
<*i, jj, ij*>) by
Th80
.= (
[*]
.
<*i, ij*>) by
Th82
.= (i
* ij) by
Th85
.= (i
|^ (j
+ 1)) by
NEWTON: 6;
hence
p[(j
+ 1)];
end;
reconsider ii =
<*i*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 131;
(
[^]
.
<*i,
0 *>)
= ((1
const 1)
. ii) by
Th78
.= 1
.= (i
|^
0 ) by
NEWTON: 4;
then
A2:
p[
0 ];
for j be
Nat holds
p[j] from
NAT_1:sch 2(
A2,
A1);
hence thesis;
end;
definition
::
COMPUT_1:def27
func
[pred] -> 1
-ary
primitive-recursive
Function equals (
primrec ((
0
const
0 ),(2
proj 1),1));
coherence ;
end
theorem ::
COMPUT_1:89
Th88: (
[pred]
.
<*
0 *>)
=
0 & (
[pred]
.
<*(i
+ 1)*>)
= i
proof
defpred
p[
Nat] means (
[pred]
.
<*($1
+ 1)*>)
= $1;
reconsider p0 =
<*
0 ,
0 *> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
A2: (
arity (
0
const
0 ))
=
0 by
Th31;
A3: (
arity (2
proj 1))
= 2 by
Th36;
A4:
now
let i be
Nat;
reconsider i1 = i as
Element of
NAT by
ORDINAL1:def 12;
reconsider p0 =
<*(i1
+ 1), i1*> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
assume
p[i];
then (
[pred]
.
<*((i
+ 1)
+ 1)*>)
= ((2
proj 1)
. p0) by
A2,
A3,
Th81
.= (
<*(i
+ 1), i*>
. 1) by
Th37
.= (i
+ 1) by
FINSEQ_1: 44;
hence
p[(i
+ 1)];
end;
thus (
[pred]
.
<*
0 *>)
= ((
0
const
0 )
.
{} ) by
A2,
Th79
.=
0 ;
then (
[pred]
.
<*(
0
+ 1)*>)
= ((2
proj 1)
. p0) by
A2,
A3,
Th81
.= (
<*
0 ,
0 *>
. 1) by
Th37
.=
0 by
FINSEQ_1: 44;
then
A5:
p[
0 ];
for i be
Nat holds
p[i] from
NAT_1:sch 2(
A5,
A4);
hence thesis;
end;
definition
::
COMPUT_1:def28
func
[-] -> 2
-ary
primitive-recursive
Function equals (
primrec ((1
proj 1),(
(1,2)->(1,?,2) (
[pred]
*
<:
<*(2
proj 2)*>:>)),2));
coherence ;
end
theorem ::
COMPUT_1:90
(
[-]
.
<*i, j*>)
= (i
-' j)
proof
set F =
<*(2
proj 2)*>;
set g = (
[pred]
*
<:F:>);
(
rng F)
c=
PrimRec
proof
let x be
object;
assume x
in (
rng F);
then x
in
{(2
proj 2)} by
FINSEQ_1: 39;
then x
= (2
proj 2) by
TARSKI:def 1;
hence thesis by
Def14;
end;
then
reconsider F as
with_the_same_arity
FinSequence of
PrimRec by
FINSEQ_1:def 4;
defpred
p[
Nat] means (
[-]
.
<*i, $1*>)
= (i
-' $1);
A1: for i, j holds (g
.
<*i,
0 *>)
=
0 & (g
.
<*i, (j
+ 1)*>)
= j
proof
let i, j;
reconsider i0 =
<*i,
0 *> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
reconsider ij =
<*i, (j
+ 1)*> as
Element of (2
-tuples_on
NAT ) by
FINSEQ_2: 101;
A2: (
dom (2
proj 2))
= (2
-tuples_on
NAT ) by
Th35;
A3: (
dom
<:F:>)
= (
dom (2
proj 2)) by
FINSEQ_3: 141;
hence (g
.
<*i,
0 *>)
= (
[pred]
. (
<:F:>
. i0)) by
A2,
FUNCT_1: 13
.= (
[pred]
.
<*((2
proj 2)
. i0)*>) by
A2,
FINSEQ_3: 141
.= (
[pred]
.
<*(i0
. 2)*>) by
Th37
.=
0 by
Th88,
FINSEQ_1: 44;
thus (g
.
<*i, (j
+ 1)*>)
= (
[pred]
. (
<:F:>
. ij)) by
A3,
A2,
FUNCT_1: 13
.= (
[pred]
.
<*((2
proj 2)
. ij)*>) by
A2,
FINSEQ_3: 141
.= (
[pred]
.
<*(ij
. 2)*>) by
Th37
.= (
[pred]
.
<*(j
+ 1)*>) by
FINSEQ_1: 44
.= j by
Th88;
end;
A4:
now
let j be
Nat;
assume
A5:
p[j];
A6:
now
per cases by
NAT_1: 6;
suppose
A7: (i
-' j)
=
0 ;
then i
<= j by
NAT_D: 36;
then i
< (j
+ 1) by
NAT_1: 13;
then
A8: (i
- (j
+ 1))
<
0 by
XREAL_1: 49;
thus (g
.
<*i, (i
-' j)*>)
=
0 by
A1,
A7
.= (i
-' (j
+ 1)) by
A8,
XREAL_0:def 2;
end;
suppose ex k be
Nat st (i
-' j)
= (k
+ 1);
then
consider k be
Nat such that
A9: (i
-' j)
= (k
+ 1);
reconsider k as
Element of
NAT by
ORDINAL1:def 12;
(i
- j)
= (k
+ 1) by
A9,
XREAL_0:def 2;
then
A10: (i
- (j
+ 1))
= k;
thus (g
.
<*i, (i
-' j)*>)
= k by
A1,
A9
.= (i
-' (j
+ 1)) by
A10,
XREAL_0:def 2;
end;
end;
reconsider jj = j as
Element of
NAT by
ORDINAL1:def 12;
(
[-]
.
<*i, (jj
+ 1)*>)
= ((
(1,2)->(1,?,2) g)
.
<*i, jj, (
[-]
.
<*i, jj*>)*>) by
Th80
.= (i
-' (jj
+ 1)) by
A5,
A6,
Th82;
hence
p[(j
+ 1)];
end;
reconsider ii =
<*i*> as
Element of (1
-tuples_on
NAT ) by
FINSEQ_2: 98;
(
[-]
.
<*i,
0 *>)
= ((1
proj 1)
.
<*i*>) by
Th78
.= (ii
. 1) by
Th37
.= i by
FINSEQ_1: 40
.= ((i
+
0 )
-'
0 ) by
NAT_D: 34
.= (i
-'
0 );
then
A11:
p[
0 ];
for j be
Nat holds
p[j] from
NAT_1:sch 2(
A11,
A4);
hence thesis;
end;