scmpds_6.miz
begin
reserve m,n for
Nat,
a for
Int_position,
i,j for
Instruction of
SCMPDS ,
s,s1,s2 for
State of
SCMPDS ,
k1 for
Integer,
loc for
Nat,
I,J,K for
Program of
SCMPDS ;
set A =
NAT ;
set D =
SCM-Data-Loc ;
Lm1: ((
Stop
SCMPDS )
.
0 )
= (
halt
SCMPDS );
Lm2:
0
in (
dom (
Stop
SCMPDS )) by
COMPOS_1: 3;
reserve P,P1,P2 for
Instruction-Sequence of
SCMPDS ;
::$Canceled
theorem ::
SCMPDS_6:6
Th1: (
card (i
';' I))
= ((
card I)
+ 1)
proof
thus (
card (i
';' I))
= (
card ((
Load i)
';' I))
.= ((
card (
Load i))
+ (
card I)) by
AFINSQ_1: 17
.= ((
card I)
+ 1) by
COMPOS_1: 54;
end;
theorem ::
SCMPDS_6:7
Th2: ((i
';' I)
.
0 )
= i
proof
(i
';' I)
= ((
Load i)
';' I) &
0
in (
dom (
Load i)) by
COMPOS_1: 50;
hence ((i
';' I)
.
0 )
= ((
Load i)
.
0 ) by
AFINSQ_1:def 3
.= i;
end;
::$Canceled
theorem ::
SCMPDS_6:11
Th3: (
CurInstr ((P
+* (
stop (i
';' I))),(
Initialize s)))
= i
proof
set iI = (i
';' I), P3 = (P
+* (
stop (i
';' I)));
A1:
0
in (
dom (
Load i)) by
COMPOS_1: 50;
(
card iI)
= ((
card I)
+ 1) by
Th1;
then
A2:
0
in (
dom iI) by
AFINSQ_1: 66;
iI
c= (
stop iI) by
AFINSQ_1: 74;
then (
dom iI)
c= (
dom (
stop iI)) by
RELAT_1: 11;
then
A3:
0
in (
dom (
stop iI)) by
A2;
A4: ((P
+* (
stop (i
';' I)))
/. (
IC (
Initialize s)))
= ((P
+* (
stop (i
';' I)))
. (
IC (
Initialize s))) by
PBOOLE: 143;
(P3
.
0 )
= ((P
+* (
stop (i
';' I)))
.
0 )
.= ((
stop iI)
.
0 ) by
A3,
FUNCT_4: 13
.= (iI
.
0 ) by
A2,
COMPOS_1: 63
.= (((
Load i)
';' I)
.
0 )
.= ((
Load i)
.
0 ) by
A1,
AFINSQ_1:def 3
.= i;
hence thesis by
A4,
MEMSTR_0: 47;
end;
theorem ::
SCMPDS_6:12
Th4: for s be
State of
SCMPDS , m1,m2 be
Nat st (
IC s)
= m1 holds (
ICplusConst (s,m2))
= (m1
+ m2)
proof
let s be
State of
SCMPDS , m1,m2 be
Nat;
ex m be
Element of
NAT st m
= (
IC s) & (
ICplusConst (s,m2))
=
|.(m
+ m2).| by
SCMPDS_2:def 18;
hence thesis by
ABSVALUE:def 1;
end;
theorem ::
SCMPDS_6:13
Th5: for I,J be
Program of
SCMPDS holds (
Shift ((
stop J),(
card I)))
c= (
stop (I
';' J))
proof
let I,J be
Program of
SCMPDS ;
(
stop (I
';' J))
= ((I
';' J)
';' (
Stop
SCMPDS ))
.= (I
';' (J
';' (
Stop
SCMPDS ))) by
AFINSQ_1: 27
.= (I
';' (
stop J));
then (
stop (I
';' J))
= (I
+* (
Shift ((
stop J),(
card I))));
hence thesis by
FUNCT_4: 25;
end;
::$Canceled
theorem ::
SCMPDS_6:15
for s be
0
-started
State of
SCMPDS , i be
No-StopCode
parahalting
Instruction of
SCMPDS , J be
parahalting
shiftable
Program of
SCMPDS , a be
Int_position holds ((
IExec ((i
';' J),P,s))
. a)
= ((
IExec (J,P,(
Initialize (
Exec (i,s)))))
. a)
proof
let s be
0
-started
State of
SCMPDS , i be
No-StopCode
parahalting
Instruction of
SCMPDS , J be
parahalting
shiftable
Program of
SCMPDS , a be
Int_position;
thus ((
IExec ((i
';' J),P,s))
. a)
= ((
IExec (((
Load i)
';' J),P,s))
. a)
.= ((
IExec (J,P,(
Initialize (
IExec ((
Load i),P,s)))))
. a) by
SCMPDS_5: 35
.= ((
IExec (J,P,(
Initialize (
Exec (i,s)))))
. a) by
SCMPDS_5: 40;
end;
theorem ::
SCMPDS_6:16
for a be
Int_position, k1,k2 be
Integer holds ((a,k1)
<>0_goto k2)
<> (
halt
SCMPDS )
proof
(
InsCode (
halt
SCMPDS ))
=
0 by
COMPOS_1: 70;
hence thesis by
SCMPDS_2: 16;
end;
theorem ::
SCMPDS_6:17
for a be
Int_position, k1,k2 be
Integer holds ((a,k1)
<=0_goto k2)
<> (
halt
SCMPDS )
proof
(
InsCode (
halt
SCMPDS ))
=
0 by
COMPOS_1: 70;
hence thesis by
SCMPDS_2: 17;
end;
theorem ::
SCMPDS_6:18
for a be
Int_position, k1,k2 be
Integer holds ((a,k1)
>=0_goto k2)
<> (
halt
SCMPDS )
proof
(
InsCode (
halt
SCMPDS ))
=
0 by
COMPOS_1: 70;
hence thesis by
SCMPDS_2: 18;
end;
definition
let k1 be
Integer;
::
SCMPDS_6:def1
func
Goto k1 ->
Program of
SCMPDS equals (
Load (
goto k1));
coherence ;
end
registration
let n be
Nat;
cluster (
goto (n
+ 1)) ->
No-StopCode;
correctness by
SCMPDS_5: 21;
cluster (
goto (
- (n
+ 1))) ->
No-StopCode;
correctness by
SCMPDS_5: 21;
end
registration
let n be
Nat;
cluster (
Goto (n
+ 1)) ->
halt-free;
correctness ;
cluster (
Goto (
- (n
+ 1))) ->
halt-free;
correctness ;
end
theorem ::
SCMPDS_6:19
Th10:
0
in (
dom (
Goto k1)) & ((
Goto k1)
.
0 )
= (
goto k1) by
AFINSQ_1: 65;
begin
definition
let I be
Program of
SCMPDS ;
let s be
State of
SCMPDS ;
let P;
::
SCMPDS_6:def2
pred I
is_closed_on s,P means for k be
Nat holds (
IC (
Comput ((P
+* (
stop I)),(
Initialize s),k)))
in (
dom (
stop I));
::
SCMPDS_6:def3
pred I
is_halting_on s,P means (P
+* (
stop I))
halts_on (
Initialize s);
end
theorem ::
SCMPDS_6:20
Th11: for I be
Program of
SCMPDS holds I is
paraclosed iff for s be
State of
SCMPDS , P holds I
is_closed_on (s,P)
proof
let I be
Program of
SCMPDS ;
thus I is
paraclosed implies for s be
State of
SCMPDS , P holds I
is_closed_on (s,P) by
FUNCT_4: 25;
assume
A1: for s be
State of
SCMPDS , P holds I
is_closed_on (s,P);
let s be
0
-started
State of
SCMPDS ;
let k be
Nat;
let P;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
assume (
stop I)
c= P;
then
A3: P
= (P
+* (
stop I)) by
FUNCT_4: 98;
I
is_closed_on (s,P) by
A1;
hence (
IC (
Comput (P,s,k)))
in (
dom (
stop I)) by
A2,
A3;
end;
theorem ::
SCMPDS_6:21
Th12: for I be
Program of
SCMPDS holds I is
parahalting iff for s be
State of
SCMPDS , P holds I
is_halting_on (s,P)
proof
let I be
Program of
SCMPDS ;
thus I is
parahalting implies for s be
State of
SCMPDS , P holds I
is_halting_on (s,P) by
FUNCT_4: 25;
assume
A1: for s be
State of
SCMPDS , P holds I
is_halting_on (s,P);
let s be
0
-started
State of
SCMPDS , P;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
assume (
stop I)
c= P;
then
A3: P
= (P
+* (
stop I)) by
FUNCT_4: 98;
I
is_halting_on (s,P) by
A1;
hence P
halts_on s by
A3,
A2;
end;
theorem ::
SCMPDS_6:22
Th13: for s1,s2 be
State of
SCMPDS , I be
Program of
SCMPDS st (
DataPart s1)
= (
DataPart s2) holds I
is_closed_on (s1,P1) implies I
is_closed_on (s2,P2)
proof
let s1,s2 be
State of
SCMPDS , I be
Program of
SCMPDS ;
set pI = (
stop I), S1 = (
Initialize s1), S2 = (
Initialize s2), E1 = (P1
+* pI), E2 = (P2
+* pI);
assume
A1: (
DataPart s1)
= (
DataPart s2);
A2: (
Comput (E2,S2,
0 ))
= (
Initialize s2) by
EXTPRO_1: 2;
A3: (
Comput (E1,S1,
0 ))
= (
Initialize s1) by
EXTPRO_1: 2;
then
A4: (
DataPart (
Comput (E1,S1,
0 )))
= (
DataPart s1) by
MEMSTR_0: 45
.= (
DataPart (
Comput (E2,S2,
0 ))) by
A1,
A2,
MEMSTR_0: 45;
defpred
P[
Nat] means (
IC (
Comput (E1,S1,$1)))
= (
IC (
Comput (E2,S2,$1))) & (
CurInstr (E1,(
Comput (E1,S1,$1))))
= (
CurInstr (E2,(
Comput (E2,S2,$1)))) & (
DataPart (
Comput (E1,S1,$1)))
= (
DataPart (
Comput (E2,S2,$1)));
A5:
0
in (
dom pI) by
COMPOS_1: 36;
assume
A6: I
is_closed_on (s1,P1);
A7:
now
let k be
Nat;
A8: (
Comput (E2,S2,(k
+ 1)))
= (
Following (E2,(
Comput (E2,S2,k)))) by
EXTPRO_1: 3;
assume
A9:
P[k];
then
A10: for a holds ((
Comput (E1,S1,k))
. a)
= ((
Comput (E2,S2,k))
. a) by
SCMPDS_4: 8;
pI
c= (P2
+* pI) by
FUNCT_4: 25;
then
A11: pI
c= E2;
A12: (
IC (
Comput (E1,S1,(k
+ 1))))
in (
dom pI) by
A6;
A13: (
Comput (E1,S1,(k
+ 1)))
= (
Following (E1,(
Comput (E1,S1,k)))) by
EXTPRO_1: 3;
(
Comput (E1,S1,k))
= (
Comput (E2,S2,k)) by
A9,
A10,
SCMPDS_4: 2;
then
A14: (
Comput (E1,S1,(k
+ 1)))
= (
Comput (E2,S2,(k
+ 1))) by
A9,
A8,
A13;
then
A15: (
Comput (E1,S1,(k
+ 1)))
= (
Comput (E2,S2,(k
+ 1)));
A16: (
IC (
Comput (E1,S1,(k
+ 1))))
= (
IC (
Comput (E2,S2,(k
+ 1)))) by
A14;
A17: (E1
/. (
IC (
Comput (E1,S1,(k
+ 1)))))
= (E1
. (
IC (
Comput (E1,S1,(k
+ 1))))) by
PBOOLE: 143;
A18: (E2
/. (
IC (
Comput (E2,S2,(k
+ 1)))))
= (E2
. (
IC (
Comput (E2,S2,(k
+ 1))))) by
PBOOLE: 143;
pI
c= (P1
+* pI) by
FUNCT_4: 25;
then pI
c= E1;
then (
CurInstr (E1,(
Comput (E1,S1,(k
+ 1)))))
= (pI
. (
IC (
Comput (E1,S1,(k
+ 1))))) by
A12,
A17,
GRFUNC_1: 2
.= (
CurInstr (E2,(
Comput (E2,S2,(k
+ 1))))) by
A11,
A16,
A12,
A18,
GRFUNC_1: 2;
hence
P[(k
+ 1)] by
A15;
end;
A19: (
IC (
Comput (E2,S2,
0 )))
= (
IC S2) by
A2
.=
0 by
MEMSTR_0:def 11;
A20: (E1
/. (
IC (
Comput (E1,S1,
0 ))))
= (E1
. (
IC (
Comput (E1,S1,
0 )))) by
PBOOLE: 143;
A21: (E2
/. (
IC (
Comput (E2,S2,
0 ))))
= (E2
. (
IC (
Comput (E2,S2,
0 )))) by
PBOOLE: 143;
A22: (
IC (
Comput (E1,S1,
0 )))
= (
IC S1) by
A3
.=
0 by
MEMSTR_0:def 11;
then (
CurInstr (E1,(
Comput (E1,S1,
0 ))))
= (pI
.
0 ) by
A5,
A20,
FUNCT_4: 13
.= (
CurInstr (E2,(
Comput (E2,S2,
0 )))) by
A19,
A5,
A21,
FUNCT_4: 13;
then
A23:
P[
0 ] by
A22,
A19,
A4;
now
let k be
Nat;
A24: for k be
Nat holds
P[k] from
NAT_1:sch 2(
A23,
A7);
(
IC (
Comput (E1,S1,k)))
in (
dom pI) by
A6;
hence (
IC (
Comput (E2,S2,k)))
in (
dom pI) by
A24;
end;
hence thesis;
end;
theorem ::
SCMPDS_6:23
for s1,s2 be
State of
SCMPDS , I be
Program of
SCMPDS st (
DataPart s1)
= (
DataPart s2) holds I
is_closed_on (s1,P1) & I
is_halting_on (s1,P1) implies I
is_closed_on (s2,P2) & I
is_halting_on (s2,P2)
proof
let s1,s2 be
State of
SCMPDS , I be
Program of
SCMPDS ;
set pI = (
stop I), S1 = (
Initialize s1), S2 = (
Initialize s2), E1 = (P1
+* pI), E2 = (P2
+* pI);
defpred
P[
Nat] means (
IC (
Comput (E1,S1,$1)))
= (
IC (
Comput (E2,S2,$1))) & (
CurInstr (E1,(
Comput (E1,S1,$1))))
= (
CurInstr (E2,(
Comput (E2,S2,$1)))) & (
DataPart (
Comput (E1,S1,$1)))
= (
DataPart (
Comput (E2,S2,$1)));
A1: (
Comput (E1,S1,
0 ))
= (
Initialize s1) by
EXTPRO_1: 2;
A2: (
Comput (E2,S2,
0 ))
= (
Initialize s2) by
EXTPRO_1: 2;
assume (
DataPart s1)
= (
DataPart s2);
then
A3: (
Comput (E1,S1,
0 ))
= (
Comput (E2,S2,
0 )) by
A1,
A2,
MEMSTR_0: 80;
A4:
0
in (
dom pI) by
COMPOS_1: 36;
assume
A5: I
is_closed_on (s1,P1);
A6:
now
let k be
Nat;
A7: (
Comput (E2,S2,(k
+ 1)))
= (
Following (E2,(
Comput (E2,S2,k)))) by
EXTPRO_1: 3;
assume
A8:
P[k];
then for a holds ((
Comput (E1,S1,k))
. a)
= ((
Comput (E2,S2,k))
. a) by
SCMPDS_4: 8;
then
A9: (
Comput (E1,S1,k))
= (
Comput (E2,S2,k)) by
A8,
SCMPDS_4: 2;
A10: pI
c= E2 by
FUNCT_4: 25;
A11: (
IC (
Comput (E1,S1,(k
+ 1))))
in (
dom pI) by
A5;
(
Comput (E1,S1,(k
+ 1)))
= (
Following (E1,(
Comput (E1,S1,k)))) by
EXTPRO_1: 3;
then
A12: (
Comput (E1,S1,(k
+ 1)))
= (
Comput (E2,S2,(k
+ 1))) by
A8,
A9,
A7;
then
A13: (
IC (
Comput (E1,S1,(k
+ 1))))
= (
IC (
Comput (E2,S2,(k
+ 1))));
A14: (E1
/. (
IC (
Comput (E1,S1,(k
+ 1)))))
= (E1
. (
IC (
Comput (E1,S1,(k
+ 1))))) by
PBOOLE: 143;
A15: (E2
/. (
IC (
Comput (E2,S2,(k
+ 1)))))
= (E2
. (
IC (
Comput (E2,S2,(k
+ 1))))) by
PBOOLE: 143;
pI
c= E1 by
FUNCT_4: 25;
then (
CurInstr (E1,(
Comput (E1,S1,(k
+ 1)))))
= (pI
. (
IC (
Comput (E1,S1,(k
+ 1))))) by
A11,
A14,
GRFUNC_1: 2
.= (
CurInstr (E2,(
Comput (E2,S2,(k
+ 1))))) by
A10,
A13,
A11,
A15,
GRFUNC_1: 2;
hence
P[(k
+ 1)] by
A12;
end;
A16: (
IC (
Comput (E2,S2,
0 )))
= (
IC S2) by
A2
.=
0 by
MEMSTR_0:def 11;
assume I
is_halting_on (s1,P1);
then (P1
+* pI)
halts_on (
Initialize s1);
then
consider m such that
A17: (
CurInstr (E1,(
Comput (E1,S1,m))))
= (
halt
SCMPDS );
A18: (E1
/. (
IC (
Comput (E1,S1,
0 ))))
= (E1
. (
IC (
Comput (E1,S1,
0 )))) by
PBOOLE: 143;
A19: (E2
/. (
IC (
Comput (E2,S2,
0 ))))
= (E2
. (
IC (
Comput (E2,S2,
0 )))) by
PBOOLE: 143;
(
IC (
Comput (E1,S1,
0 )))
= (
IC S1) by
A1
.=
0 by
MEMSTR_0:def 11;
then (
CurInstr (E1,(
Comput (E1,S1,
0 ))))
= (pI
.
0 ) by
A4,
A18,
FUNCT_4: 13
.= (
CurInstr (E2,(
Comput (E2,S2,
0 )))) by
A16,
A4,
A19,
FUNCT_4: 13;
then
A20:
P[
0 ] by
A3;
now
let k be
Nat;
A21: for k be
Nat holds
P[k] from
NAT_1:sch 2(
A20,
A6);
(
IC (
Comput (E1,S1,k)))
in (
dom pI) by
A5;
hence (
IC (
Comput (E2,S2,k)))
in (
dom pI) by
A21;
end;
hence I
is_closed_on (s2,P2);
for k be
Nat holds
P[k] from
NAT_1:sch 2(
A20,
A6);
then (
CurInstr (E2,(
Comput (E2,S2,m))))
= (
halt
SCMPDS ) by
A17;
then (P2
+* pI)
halts_on (
Initialize s2) by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:24
for s be
State of
SCMPDS , I,J be
Program of
SCMPDS holds I
is_closed_on (s,P) iff I
is_closed_on ((
Initialize s),(P
+* J))
proof
let s be
State of
SCMPDS , I,J be
Program of
SCMPDS ;
(
DataPart s)
= (
DataPart (
Initialize s)) by
MEMSTR_0: 45;
hence thesis by
Th13;
end;
theorem ::
SCMPDS_6:25
Th16: for s be
0
-started
State of
SCMPDS holds for I,J be
Program of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (for k be
Nat st k
<= (
LifeSpan ((P
+* (
stop I)),s)) holds (
IC (
Comput ((P
+* (
stop I)),s,k)))
= (
IC (
Comput ((P
+* (
stop (I
';' J))),s,k)))) & (
DataPart (
Comput ((P
+* (
stop I)),s,(
LifeSpan ((P
+* (
stop I)),s)))))
= (
DataPart (
Comput ((P
+* (
stop (I
';' J))),s,(
LifeSpan ((P
+* (
stop I)),s)))))
proof
let s be
0
-started
State of
SCMPDS ;
let I,J be
Program of
SCMPDS ;
assume
A1: I
is_closed_on (s,P);
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
set pI = (
stop I), pIJ = (
stop (I
';' J)), P1 = (P
+* pI);
defpred
X[
Nat] means $1
<= (
LifeSpan (P1,s)) implies (
Comput (P1,s,$1))
= (
Comput ((P1
+* pIJ),s,$1));
assume I
is_halting_on (s,P);
then
A3: P1
halts_on s by
A2;
A4: for m st
X[m] holds
X[(m
+ 1)]
proof
set JS = (J
';' (
Stop
SCMPDS )), E2 = (P1
+* pIJ);
let m;
assume
A5: m
<= (
LifeSpan (P1,s)) implies (
Comput (P1,s,m))
= (
Comput ((P1
+* pIJ),s,m));
A6: pIJ
c= E2 by
FUNCT_4: 25;
A7: (
Comput (P1,s,(m
+ 1)))
= (
Following (P1,(
Comput (P1,s,m)))) by
EXTPRO_1: 3;
A8: pIJ
= ((I
';' J)
';' (
Stop
SCMPDS ))
.= (I
';' JS) by
AFINSQ_1: 27;
(
dom (I
';' JS))
= (
dom (I
+* (
Shift (JS,(
card I)))))
.= ((
dom I)
\/ (
dom (
Shift (JS,(
card I))))) by
FUNCT_4:def 1;
then
A9: (
dom I)
c= (
dom (I
';' JS)) by
XBOOLE_1: 7;
A10: (
Comput (E2,s,(m
+ 1)))
= (
Following (E2,(
Comput (E2,s,m)))) by
EXTPRO_1: 3;
A11: (
IC (
Comput (P1,s,m)))
in (
dom pI) by
A1,
A2;
A12: (P1
/. (
IC (
Comput (P1,s,m))))
= (P1
. (
IC (
Comput (P1,s,m)))) by
PBOOLE: 143;
pI
c= P1 by
FUNCT_4: 25;
then
A13: (
CurInstr (P1,(
Comput (P1,s,m))))
= (pI
. (
IC (
Comput (P1,s,m)))) by
A11,
A12,
GRFUNC_1: 2;
assume
A14: (m
+ 1)
<= (
LifeSpan (P1,s));
then m
< (
LifeSpan (P1,s)) by
NAT_1: 13;
then (pI
. (
IC (
Comput (P1,s,m))))
<> (
halt
SCMPDS ) by
A3,
A13,
EXTPRO_1:def 15;
then
A15: (
IC (
Comput (P1,s,m)))
in (
dom I) by
A11,
COMPOS_1: 51;
A16: (E2
/. (
IC (
Comput (E2,s,m))))
= (E2
. (
IC (
Comput (E2,s,m)))) by
PBOOLE: 143;
(
CurInstr (P1,(
Comput (P1,s,m))))
= ((I
';' (
Stop
SCMPDS ))
. (
IC (
Comput (P1,s,m)))) by
A13
.= (I
. (
IC (
Comput (P1,s,m)))) by
A15,
AFINSQ_1:def 3
.= (pIJ
. (
IC (
Comput (P1,s,m)))) by
A15,
A8,
AFINSQ_1:def 3
.= (E2
. (
IC (
Comput (P1,s,m)))) by
A6,
A15,
A8,
A9,
GRFUNC_1: 2
.= (
CurInstr (E2,(
Comput (E2,s,m)))) by
A5,
A14,
A16,
NAT_1: 13;
hence thesis by
A5,
A14,
A7,
A10,
NAT_1: 13;
end;
(
Comput (P1,s,
0 ))
= s & (
Comput ((P1
+* pIJ),s,
0 ))
= s by
EXTPRO_1: 2;
then
A17:
X[
0 ];
A18: for m holds
X[m] from
NAT_1:sch 2(
A17,
A4);
A19: ((P
+* pI)
+* pIJ)
= (P
+* (pI
+* pIJ)) by
FUNCT_4: 14
.= (P
+* pIJ) by
SCMPDS_5: 14;
thus for k be
Nat st k
<= (
LifeSpan (P1,s)) holds (
IC (
Comput (P1,s,k)))
= (
IC (
Comput ((P
+* pIJ),s,k))) by
A18,
A19;
(
Comput ((P
+* (
stop I)),s,(
LifeSpan ((P
+* (
stop I)),s))))
= (
Comput ((P
+* (
stop (I
';' J))),s,(
LifeSpan ((P
+* (
stop I)),s)))) by
A19,
A18;
hence (
DataPart (
Comput ((P
+* (
stop I)),s,(
LifeSpan ((P
+* (
stop I)),s)))))
= (
DataPart (
Comput ((P
+* (
stop (I
';' J))),s,(
LifeSpan ((P
+* (
stop I)),s)))));
end;
theorem ::
SCMPDS_6:26
Th17: for I be
Program of
SCMPDS , k be
Nat st I
is_closed_on (s,P) & I
is_halting_on (s,P) & k
< (
LifeSpan ((P
+* (
stop I)),(
Initialize s))) holds (
IC (
Comput ((P
+* (
stop I)),(
Initialize s),k)))
in (
dom I)
proof
let I be
Program of
SCMPDS , k be
Nat;
set ss = (
Initialize s), PP = (P
+* (
stop I)), m = (
LifeSpan (PP,ss)), Sp = (
Stop
SCMPDS );
assume that
A1: I
is_closed_on (s,P) and
A2: I
is_halting_on (s,P) and
A3: k
< m;
set Sk = (
Comput (PP,ss,k)), Ik = (
IC Sk);
A4: Ik
in (
dom (
stop I)) by
A1;
reconsider n = Ik as
Nat;
A5: (
stop I)
c= PP by
FUNCT_4: 25;
A6: PP
halts_on ss by
A2;
A7:
now
A8: (PP
/. (
IC Sk))
= (PP
. (
IC Sk)) by
PBOOLE: 143;
assume
A9: n
= (
card I);
(
CurInstr (PP,Sk))
= (PP
. Ik) by
A8
.= ((
stop I)
. (
0
+ n)) by
A4,
A5,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A9,
Lm1,
Lm2,
AFINSQ_1:def 3;
hence contradiction by
A3,
A6,
EXTPRO_1:def 15;
end;
(
card (
stop I))
= ((
card I)
+ 1) by
COMPOS_1: 55;
then n
< ((
card I)
+ 1) by
A4,
AFINSQ_1: 66;
then n
<= (
card I) by
INT_1: 7;
then n
< (
card I) by
A7,
XXREAL_0: 1;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:27
Th18: for I,J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS , k be
Nat st I
is_closed_on (s,P) & I
is_halting_on (s,P) & k
< (
LifeSpan ((P
+* (
stop I)),s)) holds (
CurInstr ((P
+* (
stop I)),(
Comput ((P
+* (
stop I)),s,k))))
= (
CurInstr ((P
+* (
stop (I
';' J))),(
Comput ((P
+* (
stop (I
';' J))),s,k))))
proof
let I,J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS , k be
Nat;
set P1 = (P
+* (
stop I)), P2 = (P
+* (
stop (I
';' J)));
set s3 = (
Comput (P1,s,k)), s4 = (
Comput (P2,s,k)), P3 = P1, P4 = P2, SS = (
Stop
SCMPDS );
assume that
A1: I
is_closed_on (s,P) and
A2: I
is_halting_on (s,P) & k
< (
LifeSpan (P1,s));
A3: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A4: (
IC s3)
in (
dom I) by
A1,
A2,
Th17;
A5: (
IC s3)
= (
IC s4) by
A1,
A2,
Th16;
A6: (
IC s3)
in (
dom (
stop I)) by
A1,
A3;
A7: (
dom (
stop I))
c= (
dom (
stop (I
';' J))) & (
stop (I
';' J))
c= P2 by
FUNCT_4: 25,
SCMPDS_5: 13;
A8: (
stop I)
c= P1 by
FUNCT_4: 25;
A9: (
stop (I
';' J))
= ((I
';' J)
';' SS)
.= (I
';' (J
';' SS)) by
AFINSQ_1: 27;
A10: (P3
/. (
IC s3))
= (P3
. (
IC s3)) by
PBOOLE: 143;
A11: (P4
/. (
IC s4))
= (P4
. (
IC s4)) by
PBOOLE: 143;
thus (
CurInstr (P1,s3))
= (P1
. (
IC s3)) by
A10
.= ((
stop I)
. (
IC s3)) by
A6,
A8,
GRFUNC_1: 2
.= (I
. (
IC s3)) by
A4,
AFINSQ_1:def 3
.= ((
stop (I
';' J))
. (
IC s3)) by
A4,
A9,
AFINSQ_1:def 3
.= (P2
. (
IC s4)) by
A5,
A6,
A7,
GRFUNC_1: 2
.= (
CurInstr (P2,s4)) by
A11;
end;
theorem ::
SCMPDS_6:28
Th19: for I be
halt-free
Program of
SCMPDS , s be
State of
SCMPDS , k be
Nat st I
is_closed_on (s,P) & I
is_halting_on (s,P) & k
< (
LifeSpan ((P
+* (
stop I)),(
Initialize s))) holds (
CurInstr ((P
+* (
stop I)),(
Comput ((P
+* (
stop I)),(
Initialize s),k))))
<> (
halt
SCMPDS )
proof
let I be
halt-free
Program of
SCMPDS , s be
State of
SCMPDS , k be
Nat;
set ss = (
Initialize s), PP = (P
+* (
stop I)), s2 = (
Comput (PP,ss,k)), P2 = PP;
assume I
is_closed_on (s,P) & I
is_halting_on (s,P) & k
< (
LifeSpan (PP,ss));
then
A1: (
IC s2)
in (
dom I) by
Th17;
A2: (P2
/. (
IC s2))
= (P2
. (
IC s2)) by
PBOOLE: 143;
A3: (
stop I)
c= PP by
FUNCT_4: 25;
I
c= (
stop I) by
AFINSQ_1: 74;
then I
c= PP by
A3,
XBOOLE_1: 1;
then (
CurInstr (P2,s2))
= (I
. (
IC s2)) by
A1,
A2,
GRFUNC_1: 2;
hence thesis by
A1,
COMPOS_1:def 27;
end;
theorem ::
SCMPDS_6:29
Th20: for I be
halt-free
Program of
SCMPDS , s be
State of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IC (
Comput ((P
+* (
stop I)),(
Initialize s),(
LifeSpan ((P
+* (
stop I)),(
Initialize s))))))
= (
card I)
proof
let I be
halt-free
Program of
SCMPDS , s be
State of
SCMPDS ;
set s1 = (
Initialize s), P1 = (P
+* (
stop I));
assume that
A1: I
is_closed_on (s,P) and
A2: I
is_halting_on (s,P);
set Css = (
Comput (P1,s1,(
LifeSpan (P1,s1))));
reconsider n = (
IC Css) as
Nat;
A3: (
stop I)
c= P1 by
FUNCT_4: 25;
I
c= (
stop I) by
AFINSQ_1: 74;
then
A4: I
c= P1 by
A3,
XBOOLE_1: 1;
A5: P1
halts_on s1 by
A2;
now
A6: (P1
/. (
IC Css))
= (P1
. (
IC Css)) by
PBOOLE: 143;
assume
A7: (
IC Css)
in (
dom I);
then (I
. (
IC Css))
= (P1
. (
IC Css)) by
A4,
GRFUNC_1: 2
.= (
CurInstr (P1,Css)) by
A6
.= (
halt
SCMPDS ) by
A5,
EXTPRO_1:def 15;
hence contradiction by
A7,
COMPOS_1:def 27;
end;
then
A8: n
>= (
card I) by
AFINSQ_1: 66;
A9: (
card (
stop I))
= ((
card I)
+ 1) by
COMPOS_1: 55;
(
IC Css)
in (
dom (
stop I)) by
A1;
then n
< ((
card I)
+ 1) by
A9,
AFINSQ_1: 66;
then n
<= (
card I) by
NAT_1: 13;
then (
IC (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
= (
card I) by
A8,
XXREAL_0: 1;
hence thesis;
end;
Lm3: for I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IC (
Comput ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),s,((
LifeSpan ((P
+* (
stop I)),s))
+ 1))))
= (((
card I)
+ (
card J))
+ 1) & (
DataPart (
Comput ((P
+* (
stop I)),s,(
LifeSpan ((P
+* (
stop I)),s)))))
= (
DataPart (
Comput ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),s,((
LifeSpan ((P
+* (
stop I)),s))
+ 1)))) & (for k be
Element of
NAT st k
<= (
LifeSpan ((P
+* (
stop I)),s)) holds (
CurInstr ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),(
Comput ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),s,k))))
<> (
halt
SCMPDS )) & (
IC (
Comput ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),s,(
LifeSpan ((P
+* (
stop I)),s)))))
= (
card I) & (P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J)))
halts_on s & (
LifeSpan ((P
+* (
stop ((I
';' (
Goto ((
card J)
+ 1)))
';' J))),s))
= ((
LifeSpan ((P
+* (
stop I)),s))
+ 1)
proof
let I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS ;
assume
A1: I
is_closed_on (s,P);
set G1 = (
Goto ((
card J)
+ 1)), SS = (
Stop
SCMPDS ), J2 = ((G1
';' J)
';' SS), IJ = ((I
';' G1)
';' J), pJ = (
stop IJ), s1 = s, P1 = (P
+* (
stop I)), s2 = s;
reconsider P2 = (P
+* pJ) as
Instruction-Sequence of
SCMPDS ;
assume
A2: I
is_halting_on (s,P);
A3: (
Initialize s)
= s by
MEMSTR_0: 44;
set sm = (
Comput (P2,s2,(
LifeSpan (P1,s1))));
A4: IJ
= (I
';' (G1
';' J)) by
AFINSQ_1: 27;
then
A5: (
IC (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
= (
IC sm) by
A1,
A2,
Th16;
then
A6: (
IC sm)
= (
card I) by
A1,
A2,
Th20,
A3;
A7:
0
in (
dom G1) by
Th10;
A8: (J2
.
0 )
= ((G1
';' (J
';' SS))
.
0 ) by
AFINSQ_1: 27
.= (G1
.
0 ) by
A7,
AFINSQ_1:def 3
.= (
goto ((
card J)
+ 1));
(
card (G1
';' J))
= ((
card G1)
+ (
card J)) by
AFINSQ_1: 17
.= (1
+ (
card J)) by
COMPOS_1: 54;
then
A9: (J2
. ((
card J)
+ 1))
= (J2
. (
0
+ (
card (G1
';' J))))
.= (
halt
SCMPDS ) by
Lm1,
Lm2,
AFINSQ_1:def 3;
A10: (
card J2)
= (
card (G1
';' (J
';' SS))) by
AFINSQ_1: 27
.= ((
card G1)
+ (
card (J
';' SS))) by
AFINSQ_1: 17
.= (1
+ (
card (J
';' SS))) by
COMPOS_1: 54;
then
A11:
0
in (
dom J2) by
AFINSQ_1: 66;
A12: pJ
= (((I
';' G1)
';' J)
';' SS)
.= ((I
';' (G1
';' J))
';' SS) by
AFINSQ_1: 27
.= (I
';' J2) by
AFINSQ_1: 27;
then
A13: (
card pJ)
= ((
card I)
+ (
card J2)) by
AFINSQ_1: 17;
0
< (
card J2);
then ((
card I)
+
0 )
< (
card pJ) by
A13,
XREAL_1: 6;
then
A14: (
card I)
in (
dom pJ) by
AFINSQ_1: 66;
A15: (
card SS)
= 1 by
AFINSQ_1: 34;
A16: (
card J2)
= (1
+ ((
card J)
+ (
card SS))) by
A10,
AFINSQ_1: 17
.= ((
card J)
+ (1
+ (
card SS)));
then ((
card J)
+ 1)
< (
card J2) by
A15,
XREAL_1: 6;
then
A17: ((
card J)
+ 1)
in (
dom J2) by
AFINSQ_1: 66;
(
card pJ)
= ((((
card I)
+ (
card J))
+ 1)
+ 1) by
A13,
A16,
A15;
then (((
card I)
+ (
card J))
+ 1)
< (
card pJ) by
NAT_1: 13;
then
A18: (((
card I)
+ (
card J))
+ 1)
in (
dom pJ) by
AFINSQ_1: 66;
A19: (P2
/. (
IC (
Comput (P2,s2,(
LifeSpan (P1,s1))))))
= (P2
. (
IC (
Comput (P2,s2,(
LifeSpan (P1,s1)))))) by
PBOOLE: 143;
A20: (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P1,s1))))))
= (P2
. (
card I)) by
A1,
A2,
A5,
Th20,
A19,
A3
.= (P2
. (
card I))
.= (pJ
. (
card I)) by
A14,
FUNCT_4: 13
.= ((I
';' J2)
. (
0
+ (
card I))) by
A12
.= (
goto ((
card J)
+ 1)) by
A11,
A8,
AFINSQ_1:def 3;
A21:
now
let a;
thus ((
Comput (P2,s2,((
LifeSpan (P1,s1))
+ 1)))
. a)
= ((
Following (P2,sm))
. a) by
EXTPRO_1: 3
.= (sm
. a) by
A20,
SCMPDS_2: 54;
end;
A22: (P2
/. (
IC (
Comput (P2,s2,((
LifeSpan (P1,s1))
+ 1)))))
= (P2
. (
IC (
Comput (P2,s2,((
LifeSpan (P1,s1))
+ 1))))) by
PBOOLE: 143;
thus (
IC (
Comput ((P
+* pJ),s2,((
LifeSpan (P1,s1))
+ 1))))
= (
IC (
Following (P2,sm))) by
EXTPRO_1: 3
.= (
ICplusConst (sm,((
card J)
+ 1))) by
A20,
SCMPDS_2: 54
.= ((
card I)
+ ((
card J)
+ 1)) by
A6,
Th4
.= (((
card I)
+ (
card J))
+ 1);
then
A23: (
CurInstr (P2,(
Comput (P2,s2,((
LifeSpan (P1,s1))
+ 1)))))
= (P2
. (((
card I)
+ (
card J))
+ 1)) by
A22
.= (pJ
. (((
card I)
+ (
card J))
+ 1)) by
A18,
FUNCT_4: 13
.= ((I
';' J2)
. ((
card I)
+ ((
card J)
+ 1))) by
A12
.= (
halt
SCMPDS ) by
A17,
A9,
AFINSQ_1:def 3;
(
DataPart (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
= (
DataPart sm) by
A1,
A2,
A4,
Th16;
hence (
DataPart (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
= (
DataPart (
Comput ((P
+* pJ),s2,((
LifeSpan (P1,s1))
+ 1)))) by
A21,
SCMPDS_4: 8;
now
let k be
Element of
NAT ;
assume
A25: k
<= (
LifeSpan (P1,s1));
per cases ;
suppose
A26: k
< (
LifeSpan (P1,s1));
then (
CurInstr (P1,(
Comput (P1,s1,k))))
<> (
halt
SCMPDS ) by
A1,
A2,
Th19,
A3;
hence (
CurInstr ((P
+* pJ),(
Comput ((P
+* pJ),s2,k))))
<> (
halt
SCMPDS ) by
A1,
A2,
A4,
A26,
Th18;
end;
suppose (
LifeSpan (P1,s1))
<= k;
then k
= (
LifeSpan (P1,s1)) by
A25,
XXREAL_0: 1;
hence (
CurInstr ((P
+* pJ),(
Comput ((P
+* pJ),s2,k))))
<> (
halt
SCMPDS ) by
A20;
end;
end;
thus (
IC (
Comput ((P
+* pJ),s2,(
LifeSpan (P1,s1)))))
= (
card I) by
A1,
A2,
A5,
Th20,
A3;
thus
A27: (P
+* pJ)
halts_on s2 by
A23,
EXTPRO_1: 29;
now
let k be
Nat;
A28: k
in
NAT by
ORDINAL1:def 12;
assume (
CurInstr (P2,(
Comput (P2,s2,k))))
= (
halt
SCMPDS );
then (
LifeSpan (P1,s1))
< k by
A24,
A28;
hence ((
LifeSpan (P1,s1))
+ 1)
<= k by
INT_1: 7;
end;
hence thesis by
A23,
A27,
EXTPRO_1:def 15;
end;
theorem ::
SCMPDS_6:30
Th21: for I,J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds ((I
';' (
Goto ((
card J)
+ 1)))
';' J)
is_halting_on (s,P) & ((I
';' (
Goto ((
card J)
+ 1)))
';' J)
is_closed_on (s,P)
proof
let I,J be
Program of
SCMPDS , s be
0
-started
State of
SCMPDS ;
set G = (
Goto ((
card J)
+ 1)), IJ = ((I
';' G)
';' J), J2 = (I
';' (G
';' J)), pJ = (
stop J2), pI = (
stop I), P1 = (P
+* pI), P2 = (P
+* pJ), m = (
LifeSpan (P1,s)), SS = (
Stop
SCMPDS ), s3 = (
Comput (P1,s,m)), s4 = (
Comput (P2,s,m)), P3 = P1, P4 = P2;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
A2: IJ
= (I
';' (G
';' J)) by
AFINSQ_1: 27;
A3: I
c= (
stop I) by
AFINSQ_1: 74;
pI
c= P3 by
FUNCT_4: 25;
then
A4: I
c= P3 by
A3,
XBOOLE_1: 1;
A5: (
dom pI)
c= (
dom pJ) by
SCMPDS_5: 13;
set JS = ((G
';' J)
';' SS);
reconsider n = (
IC s3) as
Nat;
A6: (
card pI)
= ((
card I)
+ 1) by
COMPOS_1: 55;
assume
A7: I
is_closed_on (s,P);
then (
IC s3)
in (
dom pI) by
A1;
then n
< ((
card I)
+ 1) by
A6,
AFINSQ_1: 66;
then
A8: n
<= (
card I) by
INT_1: 7;
A9: pJ
c= P2 by
FUNCT_4: 25;
A10: pJ
= ((I
';' (G
';' J))
';' SS)
.= (I
';' JS) by
AFINSQ_1: 27;
then I
c= pJ by
AFINSQ_1: 74;
then I
c= P2 by
A9,
XBOOLE_1: 1;
then
A11: I
c= P4;
assume
A12: I
is_halting_on (s,P);
then
A13: P1
halts_on s by
A1;
A14: (P3
/. (
IC s3))
= (P3
. (
IC s3)) by
PBOOLE: 143;
A15: (P4
/. (
IC s4))
= (P4
. (
IC s4)) by
PBOOLE: 143;
per cases ;
suppose (
IC s3)
<> (
card I);
then n
< (
card I) by
A8,
XXREAL_0: 1;
then
A16: (
IC s3)
in (
dom I) by
AFINSQ_1: 66;
A17: (
halt
SCMPDS )
= (
CurInstr (P1,s3)) by
A13,
EXTPRO_1:def 15
.= (I
. (
IC s3)) by
A4,
A16,
A14,
GRFUNC_1: 2
.= (P4
. (
IC s3)) by
A11,
A16,
GRFUNC_1: 2
.= (
CurInstr (P4,s4)) by
A7,
A12,
Th16,
A15;
then
A18: P2
halts_on s by
EXTPRO_1: 29;
hence IJ
is_halting_on (s,P) by
A2,
A1;
now
let k be
Nat;
set C1k = (
IC (
Comput (P1,s,k))), C2k = (
IC (
Comput (P2,s,k)));
per cases ;
suppose
A19: k
<= m;
C1k
in (
dom pI) by
A7,
A1;
then C1k
in (
dom pJ) by
A5;
hence C2k
in (
dom pJ) by
A7,
A12,
A19,
Th16;
end;
suppose
A20: k
> m;
set m2 = (
LifeSpan (P2,s));
A21: m2
<= m by
A17,
A18,
EXTPRO_1:def 15;
then C2k
= (
IC (
Comput (P2,s,m2))) by
A18,
A20,
EXTPRO_1: 25,
XXREAL_0: 2
.= (
IC (
Comput (P1,s,m2))) by
A7,
A12,
A21,
Th16;
then C2k
in (
dom pI) by
A7,
A1;
hence C2k
in (
dom pJ) by
A5;
end;
end;
hence thesis by
A2,
A1;
end;
suppose
A22: (
IC s3)
= (
card I);
then
A23: (
IC s4)
= (
card I) by
A7,
A12,
Th16;
A24:
0
in (
dom G) by
Th10;
A25: (
card (
Stop
SCMPDS ))
= 1 by
AFINSQ_1: 34;
A26: JS
= (G
';' (J
';' SS)) by
AFINSQ_1: 27;
then
A27: (
card JS)
= ((
card G)
+ (
card (J
';' SS))) by
AFINSQ_1: 17
.= (1
+ (
card (J
';' SS))) by
COMPOS_1: 54
.= (((
card J)
+ 1)
+ 1) by
A25,
AFINSQ_1: 17;
then
A28:
0
in (
dom JS) by
AFINSQ_1: 66;
((
card J)
+ 1)
< (
card JS) by
A27,
NAT_1: 13;
then
A29: ((
card J)
+ 1)
in (
dom JS) by
AFINSQ_1: 66;
(
card pJ)
= ((
card I)
+ ((
card J)
+ (1
+ 1))) by
A10,
A27,
AFINSQ_1: 17
.= ((((
card I)
+ (
card J))
+ 1)
+ 1);
then
A30: (((
card I)
+ (
card J))
+ 1)
< (
card pJ) by
NAT_1: 13;
then
A31: (((
card I)
+ (
card J))
+ 1)
in (
dom pJ) by
AFINSQ_1: 66;
A32: (P4
/. (
IC s4))
= (P4
. (
IC s4)) by
PBOOLE: 143;
A33: (
card pJ)
= ((
card I)
+ (
card JS)) by
A10,
AFINSQ_1: 17;
0
< (
card JS);
then ((
card I)
+
0 )
< (
card pJ) by
XREAL_1: 6,
A33;
then
A34: (
card I)
in (
dom pJ) by
AFINSQ_1: 66;
A35: (
CurInstr (P4,s4))
= (P4
. (
card I)) by
A7,
A12,
A22,
Th16,
A32
.= (P2
. (
card I))
.= ((I
';' JS)
. (
0
+ (
card I))) by
A10,
A9,
A34,
GRFUNC_1: 2
.= (JS
.
0 ) by
A28,
AFINSQ_1:def 3
.= (G
.
0 ) by
A26,
A24,
AFINSQ_1:def 3
.= (
goto ((
card J)
+ 1));
(
card (G
';' J))
= ((
card G)
+ (
card J)) by
AFINSQ_1: 17
.= (1
+ (
card J)) by
COMPOS_1: 54;
then
A36: (JS
. ((
card J)
+ 1))
= (JS
. (
0
+ (
card (G
';' J))))
.= (
halt
SCMPDS ) by
Lm1,
Lm2,
AFINSQ_1:def 3;
A37: (P2
/. (
IC (
Comput (P2,s,(m
+ 1)))))
= (P2
. (
IC (
Comput (P2,s,(m
+ 1))))) by
PBOOLE: 143;
A38: (
IC (
Comput (P2,s,(m
+ 1))))
= (
IC (
Following (P2,s4))) by
EXTPRO_1: 3
.= (
ICplusConst (s4,((
card J)
+ 1))) by
A35,
SCMPDS_2: 54
.= ((
card I)
+ ((
card J)
+ 1)) by
A23,
Th4
.= (((
card I)
+ (
card J))
+ 1);
then
A39: (
CurInstr (P2,(
Comput (P2,s,(m
+ 1)))))
= (P2
. (((
card I)
+ (
card J))
+ 1)) by
A37
.= ((I
';' JS)
. ((
card I)
+ ((
card J)
+ 1))) by
A10,
A9,
A31,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A29,
A36,
AFINSQ_1:def 3;
then
A40: P2
halts_on s by
EXTPRO_1: 29;
hence IJ
is_halting_on (s,P) by
A2,
A1;
now
let k be
Nat;
set C1k = (
IC (
Comput (P1,s,k))), C2k = (
IC (
Comput (P2,s,k)));
per cases ;
suppose
A41: k
<= m;
C1k
in (
dom pI) by
A7,
A1;
then C1k
in (
dom pJ) by
A5;
hence C2k
in (
dom pJ) by
A7,
A12,
A41,
Th16;
end;
suppose
A42: k
> m;
set m2 = (
LifeSpan (P2,s));
A43: m2
<= (m
+ 1) by
A39,
A40,
EXTPRO_1:def 15;
k
>= (m
+ 1) by
A42,
INT_1: 7;
then C2k
= (
IC (
Comput (P2,s,m2))) by
A40,
A43,
EXTPRO_1: 25,
XXREAL_0: 2
.= (((
card I)
+ (
card J))
+ 1) by
A38,
A40,
A43,
EXTPRO_1: 25;
hence C2k
in (
dom pJ) by
A30,
AFINSQ_1: 66;
end;
end;
hence thesis by
A2,
A1;
end;
end;
theorem ::
SCMPDS_6:31
Th22: for s1 be
0
-started
State of
SCMPDS holds for I be
shiftable
Program of
SCMPDS st (
stop I)
c= P1 & I
is_closed_on (s1,P1) holds for n be
Nat st (
Shift ((
stop I),n))
c= P2 & (
IC s2)
= n & (
DataPart s1)
= (
DataPart s2) holds for i be
Nat holds ((
IC (
Comput (P1,s1,i)))
+ n)
= (
IC (
Comput (P2,s2,i))) & (
CurInstr (P1,(
Comput (P1,s1,i))))
= (
CurInstr (P2,(
Comput (P2,s2,i)))) & (
DataPart (
Comput (P1,s1,i)))
= (
DataPart (
Comput (P2,s2,i)))
proof
let s1 be
0
-started
State of
SCMPDS ;
let I be
shiftable
Program of
SCMPDS ;
set SI = (
stop I);
assume that
A1: SI
c= P1 and
A2: I
is_closed_on (s1,P1);
A3: (
Initialize s1)
= s1 by
MEMSTR_0: 44;
let n be
Nat;
defpred
P[
Nat] means ((
IC (
Comput (P1,s1,$1)))
+ n)
= (
IC (
Comput (P2,s2,$1))) & (
CurInstr (P1,(
Comput (P1,s1,$1))))
= (
CurInstr (P2,(
Comput (P2,s2,$1)))) & (
DataPart (
Comput (P1,s1,$1)))
= (
DataPart (
Comput (P2,s2,$1)));
assume that
A4: (
Shift (SI,n))
c= P2 and
A5: (
IC s2)
= n and
A6: (
DataPart s1)
= (
DataPart s2);
let i be
Nat;
A7: (
DataPart (
Comput (P1,s1,
0 )))
= (
DataPart s2) by
A6,
EXTPRO_1: 2
.= (
DataPart (
Comput (P2,s2,
0 ))) by
EXTPRO_1: 2;
A8:
0
in (
dom SI) by
COMPOS_1: 36;
then
A9: (
0
+ n)
in (
dom (
Shift (SI,n))) by
VALUED_1: 24;
A10: (P1
. (
IC s1))
= (P1
. (
IC (
Initialize s1))) by
A3
.= (P1
.
0 ) by
MEMSTR_0:def 11
.= (SI
.
0 ) by
A1,
A8,
GRFUNC_1: 2;
A11: P1
= (P1
+* SI) by
A1,
FUNCT_4: 98;
A12: for k be
Nat st
P[k] holds
P[(k
+ 1)]
proof
let k be
Nat;
assume
A13:
P[k];
reconsider m = (
IC (
Comput (P1,s1,k))) as
Nat;
set i = (
CurInstr (P1,(
Comput (P1,s1,k))));
A14: (
Comput (P1,s1,(k
+ 1)))
= (
Following (P1,(
Comput (P1,s1,k)))) by
EXTPRO_1: 3;
reconsider l = (
IC (
Comput (P1,s1,(k
+ 1)))) as
Nat;
A15: (
IC (
Comput (P1,s1,(k
+ 1))))
in (
dom SI) by
A2,
A11,
A3;
then
A16: (l
+ n)
in (
dom (
Shift (SI,n))) by
VALUED_1: 24;
A17: (
Comput (P2,s2,(k
+ 1)))
= (
Following (P2,(
Comput (P2,s2,k)))) by
EXTPRO_1: 3;
A18: (
IC (
Comput (P1,s1,k)))
in (
dom SI) by
A2,
A11,
A3;
A19: (P1
/. (
IC (
Comput (P1,s1,k))))
= (P1
. (
IC (
Comput (P1,s1,k)))) by
PBOOLE: 143;
A20: i
= (P1
. (
IC (
Comput (P1,s1,k)))) by
A19
.= (SI
. (
IC (
Comput (P1,s1,k)))) by
A1,
A18,
GRFUNC_1: 2;
then
A21: (
InsCode i)
<> 1 & (
InsCode i)
<> 3 by
A18,
SCMPDS_4:def 9;
A22: i
valid_at m by
A18,
A20,
SCMPDS_4:def 9;
hence
A23: ((
IC (
Comput (P1,s1,(k
+ 1))))
+ n)
= (
IC (
Comput (P2,s2,(k
+ 1)))) by
A13,
A14,
A17,
A21,
SCMPDS_4: 28;
A24: (P1
/. (
IC (
Comput (P1,s1,(k
+ 1)))))
= (P1
. (
IC (
Comput (P1,s1,(k
+ 1))))) by
PBOOLE: 143;
A25: (P2
/. (
IC (
Comput (P2,s2,(k
+ 1)))))
= (P2
. (
IC (
Comput (P2,s2,(k
+ 1))))) by
PBOOLE: 143;
(
CurInstr (P1,(
Comput (P1,s1,(k
+ 1)))))
= (P1
. l) by
A24
.= (SI
. l) by
A1,
A15,
GRFUNC_1: 2
.= (SI
. l);
hence (
CurInstr (P1,(
Comput (P1,s1,(k
+ 1)))))
= ((
Shift (SI,n))
. (
IC (
Comput (P2,s2,(k
+ 1))))) by
A23,
A15,
VALUED_1:def 12
.= (P2
. (
IC (
Comput (P2,s2,(k
+ 1))))) by
A4,
A23,
A16,
GRFUNC_1: 2
.= (
CurInstr (P2,(
Comput (P2,s2,(k
+ 1))))) by
A25;
thus thesis by
A13,
A14,
A17,
A21,
A22,
SCMPDS_4: 28;
end;
A26: (
IC (
Comput (P1,s1,
0 )))
= (
IC s1) by
EXTPRO_1: 2
.= (
IC (
Initialize s1)) by
A3
.=
0 by
MEMSTR_0:def 11;
A27: (
Comput (P1,s1,
0 ))
= s1 by
EXTPRO_1: 2;
A28: (
Comput (P2,s2,
0 ))
= s2 by
EXTPRO_1: 2;
A29: (P2
/. (
IC s2))
= (P2
. (
IC s2)) by
PBOOLE: 143;
A30: (P1
/. (
IC s1))
= (P1
. (
IC s1)) by
PBOOLE: 143;
(
CurInstr (P1,(
Comput (P1,s1,
0 ))))
= (
CurInstr (P1,s1)) by
A27
.= ((
Shift (SI,n))
. (
0
+ n)) by
A8,
A10,
A30,
VALUED_1:def 12
.= (
CurInstr (P2,s2)) by
A4,
A5,
A9,
A29,
GRFUNC_1: 2
.= (
CurInstr (P2,(
Comput (P2,s2,
0 )))) by
A28;
then
A31:
P[
0 ] by
A5,
A26,
A7,
EXTPRO_1: 2;
for k be
Nat holds
P[k] from
NAT_1:sch 2(
A31,
A12);
hence thesis;
end;
theorem ::
SCMPDS_6:32
Th23: for s be
0
-started
State of
SCMPDS , I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IC (
IExec (((I
';' (
Goto ((
card J)
+ 1)))
';' J),P,s)))
= (((
card I)
+ (
card J))
+ 1)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS ;
set m = ((
LifeSpan ((P
+* (
stop I)),(
Initialize s)))
+ 1), G = (
Goto ((
card J)
+ 1)), P2 = (P
+* (
stop ((I
';' G)
';' J)));
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume
A2: I
is_closed_on (s,P) & I
is_halting_on (s,P);
then P2
halts_on s & (
LifeSpan (P2,s))
= m by
Lm3,
A1;
then (
IC (
Result (P2,s)))
= (
IC (
Comput (P2,s,m))) by
EXTPRO_1: 23
.= (((
card I)
+ (
card J))
+ 1) by
A2,
Lm3,
A1;
hence thesis;
end;
theorem ::
SCMPDS_6:33
Th24: for s be
0
-started
State of
SCMPDS , I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec (((I
';' (
Goto ((
card J)
+ 1)))
';' J),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 1),
SCMPDS )))
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
Program of
SCMPDS , J be
Program of
SCMPDS ;
set P1 = (P
+* (
stop I)), m = ((
LifeSpan (P1,s))
+ 1), G = (
Goto ((
card J)
+ 1)), P2 = (P
+* (
stop ((I
';' G)
';' J))), l = (((
card I)
+ (
card J))
+ 1);
assume that
A1: I
is_closed_on (s,P) and
A2: I
is_halting_on (s,P);
(
Initialize s)
= s by
MEMSTR_0: 44;
then
A3: P1
halts_on s by
A2;
P2
halts_on s & (
LifeSpan (P2,s))
= m by
A1,
A2,
Lm3;
then
A4: (
Result (P2,s))
= (
Comput (P2,s,m)) by
EXTPRO_1: 23;
then (
DataPart (
Result (P2,s)))
= (
DataPart (
Comput (P1,s,(
LifeSpan (P1,s))))) by
A1,
A2,
Lm3;
then
A5: (
DataPart (
Result (P2,s)))
= (
DataPart (
Result (P1,s))) by
A3,
EXTPRO_1: 23
.= (
DataPart ((
Result (P1,s))
+* (
Start-At (l,
SCMPDS )))) by
MEMSTR_0: 79;
(
IC (
Result (P2,s)))
= l by
A1,
A2,
A4,
Lm3
.= (
IC ((
Result (P1,s))
+* (
Start-At (l,
SCMPDS )))) by
FUNCT_4: 113;
then
A6: (
Result (P2,s))
= ((
Result (P1,s))
+* (
Start-At (l,
SCMPDS ))) by
A5,
MEMSTR_0: 78;
thus (
IExec (((I
';' G)
';' J),P,s))
= (
Result (P2,s))
.= ((
Result (P1,s))
+* (
Start-At (l,
SCMPDS ))) by
A6
.= ((
IExec (I,P,s))
+* (
Start-At (l,
SCMPDS )));
end;
theorem ::
SCMPDS_6:34
Th25: for s be
State of
SCMPDS , I be
halt-free
Program of
SCMPDS st I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IC (
IExec (I,P,(
Initialize s))))
= (
card I)
proof
let s be
State of
SCMPDS , I be
halt-free
Program of
SCMPDS ;
set s1 = (
Initialize s), P1 = (P
+* (
stop I));
assume that
A1: I
is_closed_on (s,P) and
A2: I
is_halting_on (s,P);
A3: P1
halts_on s1 by
A2;
thus (
IC (
IExec (I,P,(
Initialize s))))
= (
IC (
Result (P1,s1)))
.= (
IC (
Comput (P1,s1,(
LifeSpan (P1,s1))))) by
A3,
EXTPRO_1: 23
.= (
card I) by
A1,
A2,
Th20;
end;
begin
definition
let a be
Int_position, k be
Integer;
let I,J be
Program of
SCMPDS ;
::
SCMPDS_6:def4
func
if=0 (a,k,I,J) ->
Program of
SCMPDS equals (((((a,k)
<>0_goto ((
card I)
+ 2))
';' I)
';' (
Goto ((
card J)
+ 1)))
';' J);
coherence ;
::
SCMPDS_6:def5
func
if>0 (a,k,I,J) ->
Program of
SCMPDS equals (((((a,k)
<=0_goto ((
card I)
+ 2))
';' I)
';' (
Goto ((
card J)
+ 1)))
';' J);
coherence ;
::
SCMPDS_6:def6
func
if<0 (a,k,I,J) ->
Program of
SCMPDS equals (((((a,k)
>=0_goto ((
card I)
+ 2))
';' I)
';' (
Goto ((
card J)
+ 1)))
';' J);
coherence ;
end
definition
let a be
Int_position, k be
Integer;
let I be
Program of
SCMPDS ;
::
SCMPDS_6:def7
func
if=0 (a,k,I) ->
Program of
SCMPDS equals (((a,k)
<>0_goto ((
card I)
+ 1))
';' I);
coherence ;
::
SCMPDS_6:def8
func
if<>0 (a,k,I) ->
Program of
SCMPDS equals ((((a,k)
<>0_goto 2)
';' (
goto ((
card I)
+ 1)))
';' I);
coherence ;
::
SCMPDS_6:def9
func
if>0 (a,k,I) ->
Program of
SCMPDS equals (((a,k)
<=0_goto ((
card I)
+ 1))
';' I);
coherence ;
::
SCMPDS_6:def10
func
if<=0 (a,k,I) ->
Program of
SCMPDS equals ((((a,k)
<=0_goto 2)
';' (
goto ((
card I)
+ 1)))
';' I);
coherence ;
::
SCMPDS_6:def11
func
if<0 (a,k,I) ->
Program of
SCMPDS equals (((a,k)
>=0_goto ((
card I)
+ 1))
';' I);
coherence ;
::
SCMPDS_6:def12
func
if>=0 (a,k,I) ->
Program of
SCMPDS equals ((((a,k)
>=0_goto 2)
';' (
goto ((
card I)
+ 1)))
';' I);
coherence ;
end
Lm4: (
card (((i
';' I)
';' (
Goto n))
';' J))
= (((
card I)
+ (
card J))
+ 2)
proof
set G = (
Goto n);
thus (
card (((i
';' I)
';' G)
';' J))
= ((
card ((i
';' I)
';' G))
+ (
card J)) by
AFINSQ_1: 17
.= (((
card (i
';' I))
+ (
card G))
+ (
card J)) by
AFINSQ_1: 17
.= (((
card (i
';' I))
+ 1)
+ (
card J)) by
COMPOS_1: 54
.= ((((
card I)
+ 1)
+ 1)
+ (
card J)) by
Th1
.= (((
card I)
+ (
card J))
+ 2);
end;
begin
theorem ::
SCMPDS_6:35
(
card (
if=0 (a,k1,I,J)))
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
theorem ::
SCMPDS_6:36
0
in (
dom (
if=0 (a,k1,I,J))) & 1
in (
dom (
if=0 (a,k1,I,J)))
proof
set ci = (
card (
if=0 (a,k1,I,J)));
ci
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
then 2
<= ci by
NAT_1: 12;
then 1
< ci by
XXREAL_0: 2;
hence thesis by
AFINSQ_1: 66;
end;
Lm5: ((((i
';' I)
';' J)
';' K)
.
0 )
= i
proof
A1:
0
in (
dom (
Load i)) by
COMPOS_1: 50;
(((i
';' I)
';' J)
';' K)
= ((i
';' (I
';' J))
';' K) by
SCMPDS_4: 14
.= (i
';' ((I
';' J)
';' K)) by
SCMPDS_4: 14
.= ((
Load i)
';' ((I
';' J)
';' K));
hence ((((i
';' I)
';' J)
';' K)
.
0 )
= ((
Load i)
.
0 ) by
A1,
AFINSQ_1:def 3
.= i;
end;
theorem ::
SCMPDS_6:37
((
if=0 (a,k1,I,J))
.
0 )
= ((a,k1)
<>0_goto ((
card I)
+ 2)) by
Lm5;
Lm6: (
Shift ((
stop I),1))
c= (P
+* (
stop (i
';' I)))
proof
set pI = (
stop I), iI = (i
';' I), piI = (
stop iI), P3 = (P
+* piI);
(
card (
Load i))
= 1 & iI
= ((
Load i)
';' I) by
COMPOS_1: 54;
then
A1: (
Shift (pI,1))
c= piI by
Th5;
piI
c= P3 by
FUNCT_4: 25;
then (
Shift (pI,1))
c= P3 by
A1,
XBOOLE_1: 1;
hence thesis;
end;
Lm7: (
Shift ((
stop I),2))
c= (P
+* (
stop ((i
';' j)
';' I)))
proof
set pI = (
stop I), pjI = (
stop ((i
';' j)
';' I)), P3 = (P
+* pjI);
(
card (i
';' j))
= (
card ((
Load i)
';' (
Load j)))
.= ((
card (
Load i))
+ (
card (
Load j))) by
AFINSQ_1: 17
.= (1
+ (
card (
Load j))) by
COMPOS_1: 54
.= (1
+ 1) by
COMPOS_1: 54;
then
A1: (
Shift (pI,2))
c= pjI by
Th5;
pjI
c= P3 by
FUNCT_4: 25;
then (
Shift (pI,2))
c= P3 by
A1,
XBOOLE_1: 1;
hence thesis;
end;
theorem ::
SCMPDS_6:38
Th29: for s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if=0 (a,k1,I,J))
is_closed_on (s,P) & (
if=0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set i = ((a,k1)
<>0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if=0 (a,k1,I,J)), pIF = (
stop IF), pI2 = (
stop I2), P2 = (P
+* pI2), P3 = (P
+* pIF), s4 = (
Comput (P3,s,1)), P4 = P3;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A3: (
IC s)
=
0 by
MEMSTR_0: 47;
A4: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A5: (
Shift (pI2,1))
c= P4 by
Lm6;
A6: (
Comput (P3,s,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s)) by
EXTPRO_1: 2
.= (
Exec (i,s)) by
A4,
Th3,
A2;
for a holds (s
. a)
= (s4
. a) by
A6,
SCMPDS_2: 55;
then
A7: (
DataPart s)
= (
DataPart s4) by
SCMPDS_4: 8;
(s
. (
DataLoc ((s
. a),k1)))
= (s
. b)
.=
0 by
A1;
then
A8: (
IC s4)
= ((
IC s)
+ 1) by
A6,
SCMPDS_2: 55
.= (
0
+ 1) by
A3;
A9:
0
in (
dom pIF) by
COMPOS_1: 36;
assume
A10: I
is_closed_on (s,P);
assume
A11: I
is_halting_on (s,P);
then I2
is_halting_on (s,P) by
A10,
Th21;
then
A12: P2
halts_on s by
A2;
A13: I2
is_closed_on (s,P) by
A10,
A11,
Th21;
then
A14: (
Start-At (
0 ,
SCMPDS ))
c= s & I2
is_closed_on (s,P2) by
A2,
FUNCT_4: 25;
A15: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I2)
+ 1)
+ 1) by
A4,
Th1;
A16: (
stop I2)
c= P2 by
FUNCT_4: 25;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A17: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s,k1))) as
Nat;
A18: (
card pIF)
= ((
card pI2)
+ 1) by
A15,
COMPOS_1: 55;
m
in (
dom pI2) by
A13,
A2;
then m
< (
card pI2) by
AFINSQ_1: 66;
then
A19: (m
+ 1)
< (
card pIF) by
A18,
XREAL_1: 6;
(
IC (
Comput (P3,s,k)))
= (
IC (
Comput (P3,s4,k1))) by
A17,
EXTPRO_1: 4
.= (m
+ 1) by
A14,
A5,
A8,
A7,
Th22,
A16;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A19,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A9,
A3,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P) by
A2;
A20: (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),(
LifeSpan (P2,s)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))))
= (
CurInstr (P4,(
Comput (P4,s4,(
LifeSpan (P2,s)))))) by
A20
.= (
CurInstr (P2,(
Comput (P2,s,(
LifeSpan (P2,s)))))) by
A14,
A5,
A8,
A7,
Th22,
A16
.= (
halt
SCMPDS ) by
A12,
EXTPRO_1:def 15;
then P3
halts_on s by
EXTPRO_1: 29;
hence thesis by
A2;
end;
theorem ::
SCMPDS_6:39
Th30: for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
if=0 (a,k1,I,J))
is_closed_on (s,P) & (
if=0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = (
Initialize s), P1 = (P
+* pJ), IF = (
if=0 (a,k1,I,J)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<>0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
A1: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
<>
0 ;
then
A6: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A2,
A4,
SCMPDS_2: 55
.= (
0
+ ((
card I)
+ 2)) by
A5,
Th4;
assume
A7: J
is_closed_on (s,P);
then
A8: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
FUNCT_4: 25;
A9: pIF
c= P3 by
FUNCT_4: 25;
A10: (
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
then
A11: (
Shift (pJ,((
card I)
+ 2)))
c= P4 by
A9,
XBOOLE_1: 1;
assume J
is_halting_on (s,P);
then
A12: P1
halts_on s1;
for a holds (s1
. a)
= (s4
. a) by
A2,
SCMPDS_2: 55;
then
A13: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
A14: pJ
c= P1 by
FUNCT_4: 25;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A15: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P1,s1,k1))) as
Nat;
m
in (
dom pJ) by
A7;
then m
< (
card pJ) by
AFINSQ_1: 66;
then
A16: (m
+ ((
card I)
+ 2))
< ((
card pJ)
+ ((
card I)
+ 2)) by
XREAL_1: 6;
A17: (
card pJ)
= ((
card J)
+ 1) by
COMPOS_1: 55;
A18: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= ((((
card I)
+ 2)
+ (
card J))
+ 1) by
A10,
AFINSQ_1: 17
.= (((
card I)
+ 2)
+ (
card pJ)) by
A17;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A15,
EXTPRO_1: 4
.= (m
+ ((
card I)
+ 2)) by
A8,
A13,
A11,
A6,
Th22,
A14;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A18,
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A5,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
A19: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P4,(
Comput (P4,s4,(
LifeSpan (P1,s1)))))) by
A19
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A8,
A13,
A11,
A6,
Th22,
A14
.= (
halt
SCMPDS ) by
A12,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:40
Th31: for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if=0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set i = ((a,k1)
<>0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if=0 (a,k1,I,J)), pI2 = (
stop I2), s2 = s, s3 = s, P2 = (P
+* pI2), P3 = (P
+* (
stop IF)), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A3: (
IC s3)
=
0 by
MEMSTR_0: 47;
A4: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A5: (
Shift (pI2,1))
c= P4 by
Lm6;
A6: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A4,
Th3,
A2;
(s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b)
.=
0 by
A1;
then
A7: (
IC s4)
= ((
IC s3)
+ 1) by
A6,
SCMPDS_2: 55
.= (
0
+ 1) by
A3;
for a holds (s2
. a)
= (s4
. a) by
A6,
SCMPDS_2: 55;
then
A8: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
assume
A9: I
is_closed_on (s,P);
assume
A10: I
is_halting_on (s,P);
then I2
is_halting_on (s,P) by
A9,
Th21;
then
A11: P2
halts_on s2 by
A2;
I2
is_closed_on (s,P) by
A9,
A10,
Th21;
then
A12: (
Start-At (
0 ,
SCMPDS ))
c= s2 & I2
is_closed_on (s2,P2) by
A2,
FUNCT_4: 25;
A13: (
stop I2)
c= P2 by
FUNCT_4: 25;
A14: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A15: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A14
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A12,
A5,
A7,
A8,
Th22,
A13
.= (
halt
SCMPDS ) by
A11,
EXTPRO_1:def 15;
then
A16: P3
halts_on s3 by
EXTPRO_1: 29;
A17: (
CurInstr (P3,s3))
= i by
A4,
Th3,
A2;
now
let l be
Nat;
assume
A18: l
< ((
LifeSpan (P2,s2))
+ 1);
A19: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A19;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A17;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A20: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A21: n
< (
LifeSpan (P2,s2)) by
A18,
A20,
XREAL_1: 6;
assume
A22: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A23: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A12,
A5,
A7,
A8,
Th22,
A13
.= (
halt
SCMPDS ) by
A20,
A22,
A23;
hence contradiction by
A11,
A21,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A24: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A15,
A16,
EXTPRO_1:def 15;
A25: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A11,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A12,
A5,
A7,
A8,
Th22,
A13
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A16,
A24,
EXTPRO_1: 23;
A26:
now
let x be
object;
A27: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A28: x
in (
dom (
IExec (IF,P,s)));
per cases by
A28,
SCMPDS_4: 6;
suppose
A29: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A30: not x
in (
dom SAl) by
A27,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A25,
A29,
SCMPDS_4: 8
.= ((
IExec (I2,P,s))
. x)
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A30,
FUNCT_4: 11;
end;
suppose
A31: x
= (
IC
SCMPDS );
A32: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I2,P,s)))
.= (((
card I)
+ (
card J))
+ 1) by
A9,
A10,
Th23;
A33: x
in (
dom SAl) by
A27,
A31,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A16,
A24,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A31,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 1) by
A12,
A5,
A7,
A8,
Th22,
A13
.= ((
IC (
Result (P2,s2)))
+ 1) by
A11,
EXTPRO_1: 23
.= (
IC (
Start-At (((((
card I)
+ (
card J))
+ 1)
+ 1),
SCMPDS ))) by
A32,
FUNCOP_1: 72
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A31,
A33,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,s)))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I2,P,s))
+* SAl)) by
PARTFUN1:def 2;
hence (
IExec (IF,P,s))
= ((
IExec (I2,P,s))
+* SAl) by
A26,
FUNCT_1: 2
.= (((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 1),
SCMPDS )))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A9,
A10,
Th24
.= ((
IExec (I,P,s))
+* SAl) by
MEMSTR_0: 36;
end;
theorem ::
SCMPDS_6:41
Th32: for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
IExec ((
if=0 (a,k1,I,J)),P,(
Initialize s)))
= ((
IExec (J,P,(
Initialize s)))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = (
Initialize s), P1 = (P
+* pJ), P2 = (P
+* pJ), IF = (
if=0 (a,k1,I,J)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<>0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
A1: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
<>
0 ;
then
A6: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A2,
A4,
SCMPDS_2: 55
.= (
0
+ ((
card I)
+ 2)) by
A5,
Th4;
for a holds (s1
. a)
= (s4
. a) by
A2,
SCMPDS_2: 55;
then
A7: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
(
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then
A8: (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
pIF
c= P3 by
FUNCT_4: 25;
then (
Shift (pJ,((
card I)
+ 2)))
c= P3 by
A8,
XBOOLE_1: 1;
then
A9: (
Shift (pJ,((
card I)
+ 2)))
c= P4;
assume
A10: J
is_closed_on (s,P);
then
A11: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
FUNCT_4: 25;
A12: (
stop J)
c= P1 by
FUNCT_4: 25;
assume
A13: J
is_halting_on (s,P);
then
A14: P1
halts_on s1;
A15: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
A16: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P1,s1)))))) by
A15
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A14,
EXTPRO_1:def 15;
then
A17: P3
halts_on s3 by
EXTPRO_1: 29;
A18: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume
A19: l
< ((
LifeSpan (P1,s1))
+ 1);
A20: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A20;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A18;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A21: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A22: n
< (
LifeSpan (P1,s1)) by
A19,
A21,
XREAL_1: 6;
assume
A23: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A24: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P1,(
Comput (P1,s1,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A21,
A23,
A24;
hence contradiction by
A14,
A22,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P1,s1))
+ 1)
<= l;
then
A25: (
LifeSpan (P3,s3))
= ((
LifeSpan (P1,s1))
+ 1) by
A16,
A17,
EXTPRO_1:def 15;
A26: (
DataPart (
Result (P1,s1)))
= (
DataPart (
Comput (P1,s1,(
LifeSpan (P1,s1))))) by
A14,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A17,
A25,
EXTPRO_1: 23;
A27:
now
let x be
object;
A28: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A29: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A29,
SCMPDS_4: 6;
suppose
A30: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A31: not x
in (
dom SAl) by
A28,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P1,s1))
. x) by
A26,
A30,
SCMPDS_4: 8
.= ((
IExec (J,P,(
Initialize s)))
. x)
.= (((
IExec (J,P,(
Initialize s)))
+* SAl)
. x) by
A31,
FUNCT_4: 11;
end;
suppose
A32: x
= (
IC
SCMPDS );
A33: (
IC (
Result (P1,s1)))
= (
IC (
IExec (J,P,(
Initialize s))))
.= (
card J) by
A10,
A13,
Th25;
A34: x
in (
dom SAl) by
A28,
A32,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
. x) by
A17,
A25,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A32,
EXTPRO_1: 4
.= ((
IC (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
+ ((
card I)
+ 2)) by
A11,
A9,
A6,
A7,
Th22,
A12
.= ((
IC (
Result (P1,s1)))
+ ((
card I)
+ 2)) by
A14,
EXTPRO_1: 23
.= (
IC (
Start-At (((
card J)
+ ((
card I)
+ 2)),
SCMPDS ))) by
A33,
FUNCOP_1: 72
.= (((
IExec (J,P,(
Initialize s)))
+* SAl)
. x) by
A32,
A34,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (J,P,(
Initialize s)))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A27,
FUNCT_1: 2;
end;
registration
let I,J be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if=0 (a,k1,I,J)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<>0_goto ((
card I)
+ 2)), G = (
Goto ((
card J)
+ 1));
set IF = (
if=0 (a,k1,I,J));
reconsider IJ = ((I
';' G)
';' J) as
shiftable
Program of
SCMPDS ;
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume (
stop IF)
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
A4: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then IF
is_halting_on (s,P) by
A4,
Th29;
hence P
halts_on s by
A1,
A2;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then IF
is_halting_on (s,P) by
A3,
Th30;
hence P
halts_on s by
A1,
A2;
end;
end;
end
registration
let I,J be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if=0 (a,k1,I,J)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:42
for s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if=0 (a,k1,I,J)),P,s)))
= (((
card I)
+ (
card J))
+ 2)
proof
let s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if=0 (a,k1,I,J));
A1: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
A2: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A3: (
Initialize s)
= s by
MEMSTR_0: 44;
hereby
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A2,
Th31;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then (
IExec (IF,P,s))
= ((
IExec (J,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th32,
A3;
hence thesis by
FUNCT_4: 113;
end;
end;
end;
theorem ::
SCMPDS_6:43
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 holds ((
IExec ((
if=0 (a,k1,I,J)),P,s))
. b)
= ((
IExec (I,P,s))
. b)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if=0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th31;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:44
for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 holds ((
IExec ((
if=0 (a,k1,I,J)),P,(
Initialize s)))
. b)
= ((
IExec (J,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if=0 (a,k1,I,J)),P,(
Initialize s)))
= ((
IExec (J,P,(
Initialize s)))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th32;
hence thesis by
A2,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:45
(
card (
if=0 (a,k1,I)))
= ((
card I)
+ 1) by
Th1;
theorem ::
SCMPDS_6:46
0
in (
dom (
if=0 (a,k1,I)))
proof
set ci = (
card (
if=0 (a,k1,I)));
ci
= ((
card I)
+ 1) by
Th1;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:47
((
if=0 (a,k1,I))
.
0 )
= ((a,k1)
<>0_goto ((
card I)
+ 1)) by
Th2;
theorem ::
SCMPDS_6:48
Th39: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if=0 (a,k1,I))
is_closed_on (s,P) & (
if=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set i = ((a,k1)
<>0_goto ((
card I)
+ 1));
set IF = (
if=0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
for a holds (s2
. a)
= (s4
. a) by
A4,
SCMPDS_2: 55;
then
A5: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.=
0 by
A1,
A3,
FUNCT_4: 11;
then
A6: (
IC s4)
= ((
IC s3)
+ 1) by
A4,
SCMPDS_2: 55
.= (
0
+ 1) by
A2;
assume
A7: I
is_closed_on (s,P);
then
A8: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A9: P2
halts_on s2;
A10:
0
in (
dom pIF) by
COMPOS_1: 36;
A11: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
A12: (
stop I)
c= P2 by
FUNCT_4: 25;
A13: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I)
+ 1)
+ 1) by
Th1;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= ((
card pI)
+ 1) by
A13,
COMPOS_1: 55;
m
in (
dom pI) by
A7;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 1)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 1) by
A8,
A11,
A6,
A5,
Th22,
A12;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A10,
A2,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A8,
A11,
A6,
A5,
Th22,
A12
.= (
halt
SCMPDS ) by
A9,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:49
Th40: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 holds (
if=0 (a,k1,I))
is_closed_on (s,P) & (
if=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
<>
0 ;
set i = ((a,k1)
<>0_goto ((
card I)
+ 1));
set IF = (
if=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A1,
A4,
SCMPDS_2: 55
.= (
0
+ ((
card I)
+ 1)) by
A2,
Th4;
A6: (
card IF)
= ((
card I)
+ 1) by
Th1;
then
A7: ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
A8: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
pIF
c= P3 by
FUNCT_4: 25;
then pIF
c= P4;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A7,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A6,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A8;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then (1
+
0 )
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A7,
A5,
A9,
EXTPRO_1: 5;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A2,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A9,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:50
Th41: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set i = ((a,k1)
<>0_goto ((
card I)
+ 1));
set IF = (
if=0 (a,k1,I)), pI = (
stop I), pIF = (
stop IF), s2 = (
Initialize s), P2 = (P
+* pI), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.=
0 by
A1,
A3,
FUNCT_4: 11;
then
A5: (
IC s4)
= ((
IC s3)
+ 1) by
A4,
SCMPDS_2: 55
.= (
0
+ 1) by
A2;
for a holds (s2
. a)
= (s4
. a) by
A4,
SCMPDS_2: 55;
then
A6: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume
A7: I
is_closed_on (s,P);
then
A8: I
is_closed_on (s2,P2);
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A9: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
A10: (
stop I)
c= P2 by
FUNCT_4: 25;
assume
A11: I
is_halting_on (s,P);
then
A12: P2
halts_on s2;
A13: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A14: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A13
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
halt
SCMPDS ) by
A12,
EXTPRO_1:def 15;
then
A15: P3
halts_on s3 by
EXTPRO_1: 29;
A16: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
assume
A17: l
< ((
LifeSpan (P2,s2))
+ 1);
A18: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A18;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A16;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A19: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A20: n
< (
LifeSpan (P2,s2)) by
A17,
A19,
XREAL_1: 6;
assume
A21: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A22: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
halt
SCMPDS ) by
A19,
A21,
A22;
hence contradiction by
A12,
A20,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A23: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A14,
A15,
EXTPRO_1:def 15;
A24: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A12,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A15,
A23,
EXTPRO_1: 23;
A25:
now
let x be
object;
A26: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A27: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A27,
SCMPDS_4: 6;
suppose
A28: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A29: not x
in (
dom SAl) by
A26,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A24,
A28,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A29,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
A31: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A7,
A11,
Th25;
A32: x
in (
dom SAl) by
A26,
A30,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A15,
A23,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A30,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 1) by
A8,
A9,
A5,
A6,
Th22,
A10
.= ((
IC (
Result (P2,s2)))
+ 1) by
A12,
EXTPRO_1: 23
.= (
IC (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A31,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
A32,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A25,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:51
Th42: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 holds (
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<>0_goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A1: (
IC s3)
=
0 by
MEMSTR_0: 47;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
assume (s
. b)
<>
0 ;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A4,
A3,
SCMPDS_2: 55
.= (
0
+ ((
card I)
+ 1)) by
A1,
Th4;
A6: pIF
c= P4 by
FUNCT_4: 25;
A7: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A8: (
card IF)
= ((
card I)
+ 1) by
Th1;
then ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A6,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A8,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A7;
then
A10: P3
halts_on s3 by
EXTPRO_1: 29;
A11: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
A12: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
assume l
< 1;
then l
< (1
+
0 );
then l
=
0 by
NAT_1: 13;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A12;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A11;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 1
<= l;
then (
LifeSpan (P3,s3))
= 1 by
A9,
A10,
EXTPRO_1:def 15;
then
A13: s4
= (
Result (P3,s3)) by
A10,
EXTPRO_1: 23;
A14:
now
A15: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A16: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A16,
SCMPDS_4: 6;
suppose
A17: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A18: not x
in (
dom SAl) by
A15,
TARSKI:def 1;
A19: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A17,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s4
. x) by
A13
.= (s3
. x) by
A4,
A17,
SCMPDS_2: 55
.= (s
. x) by
A19,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A18,
FUNCT_4: 11;
end;
suppose
A20: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 1) by
A5,
A13
.= ((s
+* SAl)
. x) by
A20,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A14,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if=0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<>0_goto ((
card I)
+ 1));
set IF = (
if=0 (a,k1,I));
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume (
stop IF)
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then IF
is_halting_on (s,P) by
A3,
Th39;
hence P
halts_on s by
A1,
A2;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then IF
is_halting_on (s,P) by
Th40;
hence P
halts_on s by
A1,
A2;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if=0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:52
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if=0 (a,k1,I)),P,s)))
= ((
card I)
+ 1)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if=0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th41,
A2;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then (
IExec (IF,P,s))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th42,
A2;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:53
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 holds ((
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th41;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:54
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 holds ((
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then
A1: (
IExec ((
if=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th42;
not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
Lm8: (
card ((i
';' j)
';' I))
= ((
card I)
+ 2)
proof
thus (
card ((i
';' j)
';' I))
= (
card (i
';' (j
';' I))) by
SCMPDS_4: 16
.= ((
card (j
';' I))
+ 1) by
Th1
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ 2);
end;
begin
theorem ::
SCMPDS_6:55
(
card (
if<>0 (a,k1,I)))
= ((
card I)
+ 2) by
Lm8;
Lm9:
0
in (
dom ((i
';' j)
';' I)) & 1
in (
dom ((i
';' j)
';' I))
proof
set ci = (
card ((i
';' j)
';' I));
ci
= ((
card I)
+ 2) by
Lm8;
then 2
<= ci by
NAT_1: 11;
then 1
< ci by
XXREAL_0: 2;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:56
0
in (
dom (
if<>0 (a,k1,I))) & 1
in (
dom (
if<>0 (a,k1,I))) by
Lm9;
Lm10: (((i
';' j)
';' I)
.
0 )
= i & (((i
';' j)
';' I)
. 1)
= j
proof
set jI = (j
';' I);
A1: ((i
';' j)
';' I)
= (i
';' jI) by
SCMPDS_4: 16
.= ((
Load i)
';' jI);
0
in (
dom (
Load i)) by
COMPOS_1: 50;
hence (((i
';' j)
';' I)
.
0 )
= ((
Load i)
.
0 ) by
A1,
AFINSQ_1:def 3
.= i;
A2:
0
in (
dom (
Load j)) by
COMPOS_1: 50;
(
card jI)
= ((
card I)
+ 1) by
Th1;
then
A3: (
card (
Load i))
= 1 &
0
in (
dom jI) by
AFINSQ_1: 66,
COMPOS_1: 54;
thus (((i
';' j)
';' I)
. 1)
= (((
Load i)
';' jI)
. (
0
+ 1)) by
A1
.= (jI
.
0 ) by
A3,
AFINSQ_1:def 3
.= (((
Load j)
';' I)
.
0 )
.= ((
Load j)
.
0 ) by
A2,
AFINSQ_1:def 3
.= j;
end;
theorem ::
SCMPDS_6:57
((
if<>0 (a,k1,I))
.
0 )
= ((a,k1)
<>0_goto 2) & ((
if<>0 (a,k1,I))
. 1)
= (
goto ((
card I)
+ 1)) by
Lm10;
theorem ::
SCMPDS_6:58
Th49: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if<>0 (a,k1,I))
is_closed_on (s,P) & (
if<>0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<>0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), P2 = (P
+* pI), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<>0_goto 2), j = (
goto ((
card I)
+ 1));
A1: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
for a holds (s2
. a)
= (s4
. a) by
A2,
SCMPDS_2: 55;
then
A3: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
A4: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A5: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A4,
FUNCT_4: 11;
A6: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
<>
0 ;
then
A7: (
IC s4)
= (
ICplusConst (s3,2)) by
A2,
A5,
SCMPDS_2: 55
.= (
0
+ 2) by
A6,
Th4;
assume
A8: I
is_closed_on (s,P);
then
A9: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A10: P2
halts_on s2;
A11: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
A12: (
stop I)
c= P2 by
FUNCT_4: 25;
A13:
0
in (
dom pIF) by
COMPOS_1: 36;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= (1
+ (
card IF)) by
COMPOS_1: 55
.= (1
+ ((
card I)
+ 2)) by
Lm8
.= ((1
+ (
card I))
+ 2)
.= ((
card pI)
+ 2) by
COMPOS_1: 55;
m
in (
dom pI) by
A8;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 2)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 2) by
A9,
A11,
A7,
A3,
Th22,
A12;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A13,
A6,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A9,
A11,
A7,
A3,
Th22,
A12
.= (
halt
SCMPDS ) by
A10,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:59
Th50: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 holds (
if<>0 (a,k1,I))
is_closed_on (s,P) & (
if<>0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set IF = (
if<>0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.=
0 by
A1,
A2,
FUNCT_4: 11;
A4: pIF
c= P4 by
FUNCT_4: 25;
set i = ((a,k1)
<>0_goto 2), j = (
goto ((
card I)
+ 1));
A5: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A6: (
IC s3)
=
0 by
MEMSTR_0: 47;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A5,
Th3;
then
A7: (
IC s4)
= ((
IC s3)
+ 1) by
A3,
SCMPDS_2: 55
.= (
0
+ 1) by
A6;
A8: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A9: (P4
. 1)
= (pIF
. 1) by
A4,
GRFUNC_1: 2
.= (IF
. 1) by
A8,
COMPOS_1: 63
.= j by
Lm10;
A10: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then
A11: ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
A12: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
(
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A7,
A9,
A12;
then
A13: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A7,
Th4
.= ((
card I)
+ (1
+ 1));
A14: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
pIF
c= P5 by
FUNCT_4: 25;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A11,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A10,
COMPOS_1: 64;
then
A15: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A13,
A14;
now
let k be
Nat;
A16: k
=
0 or (
0
+ 1)
<= k by
INT_1: 7;
per cases by
A16,
XXREAL_0: 1;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A6,
COMPOS_1: 36;
end;
suppose k
= 1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A8,
A7,
COMPOS_1: 62;
end;
suppose 1
< k;
then (1
+ 1)
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A11,
A13,
A15,
EXTPRO_1: 5;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A15,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:60
Th51: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<>0 (a,k1,I)), pI = (
stop I), pIF = (
stop IF), s2 = (
Initialize s), P2 = (P
+* pI), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<>0_goto 2), j = (
goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
A1: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
A6: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
A7: (
stop I)
c= P2 by
FUNCT_4: 25;
for a holds (s2
. a)
= (s4
. a) by
A2,
SCMPDS_2: 55;
then
A8: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
<>
0 ;
then
A9: (
IC s4)
= (
ICplusConst (s3,2)) by
A2,
A4,
SCMPDS_2: 55
.= (
0
+ 2) by
A5,
Th4;
assume
A10: I
is_closed_on (s,P);
then
A11: I
is_closed_on (s2,P2);
assume
A12: I
is_halting_on (s,P);
then
A13: P2
halts_on s2;
A14: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A15: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A14
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A11,
A6,
A9,
A8,
Th22,
A7
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then
A16: P3
halts_on s3 by
EXTPRO_1: 29;
A17: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume
A18: l
< ((
LifeSpan (P2,s2))
+ 1);
A19: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A19;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A17;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A20: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A21: n
< (
LifeSpan (P2,s2)) by
A18,
A20,
XREAL_1: 6;
assume
A22: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A23: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A6,
A9,
A8,
Th22,
A7
.= (
halt
SCMPDS ) by
A20,
A22,
A23;
hence contradiction by
A13,
A21,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A24: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A15,
A16,
EXTPRO_1:def 15;
A25: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A13,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A11,
A6,
A9,
A8,
Th22,
A7
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A16,
A24,
EXTPRO_1: 23;
A26:
now
let x be
object;
A27: (
dom (
Start-At (((
card I)
+ 2),
SCMPDS )))
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A28: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A28,
SCMPDS_4: 6;
suppose
A29: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A30: not x
in (
dom SAl) by
A27,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A25,
A29,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
FUNCT_4: 11;
end;
suppose
A31: x
= (
IC
SCMPDS );
A32: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A10,
A12,
Th25;
A33: x
in (
dom SAl) by
A27,
A31,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A16,
A24,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A31,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 2) by
A11,
A6,
A9,
A8,
Th22,
A7
.= ((
IC (
Result (P2,s2)))
+ 2) by
A13,
EXTPRO_1: 23
.= (
IC SAl) by
A32,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A31,
A33,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))) by
PARTFUN1:def 2;
hence thesis by
A26,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:61
Th52: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 holds (
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
=
0 ;
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
set i = ((a,k1)
<>0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if<>0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: pIF
c= P3 by
FUNCT_4: 25;
then
A4: pIF
c= P4;
A5: pIF
c= P5 by
A3;
A6: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
A7: (
IC s3)
=
0 by
MEMSTR_0: 47;
A8: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.=
0 by
A1,
A6,
FUNCT_4: 11;
then
A9: (
IC s4)
= ((
IC s3)
+ 1) by
A8,
SCMPDS_2: 55
.= (
0
+ 1) by
A7;
A10: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A11: (P4
. 1)
= (pIF
. 1) by
A4,
GRFUNC_1: 2
.= (IF
. 1) by
A10,
COMPOS_1: 63
.= j by
Lm10;
A12: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A13: (
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A9,
A11,
A12;
then
A14: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A9,
Th4
.= ((
card I)
+ (1
+ 1));
A15: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
A16: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A5,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A16,
COMPOS_1: 64;
then
A17: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A14,
A15;
then
A18: P3
halts_on s3 by
EXTPRO_1: 29;
A19: (
CurInstr (P3,s3))
= i by
A2,
Th3;
now
let l be
Nat;
assume l
< (1
+ 1);
then
A20: l
<= 1 by
NAT_1: 13;
A21: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
A22: (P3
/. (
IC (
Comput (P3,s3,l))))
= (P3
. (
IC (
Comput (P3,s3,l)))) by
PBOOLE: 143;
per cases by
A20,
NAT_1: 25;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A21;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A19;
end;
suppose l
= 1;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A9,
A11,
A22;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 2
<= l;
then (
LifeSpan (P3,s3))
= 2 by
A17,
A18,
EXTPRO_1:def 15;
then
A23: s5
= (
Result (P3,s3)) by
A18,
EXTPRO_1: 23;
A24:
now
A25: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A26: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A26,
SCMPDS_4: 6;
suppose
A27: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A28: not x
in (
dom SAl) by
A25,
TARSKI:def 1;
A29: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A27,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s5
. x) by
A23
.= (s4
. x) by
A13,
A27,
SCMPDS_2: 54
.= (s3
. x) by
A8,
A27,
SCMPDS_2: 55
.= (s
. x) by
A29,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A28,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 2) by
A14,
A23
.= ((s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
. x) by
A30,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A24,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<>0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<>0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if<>0 (a,k1,I)), pIF = (
stop IF);
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then IF
is_halting_on (s,P) by
A3,
Th49;
hence P
halts_on s by
A1,
A2;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then IF
is_halting_on (s,P) by
Th50;
hence P
halts_on s by
A1,
A2;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<>0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:62
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s))))
= ((
card I)
+ 2)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if<>0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
then (
IExec (IF,P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th51;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then (
IExec (IF,P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th52;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:63
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<>
0 holds ((
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<>
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th51;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:64
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
=
0 holds ((
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
=
0 ;
then
A1: (
IExec ((
if<>0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th52;
not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:65
(
card (
if>0 (a,k1,I,J)))
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
theorem ::
SCMPDS_6:66
0
in (
dom (
if>0 (a,k1,I,J))) & 1
in (
dom (
if>0 (a,k1,I,J)))
proof
set ci = (
card (
if>0 (a,k1,I,J)));
ci
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
then 2
<= ci by
NAT_1: 12;
then 1
< ci by
XXREAL_0: 2;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:67
((
if>0 (a,k1,I,J))
.
0 )
= ((a,k1)
<=0_goto ((
card I)
+ 2)) by
Lm5;
theorem ::
SCMPDS_6:68
Th59: for s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if>0 (a,k1,I,J))
is_closed_on (s,P) & (
if>0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if>0 (a,k1,I,J)), pIF = (
stop IF), pI2 = (
stop I2), s2 = (
Initialize s), P2 = (P
+* pI2), P3 = (P
+* pIF), s4 = (
Comput (P3,s,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 2));
A1:
0
in (
dom pIF) by
COMPOS_1: 36;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A3: (
IC s)
=
0 by
MEMSTR_0: 47;
A4: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A5: (
Shift (pI2,1))
c= P4 by
Lm6;
A6: (
Comput (P3,s,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s)) by
EXTPRO_1: 2
.= (
Exec (i,s)) by
A4,
Th3,
A2;
for a holds (s2
. a)
= (s4
. a) by
A6,
A2,
SCMPDS_2: 56;
then
A7: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
>
0 ;
then
A8: (
IC s4)
= ((
IC s)
+ 1) by
A6,
SCMPDS_2: 56
.= (
0
+ 1) by
A3;
assume
A9: I
is_closed_on (s,P);
assume
A10: I
is_halting_on (s,P);
then
A11: I2
is_closed_on (s,P) by
A9,
Th21;
then
A12: (
Start-At (
0 ,
SCMPDS ))
c= s2 & I2
is_closed_on (s2,P2) by
FUNCT_4: 25;
A13: (
stop I2)
c= P2 by
FUNCT_4: 25;
I2
is_halting_on (s,P) by
A9,
A10,
Th21;
then
A14: P2
halts_on s2;
A15: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I2)
+ 1)
+ 1) by
A4,
Th1;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A16: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A17: (
card pIF)
= ((
card pI2)
+ 1) by
A15,
COMPOS_1: 55;
m
in (
dom pI2) by
A11;
then m
< (
card pI2) by
AFINSQ_1: 66;
then
A18: (m
+ 1)
< (
card pIF) by
A17,
XREAL_1: 6;
(
IC (
Comput (P3,s,k)))
= (
IC (
Comput (P3,s4,k1))) by
A16,
EXTPRO_1: 4
.= (m
+ 1) by
A12,
A5,
A8,
A7,
Th22,
A13;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A18,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A1,
A3,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P) by
A2;
A19: (
Comput (P3,s,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A19
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A12,
A5,
A8,
A7,
Th22,
A13
.= (
halt
SCMPDS ) by
A14,
EXTPRO_1:def 15;
then P3
halts_on s by
EXTPRO_1: 29;
hence thesis by
A2;
end;
theorem ::
SCMPDS_6:69
Th60: for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
if>0 (a,k1,I,J))
is_closed_on (s,P) & (
if>0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = (
Initialize s), P1 = (P
+* pJ), IF = (
if>0 (a,k1,I,J)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
A1: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
<=
0 ;
then
A6: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A2,
A4,
SCMPDS_2: 56
.= (
0
+ ((
card I)
+ 2)) by
A5,
Th4;
assume
A7: J
is_closed_on (s,P);
then
A8: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
FUNCT_4: 25;
A9: (
stop J)
c= P1 by
FUNCT_4: 25;
A10: pIF
c= P3 by
FUNCT_4: 25;
A11: (
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
then
A12: (
Shift (pJ,((
card I)
+ 2)))
c= P4 by
A10,
XBOOLE_1: 1;
assume J
is_halting_on (s,P);
then
A13: P1
halts_on s1;
for a holds (s1
. a)
= (s4
. a) by
A2,
SCMPDS_2: 56;
then
A14: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A15: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P1,s1,k1))) as
Nat;
m
in (
dom pJ) by
A7;
then m
< (
card pJ) by
AFINSQ_1: 66;
then
A16: (m
+ ((
card I)
+ 2))
< ((
card pJ)
+ ((
card I)
+ 2)) by
XREAL_1: 6;
A17: (
card pJ)
= ((
card J)
+ 1) by
COMPOS_1: 55;
A18: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= ((((
card I)
+ 2)
+ (
card J))
+ 1) by
A11,
AFINSQ_1: 17
.= (((
card I)
+ 2)
+ (
card pJ)) by
A17;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A15,
EXTPRO_1: 4
.= (m
+ ((
card I)
+ 2)) by
A8,
A14,
A12,
A6,
Th22,
A9;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A18,
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A5,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
A19: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P1,s1)))))) by
A19
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A8,
A14,
A12,
A6,
Th22,
A9
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:70
Th61: for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if>0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if>0 (a,k1,I,J)), pIF = (
stop IF), pI2 = (
stop I2), P2 = (P
+* pI2), P3 = (P
+* pIF), s4 = (
Comput (P3,s,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 2));
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A2: (
IC s)
=
0 by
MEMSTR_0: 47;
A3: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A4: (
Shift (pI2,1))
c= P4 by
Lm6;
A5: (
Comput (P3,s,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s)) by
EXTPRO_1: 2
.= (
Exec (i,s)) by
A3,
Th3,
A1;
assume (s
. b)
>
0 ;
then
A6: (
IC s4)
= ((
IC s)
+ 1) by
A5,
SCMPDS_2: 56
.= (
0
+ 1) by
A2;
for a holds (s
. a)
= (s4
. a) by
A5,
SCMPDS_2: 56;
then
A7: (
DataPart s)
= (
DataPart s4) by
SCMPDS_4: 8;
assume
A8: I
is_closed_on (s,P);
assume
A9: I
is_halting_on (s,P);
then I2
is_halting_on (s,P) by
A8,
Th21;
then
A10: P2
halts_on s by
A1;
I2
is_closed_on (s,P) by
A8,
A9,
Th21;
then
A11: (
Start-At (
0 ,
SCMPDS ))
c= s & I2
is_closed_on (s,P2) by
A1,
FUNCT_4: 25;
A12: (
stop I2)
c= P2 by
FUNCT_4: 25;
A13: (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),(
LifeSpan (P2,s)))) by
EXTPRO_1: 4;
A14: (
CurInstr (P3,(
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s)))))) by
A13
.= (
CurInstr (P2,(
Comput (P2,s,(
LifeSpan (P2,s)))))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A10,
EXTPRO_1:def 15;
then
A15: P3
halts_on s by
EXTPRO_1: 29;
A16: (
CurInstr (P3,s))
= i by
A3,
Th3,
A1;
now
let l be
Nat;
assume
A17: l
< ((
LifeSpan (P2,s))
+ 1);
A18: (
Comput (P3,s,
0 ))
= s by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s,l))))
= (
CurInstr (P3,s)) by
A18;
hence (
CurInstr (P3,(
Comput (P3,s,l))))
<> (
halt
SCMPDS ) by
A16;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A19: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A20: n
< (
LifeSpan (P2,s)) by
A17,
A19,
XREAL_1: 6;
assume
A21: (
CurInstr (P3,(
Comput (P3,s,l))))
= (
halt
SCMPDS );
A22: (
Comput (P3,s,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A19,
A21,
A22;
hence contradiction by
A10,
A20,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s))
+ 1)
<= l;
then
A23: (
LifeSpan (P3,s))
= ((
LifeSpan (P2,s))
+ 1) by
A14,
A15,
EXTPRO_1:def 15;
A24: (
DataPart (
Result (P2,s)))
= (
DataPart (
Comput (P2,s,(
LifeSpan (P2,s))))) by
A10,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s))))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
DataPart (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s))) by
A15,
A23,
EXTPRO_1: 23;
A25:
now
let x be
object;
A26: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A27: x
in (
dom (
IExec (IF,P,s)));
per cases by
A27,
SCMPDS_4: 6;
suppose
A28: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A29: not x
in (
dom SAl) by
A26,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s))
. x)
.= ((
Result (P2,s))
. x) by
A24,
A28,
SCMPDS_4: 8
.= ((
IExec (I2,P,s))
. x)
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A29,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
A31: (
IC (
Result (P2,s)))
= (
IC (
IExec (I2,P,s)))
.= (((
card I)
+ (
card J))
+ 1) by
A8,
A9,
Th23;
A32: x
in (
dom SAl) by
A26,
A30,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s))
. x)
.= ((
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
. x) by
A15,
A23,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s))))) by
A30,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s,(
LifeSpan (P2,s)))))
+ 1) by
A11,
A4,
A6,
A7,
Th22,
A12
.= ((
IC (
Result (P2,s)))
+ 1) by
A10,
EXTPRO_1: 23
.= (
IC (
Start-At (((((
card I)
+ (
card J))
+ 1)
+ 1),
SCMPDS ))) by
A31,
FUNCOP_1: 72
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A30,
A32,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,s)))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I2,P,s))
+* SAl)) by
PARTFUN1:def 2;
hence (
IExec (IF,P,s))
= ((
IExec (I2,P,s))
+* SAl) by
A25,
FUNCT_1: 2
.= (((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 1),
SCMPDS )))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A8,
A9,
Th24
.= ((
IExec (I,P,s))
+* SAl) by
MEMSTR_0: 36;
end;
theorem ::
SCMPDS_6:71
Th62: for s be
0
-started
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
IExec ((
if>0 (a,k1,I,J)),P,s))
= ((
IExec (J,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
0
-started
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = s, P1 = (P
+* pJ), IF = (
if>0 (a,k1,I,J)), pIF = (
stop IF), s3 = s, P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
A2: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A3: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3,
A1;
A4: (
IC s3)
=
0 by
A1,
MEMSTR_0: 47;
assume (s
. b)
<=
0 ;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A3,
SCMPDS_2: 56
.= (
0
+ ((
card I)
+ 2)) by
A4,
Th4;
for a holds (s1
. a)
= (s4
. a) by
A3,
SCMPDS_2: 56;
then
A6: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
(
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then
A7: (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
pIF
c= P3 by
FUNCT_4: 25;
then
A8: (
Shift (pJ,((
card I)
+ 2)))
c= P4 by
A7,
XBOOLE_1: 1;
assume
A9: J
is_closed_on (s,P);
then
A10: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
A1,
FUNCT_4: 25;
A11: (
stop J)
c= P1 by
FUNCT_4: 25;
assume
A12: J
is_halting_on (s,P);
then
A13: P1
halts_on s1 by
A1;
A14: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
A15: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P1,s1)))))) by
A14
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A10,
A8,
A5,
A6,
Th22,
A11
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then
A16: P3
halts_on s3 by
EXTPRO_1: 29;
A17: (
CurInstr (P3,s3))
= i by
A2,
Th3,
A1;
now
let l be
Nat;
assume
A18: l
< ((
LifeSpan (P1,s1))
+ 1);
A19: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A19;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A17;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A20: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A21: n
< (
LifeSpan (P1,s1)) by
A18,
A20,
XREAL_1: 6;
assume
A22: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A23: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P1,(
Comput (P1,s1,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A10,
A8,
A5,
A6,
Th22,
A11
.= (
halt
SCMPDS ) by
A20,
A22,
A23;
hence contradiction by
A13,
A21,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P1,s1))
+ 1)
<= l;
then
A24: (
LifeSpan (P3,s3))
= ((
LifeSpan (P1,s1))
+ 1) by
A15,
A16,
EXTPRO_1:def 15;
A25: (
DataPart (
Result (P1,s1)))
= (
DataPart (
Comput (P1,s1,(
LifeSpan (P1,s1))))) by
A13,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A10,
A8,
A5,
A6,
Th22,
A11
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A16,
A24,
EXTPRO_1: 23;
A26:
now
let x be
object;
A27: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A28: x
in (
dom (
IExec (IF,P,s)));
per cases by
A28,
SCMPDS_4: 6;
suppose
A29: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A30: not x
in (
dom SAl) by
A27,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P1,s1))
. x) by
A25,
A29,
SCMPDS_4: 8
.= ((
IExec (J,P,s))
. x)
.= (((
IExec (J,P,s))
+* SAl)
. x) by
A30,
FUNCT_4: 11;
end;
suppose
A31: x
= (
IC
SCMPDS );
A32: (
IC (
Result (P1,s1)))
= (
IC (
IExec (J,P,s)))
.= (
card J) by
A9,
A12,
Th25,
A1;
A33: x
in (
dom SAl) by
A27,
A31,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
. x) by
A16,
A24,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A31,
EXTPRO_1: 4
.= ((
IC (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
+ ((
card I)
+ 2)) by
A10,
A8,
A5,
A6,
Th22,
A11
.= ((
IC (
Result (P1,s1)))
+ ((
card I)
+ 2)) by
A13,
EXTPRO_1: 23
.= (
IC (
Start-At (((
card J)
+ ((
card I)
+ 2)),
SCMPDS ))) by
A32,
FUNCOP_1: 72
.= (((
IExec (J,P,s))
+* SAl)
. x) by
A31,
A33,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,s)))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (J,P,s))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A26,
FUNCT_1: 2;
end;
registration
let I,J be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>0 (a,k1,I,J)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<=0_goto ((
card I)
+ 2)), G = (
Goto ((
card J)
+ 1));
set IF = (
if>0 (a,k1,I,J)), pIF = (
stop IF);
reconsider IJ = ((I
';' G)
';' J) as
shiftable
Program of
SCMPDS ;
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
A4: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then IF
is_halting_on (s,P) by
A4,
Th59;
hence P
halts_on s by
A1,
A2;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then IF
is_halting_on (s,P) by
A3,
Th60;
hence P
halts_on s by
A1,
A2;
end;
end;
end
registration
let I,J be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>0 (a,k1,I,J)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:72
for s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if>0 (a,k1,I,J)),P,s)))
= (((
card I)
+ (
card J))
+ 2)
proof
let s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if>0 (a,k1,I,J));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th61;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (J,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A2,
Th62;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:73
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 holds ((
IExec ((
if>0 (a,k1,I,J)),P,s))
. b)
= ((
IExec (I,P,s))
. b)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if>0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th61;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:74
for s be
0
-started
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 holds ((
IExec ((
if>0 (a,k1,I,J)),P,s))
. b)
= ((
IExec (J,P,s))
. b)
proof
let s be
0
-started
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
set IF = (
if>0 (a,k1,I,J));
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec (IF,P,s))
= ((
IExec (J,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th62;
hence thesis by
A2,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:75
(
card (
if>0 (a,k1,I)))
= ((
card I)
+ 1) by
Th1;
theorem ::
SCMPDS_6:76
0
in (
dom (
if>0 (a,k1,I)))
proof
set ci = (
card (
if>0 (a,k1,I)));
ci
= ((
card I)
+ 1) by
Th1;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:77
((
if>0 (a,k1,I))
.
0 )
= ((a,k1)
<=0_goto ((
card I)
+ 1)) by
Th2;
theorem ::
SCMPDS_6:78
Th69: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if>0 (a,k1,I))
is_closed_on (s,P) & (
if>0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 1));
A1:
0
in (
dom pIF) by
COMPOS_1: 36;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
for a holds (s2
. a)
= (s4
. a) by
A5,
SCMPDS_2: 56;
then
A6: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
>
0 ;
then
A7: (
IC s4)
= ((
IC s3)
+ 1) by
A5,
A4,
SCMPDS_2: 56
.= (
0
+ 1) by
A2;
assume
A8: I
is_closed_on (s,P);
then
A9: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A10: P2
halts_on s2;
A11: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
A12: (
stop I)
c= P2 by
FUNCT_4: 25;
A13: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I)
+ 1)
+ 1) by
Th1;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= ((
card pI)
+ 1) by
A13,
COMPOS_1: 55;
m
in (
dom pI) by
A8;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 1)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 1) by
A9,
A11,
A7,
A6,
Th22,
A12;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A1,
A2,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A9,
A11,
A7,
A6,
Th22,
A12
.= (
halt
SCMPDS ) by
A10,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:79
Th70: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 holds (
if>0 (a,k1,I))
is_closed_on (s,P) & (
if>0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
<=
0 ;
set i = ((a,k1)
<=0_goto ((
card I)
+ 1));
set IF = (
if>0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A1,
A4,
SCMPDS_2: 56
.= (
0
+ ((
card I)
+ 1)) by
A2,
Th4;
A6: (
card IF)
= ((
card I)
+ 1) by
Th1;
then
A7: ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
A8: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
pIF
c= P3 by
FUNCT_4: 25;
then pIF
c= P4;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A7,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A6,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A8;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then (1
+
0 )
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A7,
A5,
A9,
EXTPRO_1: 5;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A2,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A9,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:80
Th71: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>0 (a,k1,I)), pI = (
stop I), pIF = (
stop IF), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A1: (
IC s3)
=
0 by
MEMSTR_0: 47;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
assume (s
. b)
>
0 ;
then
A5: (
IC s4)
= ((
IC s3)
+ 1) by
A4,
A3,
SCMPDS_2: 56
.= (
0
+ 1) by
A1;
for a holds (s2
. a)
= (s4
. a) by
A4,
SCMPDS_2: 56;
then
A6: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume
A7: I
is_closed_on (s,P);
then
A8: I
is_closed_on (s2,P2);
A9: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
A10: (
stop I)
c= P2 by
FUNCT_4: 25;
assume
A11: I
is_halting_on (s,P);
then
A12: P2
halts_on s2;
A13: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A14: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A13
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
halt
SCMPDS ) by
A12,
EXTPRO_1:def 15;
then
A15: P3
halts_on s3 by
EXTPRO_1: 29;
A16: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
assume
A17: l
< ((
LifeSpan (P2,s2))
+ 1);
A18: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A18;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A16;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A19: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A20: n
< (
LifeSpan (P2,s2)) by
A17,
A19,
XREAL_1: 6;
assume
A21: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A22: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
halt
SCMPDS ) by
A19,
A21,
A22;
hence contradiction by
A12,
A20,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A23: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A14,
A15,
EXTPRO_1:def 15;
A24: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A12,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A8,
A9,
A5,
A6,
Th22,
A10
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A15,
A23,
EXTPRO_1: 23;
A25:
now
let x be
object;
A26: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A27: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A27,
SCMPDS_4: 6;
suppose
A28: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A29: not x
in (
dom SAl) by
A26,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A24,
A28,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A29,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
A31: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A7,
A11,
Th25;
A32: x
in (
dom SAl) by
A26,
A30,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A15,
A23,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A30,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 1) by
A8,
A9,
A5,
A6,
Th22,
A10
.= ((
IC (
Result (P2,s2)))
+ 1) by
A12,
EXTPRO_1: 23
.= (
IC SAl) by
A31,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
A32,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A25,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:81
Th72: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 holds (
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A1: (
IC s3)
=
0 by
MEMSTR_0: 47;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
assume (s
. b)
<=
0 ;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A4,
A3,
SCMPDS_2: 56
.= (
0
+ ((
card I)
+ 1)) by
A1,
Th4;
pIF
c= P3 by
FUNCT_4: 25;
then
A6: pIF
c= P4;
A7: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A8: (
card IF)
= ((
card I)
+ 1) by
Th1;
then ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A6,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A8,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A7;
then
A10: P3
halts_on s3 by
EXTPRO_1: 29;
A11: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
A12: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
assume l
< 1;
then l
< (1
+
0 );
then l
=
0 by
NAT_1: 13;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A12;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A11;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 1
<= l;
then (
LifeSpan (P3,s3))
= 1 by
A9,
A10,
EXTPRO_1:def 15;
then
A13: s4
= (
Result (P3,s3)) by
A10,
EXTPRO_1: 23;
A14:
now
A15: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A16: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A16,
SCMPDS_4: 6;
suppose
A17: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A18: not x
in (
dom SAl) by
A15,
TARSKI:def 1;
A19: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A17,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s4
. x) by
A13
.= (s3
. x) by
A4,
A17,
SCMPDS_2: 56
.= (s
. x) by
A19,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A18,
FUNCT_4: 11;
end;
suppose
A20: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 1) by
A5,
A13
.= ((s
+* SAl)
. x) by
A20,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A14,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<=0_goto ((
card I)
+ 1));
set IF = (
if>0 (a,k1,I)), pIF = (
stop IF);
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then IF
is_halting_on (s,P) by
A3,
Th69;
hence P
halts_on s by
A2,
A1;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then IF
is_halting_on (s,P) by
Th70;
hence P
halts_on s by
A2,
A1;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:82
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if>0 (a,k1,I)),P,s)))
= ((
card I)
+ 1)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if>0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th71,
A2;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then (
IExec (IF,P,s))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th72,
A2;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:83
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 holds ((
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th71;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:84
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 holds ((
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then
A1: (
IExec ((
if>0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th72;
not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:85
(
card (
if<=0 (a,k1,I)))
= ((
card I)
+ 2) by
Lm8;
theorem ::
SCMPDS_6:86
0
in (
dom (
if<=0 (a,k1,I))) & 1
in (
dom (
if<=0 (a,k1,I))) by
Lm9;
theorem ::
SCMPDS_6:87
((
if<=0 (a,k1,I))
.
0 )
= ((a,k1)
<=0_goto 2) & ((
if<=0 (a,k1,I))
. 1)
= (
goto ((
card I)
+ 1)) by
Lm10;
theorem ::
SCMPDS_6:88
Th79: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if<=0 (a,k1,I))
is_closed_on (s,P) & (
if<=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<=0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto 2), j = (
goto ((
card I)
+ 1));
A1: (
stop I)
c= P2 by
FUNCT_4: 25;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
for a holds (s2
. a)
= (s4
. a) by
A3,
SCMPDS_2: 56;
then
A4: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
A5: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A6: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A5,
FUNCT_4: 11;
A7: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
<=
0 ;
then
A8: (
IC s4)
= (
ICplusConst (s3,2)) by
A3,
A6,
SCMPDS_2: 56
.= (
0
+ 2) by
A7,
Th4;
assume
A9: I
is_closed_on (s,P);
then
A10: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A11: P2
halts_on s2;
A12: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
A13:
0
in (
dom pIF) by
COMPOS_1: 36;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= (1
+ (
card IF)) by
COMPOS_1: 55
.= (1
+ ((
card I)
+ 2)) by
Lm8
.= ((1
+ (
card I))
+ 2)
.= ((
card pI)
+ 2) by
COMPOS_1: 55;
m
in (
dom pI) by
A9;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 2)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 2) by
A10,
A12,
A8,
A4,
Th22,
A1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A13,
A7,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A10,
A12,
A8,
A4,
Th22,
A1
.= (
halt
SCMPDS ) by
A11,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:89
Th80: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 holds (
if<=0 (a,k1,I))
is_closed_on (s,P) & (
if<=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
>
0 ;
set i = ((a,k1)
<=0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if<=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
then
A6: (
IC s4)
= ((
IC s3)
+ 1) by
A1,
A4,
SCMPDS_2: 56
.= (
0
+ 1) by
A5;
A7: pIF
c= P3 by
FUNCT_4: 25;
then
A8: pIF
c= P4;
A9: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A10: (P4
. 1)
= (pIF
. 1) by
A8,
GRFUNC_1: 2
.= (IF
. 1) by
A9,
COMPOS_1: 63
.= j by
Lm10;
A11: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then
A12: ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
A13: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
(
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A6,
A10,
A13;
then
A14: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A6,
Th4
.= ((
card I)
+ (1
+ 1));
A15: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
pIF
c= P5 by
A7;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A12,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A11,
COMPOS_1: 64;
then
A16: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A14,
A15;
now
let k be
Nat;
A17: k
=
0 or (
0
+ 1)
<= k by
INT_1: 7;
per cases by
A17,
XXREAL_0: 1;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A5,
COMPOS_1: 36;
end;
suppose k
= 1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A9,
A6,
COMPOS_1: 62;
end;
suppose 1
< k;
then (1
+ 1)
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A12,
A14,
A16,
EXTPRO_1: 5;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A16,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:90
Th81: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<=0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
<=0_goto 2), j = (
goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
A1: (
stop I)
c= P2 by
FUNCT_4: 25;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
A4: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A5: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A4,
FUNCT_4: 11;
A6: (
IC s3)
=
0 by
MEMSTR_0: 47;
A7: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
for a holds (s2
. a)
= (s4
. a) by
A3,
SCMPDS_2: 56;
then
A8: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
<=
0 ;
then
A9: (
IC s4)
= (
ICplusConst (s3,2)) by
A3,
A5,
SCMPDS_2: 56
.= (
0
+ 2) by
A6,
Th4;
assume
A10: I
is_closed_on (s,P);
then
A11: I
is_closed_on (s2,P2);
assume
A12: I
is_halting_on (s,P);
then
A13: P2
halts_on s2;
A14: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A15: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A14
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A11,
A7,
A9,
A8,
Th22,
A1
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then
A16: P3
halts_on s3 by
EXTPRO_1: 29;
A17: (
CurInstr (P3,s3))
= i by
A2,
Th3;
now
let l be
Nat;
assume
A18: l
< ((
LifeSpan (P2,s2))
+ 1);
A19: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A19;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A17;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A20: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A21: n
< (
LifeSpan (P2,s2)) by
A18,
A20,
XREAL_1: 6;
assume
A22: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A23: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A7,
A9,
A8,
Th22,
A1
.= (
halt
SCMPDS ) by
A20,
A22,
A23;
hence contradiction by
A13,
A21,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A24: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A15,
A16,
EXTPRO_1:def 15;
A25: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A13,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A11,
A7,
A9,
A8,
Th22,
A1
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A16,
A24,
EXTPRO_1: 23;
A26:
now
let x be
object;
A27: (
dom (
Start-At (((
card I)
+ 2),
SCMPDS )))
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A28: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A28,
SCMPDS_4: 6;
suppose
A29: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A30: not x
in (
dom SAl) by
A27,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A25,
A29,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
FUNCT_4: 11;
end;
suppose
A31: x
= (
IC
SCMPDS );
A32: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A10,
A12,
Th25;
A33: x
in (
dom SAl) by
A27,
A31,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A16,
A24,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A31,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 2) by
A11,
A7,
A9,
A8,
Th22,
A1
.= ((
IC (
Result (P2,s2)))
+ 2) by
A13,
EXTPRO_1: 23
.= (
IC SAl) by
A32,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A31,
A33,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))) by
PARTFUN1:def 2;
hence thesis by
A26,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:91
Th82: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 holds (
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
set i = ((a,k1)
<=0_goto 2), j = (
goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
A1: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
IC s3)
=
0 by
MEMSTR_0: 47;
A5: pIF
c= P3 by
FUNCT_4: 25;
then
A6: pIF
c= P4;
A7: pIF
c= P5 by
A5;
A8: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
assume (s
. b)
>
0 ;
then
A9: (
IC s4)
= ((
IC s3)
+ 1) by
A8,
A3,
SCMPDS_2: 56
.= (
0
+ 1) by
A4;
A10: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A11: (P4
. 1)
= (pIF
. 1) by
A6,
GRFUNC_1: 2
.= (IF
. 1) by
A10,
COMPOS_1: 63
.= j by
Lm10;
A12: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A13: (
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A9,
A11,
A12;
then
A14: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A9,
Th4
.= ((
card I)
+ (1
+ 1));
A15: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
A16: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A7,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A16,
COMPOS_1: 64;
then
A17: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A14,
A15;
then
A18: P3
halts_on s3 by
EXTPRO_1: 29;
A19: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume l
< (1
+ 1);
then
A20: l
<= 1 by
NAT_1: 13;
A21: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
A22: (P3
/. (
IC (
Comput (P3,s3,l))))
= (P3
. (
IC (
Comput (P3,s3,l)))) by
PBOOLE: 143;
per cases by
A20,
NAT_1: 25;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A21;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A19;
end;
suppose l
= 1;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A9,
A11,
A22;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 2
<= l;
then (
LifeSpan (P3,s3))
= 2 by
A17,
A18,
EXTPRO_1:def 15;
then
A23: s5
= (
Result (P3,s3)) by
A18,
EXTPRO_1: 23;
A24:
now
A25: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A26: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A26,
SCMPDS_4: 6;
suppose
A27: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A28: not x
in (
dom SAl) by
A25,
TARSKI:def 1;
A29: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A27,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s5
. x) by
A23
.= (s4
. x) by
A13,
A27,
SCMPDS_2: 54
.= (s3
. x) by
A8,
A27,
SCMPDS_2: 56
.= (s
. x) by
A29,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A28,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 2) by
A14,
A23
.= ((s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
. x) by
A30,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A24,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<=0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
<=0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if<=0 (a,k1,I)), pIF = (
stop IF);
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then IF
is_halting_on (s,P) by
A3,
Th79;
hence P
halts_on s by
A2,
A1;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then IF
is_halting_on (s,P) by
Th80;
hence P
halts_on s by
A2,
A1;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<=0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:92
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if<=0 (a,k1,I)),P,s)))
= ((
card I)
+ 2)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if<=0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th81,
A2;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then (
IExec (IF,P,s))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th82,
A2;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:93
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<=
0 holds ((
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<=
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th81;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:94
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>
0 holds ((
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
>
0 ;
then
A1: (
IExec ((
if<=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th82;
not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:95
(
card (
if<0 (a,k1,I,J)))
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
theorem ::
SCMPDS_6:96
0
in (
dom (
if<0 (a,k1,I,J))) & 1
in (
dom (
if<0 (a,k1,I,J)))
proof
set ci = (
card (
if<0 (a,k1,I,J)));
ci
= (((
card I)
+ (
card J))
+ 2) by
Lm4;
then 2
<= ci by
NAT_1: 12;
then 1
< ci by
XXREAL_0: 2;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:97
((
if<0 (a,k1,I,J))
.
0 )
= ((a,k1)
>=0_goto ((
card I)
+ 2)) by
Lm5;
theorem ::
SCMPDS_6:98
Th89: for s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if<0 (a,k1,I,J))
is_closed_on (s,P) & (
if<0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
0
-started
State of
SCMPDS , I,J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if<0 (a,k1,I,J)), pIF = (
stop IF), pI2 = (
stop I2), P2 = (P
+* pI2), P3 = (P
+* pIF), s4 = (
Comput (P3,s,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 2));
A1:
0
in (
dom pIF) by
COMPOS_1: 36;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A3: (
IC s)
=
0 by
MEMSTR_0: 47;
A4: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A5: (
Shift (pI2,1))
c= P4 by
Lm6;
A6: (
Comput (P3,s,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s)) by
EXTPRO_1: 2
.= (
Exec (i,s)) by
A4,
Th3,
A2;
for a holds (s
. a)
= (s4
. a) by
A6,
SCMPDS_2: 57;
then
A7: (
DataPart s)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
<
0 ;
then
A8: (
IC s4)
= ((
IC s)
+ 1) by
A6,
SCMPDS_2: 57
.= (
0
+ 1) by
A3;
assume
A9: I
is_closed_on (s,P);
assume
A10: I
is_halting_on (s,P);
then
A11: I2
is_closed_on (s,P) by
A9,
Th21;
then
A12: (
Start-At (
0 ,
SCMPDS ))
c= s & I2
is_closed_on (s,P2) by
A2,
FUNCT_4: 25;
A13: (
stop I2)
c= P2 by
FUNCT_4: 25;
I2
is_halting_on (s,P) by
A9,
A10,
Th21;
then
A14: P2
halts_on s by
A2;
A15: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I2)
+ 1)
+ 1) by
A4,
Th1;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A16: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s,k1))) as
Nat;
A17: (
card pIF)
= ((
card pI2)
+ 1) by
A15,
COMPOS_1: 55;
m
in (
dom pI2) by
A11,
A2;
then m
< (
card pI2) by
AFINSQ_1: 66;
then
A18: (m
+ 1)
< (
card pIF) by
A17,
XREAL_1: 6;
(
IC (
Comput (P3,s,k)))
= (
IC (
Comput (P3,s4,k1))) by
A16,
EXTPRO_1: 4
.= (m
+ 1) by
A12,
A5,
A8,
A7,
Th22,
A13;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A18,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s,k)))
in (
dom pIF) by
A1,
A3,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P) by
A2;
A19: (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),(
LifeSpan (P2,s)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s)))))) by
A19
.= (
CurInstr (P2,(
Comput (P2,s,(
LifeSpan (P2,s)))))) by
A12,
A5,
A8,
A7,
Th22,
A13
.= (
halt
SCMPDS ) by
A14,
EXTPRO_1:def 15;
then P3
halts_on s by
EXTPRO_1: 29;
hence thesis by
A2;
end;
theorem ::
SCMPDS_6:99
Th90: for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
if<0 (a,k1,I,J))
is_closed_on (s,P) & (
if<0 (a,k1,I,J))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = (
Initialize s), P1 = (P
+* pJ), IF = (
if<0 (a,k1,I,J)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
A1: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
>=
0 ;
then
A6: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A2,
A4,
SCMPDS_2: 57
.= (
0
+ ((
card I)
+ 2)) by
A5,
Th4;
assume
A7: J
is_closed_on (s,P);
then
A8: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
FUNCT_4: 25;
A9: (
stop J)
c= P1 by
FUNCT_4: 25;
A10: pIF
c= P3 by
FUNCT_4: 25;
A11: (
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
then (
Shift (pJ,((
card I)
+ 2)))
c= P3 by
A10,
XBOOLE_1: 1;
then
A12: (
Shift (pJ,((
card I)
+ 2)))
c= P4;
assume J
is_halting_on (s,P);
then
A13: P1
halts_on s1;
for a holds (s1
. a)
= (s4
. a) by
A2,
SCMPDS_2: 57;
then
A14: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A15: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P1,s1,k1))) as
Nat;
m
in (
dom pJ) by
A7;
then m
< (
card pJ) by
AFINSQ_1: 66;
then
A16: (m
+ ((
card I)
+ 2))
< ((
card pJ)
+ ((
card I)
+ 2)) by
XREAL_1: 6;
A17: (
card pJ)
= ((
card J)
+ 1) by
COMPOS_1: 55;
A18: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= ((((
card I)
+ 2)
+ (
card J))
+ 1) by
A11,
AFINSQ_1: 17
.= (((
card I)
+ 2)
+ (
card pJ)) by
A17;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A15,
EXTPRO_1: 4
.= (m
+ ((
card I)
+ 2)) by
A8,
A14,
A12,
A6,
Th22,
A9;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A18,
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A5,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
A19: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P1,s1)))))) by
A19
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A8,
A14,
A12,
A6,
Th22,
A9
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:100
Th91: for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if<0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set G = (
Goto ((
card J)
+ 1));
set I2 = ((I
';' G)
';' J), IF = (
if<0 (a,k1,I,J)), pIF = (
stop IF), pI2 = (
stop I2), P2 = (P
+* pI2), P3 = (P
+* pIF), s4 = (
Comput (P3,s,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 2));
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
then
A2: (
IC s)
=
0 by
MEMSTR_0: 47;
A3: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' I2) by
SCMPDS_4: 14;
then
A4: (
Shift (pI2,1))
c= P4 by
Lm6;
A5: (
Comput (P3,s,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s)) by
EXTPRO_1: 2
.= (
Exec (i,s)) by
A3,
Th3,
A1;
assume (s
. b)
<
0 ;
then
A6: (
IC s4)
= ((
IC s)
+ 1) by
A5,
SCMPDS_2: 57
.= (
0
+ 1) by
A2;
for a holds (s
. a)
= (s4
. a) by
A5,
SCMPDS_2: 57;
then
A7: (
DataPart s)
= (
DataPart s4) by
SCMPDS_4: 8;
assume
A8: I
is_closed_on (s,P);
assume
A9: I
is_halting_on (s,P);
then I2
is_halting_on (s,P) by
A8,
Th21;
then
A10: P2
halts_on s by
A1;
I2
is_closed_on (s,P) by
A8,
A9,
Th21;
then
A11: (
Start-At (
0 ,
SCMPDS ))
c= s & I2
is_closed_on (s,P2) by
A1,
FUNCT_4: 25;
A12: (
stop I2)
c= P2 by
FUNCT_4: 25;
A13: (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),(
LifeSpan (P2,s)))) by
EXTPRO_1: 4;
A14: (
CurInstr (P3,(
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s)))))) by
A13
.= (
CurInstr (P2,(
Comput (P2,s,(
LifeSpan (P2,s)))))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A10,
EXTPRO_1:def 15;
then
A15: P3
halts_on s by
EXTPRO_1: 29;
A16: (
CurInstr (P3,s))
= i by
A3,
Th3,
A1;
now
let l be
Nat;
assume
A17: l
< ((
LifeSpan (P2,s))
+ 1);
A18: (
Comput (P3,s,
0 ))
= s by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s,l))))
= (
CurInstr (P3,s)) by
A18;
hence (
CurInstr (P3,(
Comput (P3,s,l))))
<> (
halt
SCMPDS ) by
A16;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A19: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A20: n
< (
LifeSpan (P2,s)) by
A17,
A19,
XREAL_1: 6;
assume
A21: (
CurInstr (P3,(
Comput (P3,s,l))))
= (
halt
SCMPDS );
A22: (
Comput (P3,s,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A19,
A21,
A22;
hence contradiction by
A10,
A20,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s))
+ 1)
<= l;
then
A23: (
LifeSpan (P3,s))
= ((
LifeSpan (P2,s))
+ 1) by
A14,
A15,
EXTPRO_1:def 15;
A24: (
DataPart (
Result (P2,s)))
= (
DataPart (
Comput (P2,s,(
LifeSpan (P2,s))))) by
A10,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s))))) by
A11,
A4,
A6,
A7,
Th22,
A12
.= (
DataPart (
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s))) by
A15,
A23,
EXTPRO_1: 23;
A25:
now
let x be
object;
A26: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A27: x
in (
dom (
IExec (IF,P,s)));
per cases by
A27,
SCMPDS_4: 6;
suppose
A28: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A29: not x
in (
dom SAl) by
A26,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s))
. x)
.= ((
Result (P2,s))
. x) by
A24,
A28,
SCMPDS_4: 8
.= ((
IExec (I2,P,s))
. x)
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A29,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
A31: (
IC (
Result (P2,s)))
= (
IC (
IExec (I2,P,s)))
.= (((
card I)
+ (
card J))
+ 1) by
A8,
A9,
Th23;
A32: x
in (
dom SAl) by
A26,
A30,
TARSKI:def 1;
thus ((
IExec (IF,P,s))
. x)
= ((
Result (P3,s))
. x)
.= ((
Comput (P3,s,((
LifeSpan (P2,s))
+ 1)))
. x) by
A15,
A23,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s))))) by
A30,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s,(
LifeSpan (P2,s)))))
+ 1) by
A11,
A4,
A6,
A7,
Th22,
A12
.= ((
IC (
Result (P2,s)))
+ 1) by
A10,
EXTPRO_1: 23
.= (
IC (
Start-At (((((
card I)
+ (
card J))
+ 1)
+ 1),
SCMPDS ))) by
A31,
FUNCOP_1: 72
.= (((
IExec (I2,P,s))
+* SAl)
. x) by
A30,
A32,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,s)))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I2,P,s))
+* SAl)) by
PARTFUN1:def 2;
hence (
IExec (IF,P,s))
= ((
IExec (I2,P,s))
+* SAl) by
A25,
FUNCT_1: 2
.= (((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 1),
SCMPDS )))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A8,
A9,
Th24
.= ((
IExec (I,P,s))
+* SAl) by
MEMSTR_0: 36;
end;
theorem ::
SCMPDS_6:101
Th92: for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 & J
is_closed_on (s,P) & J
is_halting_on (s,P) holds (
IExec ((
if<0 (a,k1,I,J)),P,(
Initialize s)))
= ((
IExec (J,P,(
Initialize s)))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set pJ = (
stop J), s1 = (
Initialize s), P1 = (P
+* pJ), IF = (
if<0 (a,k1,I,J)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 2));
set G = (
Goto ((
card J)
+ 1)), iG = ((i
';' I)
';' G);
set SAl = (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ));
A1: IF
= ((i
';' (I
';' G))
';' J) by
SCMPDS_4: 14
.= (i
';' ((I
';' G)
';' J)) by
SCMPDS_4: 14;
A2: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
>=
0 ;
then
A6: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 2))) by
A2,
A4,
SCMPDS_2: 57
.= (
0
+ ((
card I)
+ 2)) by
A5,
Th4;
for a holds (s1
. a)
= (s4
. a) by
A2,
SCMPDS_2: 57;
then
A7: (
DataPart s1)
= (
DataPart s4) by
SCMPDS_4: 8;
(
card iG)
= ((
card (i
';' I))
+ (
card G)) by
AFINSQ_1: 17
.= ((
card (i
';' I))
+ 1) by
COMPOS_1: 54
.= (((
card I)
+ 1)
+ 1) by
Th1
.= ((
card I)
+ (1
+ 1));
then
A8: (
Shift (pJ,((
card I)
+ 2)))
c= pIF by
Th5;
pIF
c= P3 by
FUNCT_4: 25;
then (
Shift (pJ,((
card I)
+ 2)))
c= P3 by
A8,
XBOOLE_1: 1;
then
A9: (
Shift (pJ,((
card I)
+ 2)))
c= P4;
assume
A10: J
is_closed_on (s,P);
then
A11: (
Start-At (
0 ,
SCMPDS ))
c= s1 & J
is_closed_on (s1,P1) by
FUNCT_4: 25;
A12: (
stop J)
c= P1 by
FUNCT_4: 25;
assume
A13: J
is_halting_on (s,P);
then
A14: P1
halts_on s1;
A15: (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P1,s1)))) by
EXTPRO_1: 4;
A16: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P1,s1)))))) by
A15
.= (
CurInstr (P1,(
Comput (P1,s1,(
LifeSpan (P1,s1)))))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A14,
EXTPRO_1:def 15;
then
A17: P3
halts_on s3 by
EXTPRO_1: 29;
A18: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume
A19: l
< ((
LifeSpan (P1,s1))
+ 1);
A20: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A20;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A18;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A21: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A22: n
< (
LifeSpan (P1,s1)) by
A19,
A21,
XREAL_1: 6;
assume
A23: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A24: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P1,(
Comput (P1,s1,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
halt
SCMPDS ) by
A21,
A23,
A24;
hence contradiction by
A14,
A22,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P1,s1))
+ 1)
<= l;
then
A25: (
LifeSpan (P3,s3))
= ((
LifeSpan (P1,s1))
+ 1) by
A16,
A17,
EXTPRO_1:def 15;
A26: (
DataPart (
Result (P1,s1)))
= (
DataPart (
Comput (P1,s1,(
LifeSpan (P1,s1))))) by
A14,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A11,
A9,
A6,
A7,
Th22,
A12
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A17,
A25,
EXTPRO_1: 23;
A27:
now
let x be
object;
A28: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A29: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A29,
SCMPDS_4: 6;
suppose
A30: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A31: not x
in (
dom SAl) by
A28,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P1,s1))
. x) by
A26,
A30,
SCMPDS_4: 8
.= ((
IExec (J,P,(
Initialize s)))
. x)
.= (((
IExec (J,P,(
Initialize s)))
+* SAl)
. x) by
A31,
FUNCT_4: 11;
end;
suppose
A32: x
= (
IC
SCMPDS );
A33: (
IC (
Result (P1,s1)))
= (
IC (
IExec (J,P,(
Initialize s))))
.= (
card J) by
A10,
A13,
Th25;
A34: x
in (
dom SAl) by
A28,
A32,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P1,s1))
+ 1)))
. x) by
A17,
A25,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P1,s1))))) by
A32,
EXTPRO_1: 4
.= ((
IC (
Comput (P1,s1,(
LifeSpan (P1,s1)))))
+ ((
card I)
+ 2)) by
A11,
A9,
A6,
A7,
Th22,
A12
.= ((
IC (
Result (P1,s1)))
+ ((
card I)
+ 2)) by
A14,
EXTPRO_1: 23
.= (
IC (
Start-At (((
card J)
+ ((
card I)
+ 2)),
SCMPDS ))) by
A33,
FUNCOP_1: 72
.= (((
IExec (J,P,(
Initialize s)))
+* SAl)
. x) by
A32,
A34,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (J,P,(
Initialize s)))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A27,
FUNCT_1: 2;
end;
registration
let I,J be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<0 (a,k1,I,J)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
>=0_goto ((
card I)
+ 2)), G = (
Goto ((
card J)
+ 1));
set IF = (
if<0 (a,k1,I,J)), pIF = (
stop IF);
reconsider IJ = ((I
';' G)
';' J) as
shiftable
Program of
SCMPDS ;
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
A4: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then IF
is_halting_on (s,P) by
A4,
Th89;
hence P
halts_on s by
A2,
A1;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then IF
is_halting_on (s,P) by
A3,
Th90;
hence P
halts_on s by
A2,
A1;
end;
end;
end
registration
let I,J be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<0 (a,k1,I,J)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:102
for s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if<0 (a,k1,I,J)),P,s)))
= (((
card I)
+ (
card J))
+ 2)
proof
let s be
0
-started
State of
SCMPDS , I,J be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if<0 (a,k1,I,J));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
A3: (
Initialize s)
= s by
MEMSTR_0: 44;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th91;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (J,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A2,
Th92,
A3;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:103
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 holds ((
IExec ((
if<0 (a,k1,I,J)),P,s))
. b)
= ((
IExec (I,P,s))
. b)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , J be
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if<0 (a,k1,I,J)),P,s))
= ((
IExec (I,P,s))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th91;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:104
for s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 holds ((
IExec ((
if<0 (a,k1,I,J)),P,(
Initialize s)))
. b)
= ((
IExec (J,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , J be
halt-free
parahalting
shiftable
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
set IF = (
if<0 (a,k1,I,J));
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
A2: not b
in (
dom (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
J
is_closed_on (s,P) & J
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec (IF,P,(
Initialize s)))
= ((
IExec (J,P,(
Initialize s)))
+* (
Start-At ((((
card I)
+ (
card J))
+ 2),
SCMPDS ))) by
A1,
Th92;
hence thesis by
A2,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:105
(
card (
if<0 (a,k1,I)))
= ((
card I)
+ 1) by
Th1;
theorem ::
SCMPDS_6:106
0
in (
dom (
if<0 (a,k1,I)))
proof
set ci = (
card (
if<0 (a,k1,I)));
ci
= ((
card I)
+ 1) by
Th1;
hence thesis by
AFINSQ_1: 66;
end;
theorem ::
SCMPDS_6:107
((
if<0 (a,k1,I))
.
0 )
= ((a,k1)
>=0_goto ((
card I)
+ 1)) by
Th2;
theorem ::
SCMPDS_6:108
Th99: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if<0 (a,k1,I))
is_closed_on (s,P) & (
if<0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 1));
A1: (
stop I)
c= P2 by
FUNCT_4: 25;
A2:
0
in (
dom pIF) by
COMPOS_1: 36;
A3: (
IC s3)
=
0 by
MEMSTR_0: 47;
A4: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A5: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A4,
FUNCT_4: 11;
A6: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
for a holds (s2
. a)
= (s4
. a) by
A6,
SCMPDS_2: 57;
then
A7: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
<
0 ;
then
A8: (
IC s4)
= ((
IC s3)
+ 1) by
A6,
A5,
SCMPDS_2: 57
.= (
0
+ 1) by
A3;
assume
A9: I
is_closed_on (s,P);
then
A10: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A11: P2
halts_on s2;
A12: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
A13: (
card pIF)
= ((
card IF)
+ 1) by
COMPOS_1: 55
.= (((
card I)
+ 1)
+ 1) by
Th1;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= ((
card pI)
+ 1) by
A13,
COMPOS_1: 55;
m
in (
dom pI) by
A9;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 1)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 1) by
A10,
A12,
A8,
A7,
Th22,
A1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A2,
A3,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A10,
A12,
A8,
A7,
Th22,
A1
.= (
halt
SCMPDS ) by
A11,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:109
Th100: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 holds (
if<0 (a,k1,I))
is_closed_on (s,P) & (
if<0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
>=
0 ;
set i = ((a,k1)
>=0_goto ((
card I)
+ 1));
set IF = (
if<0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A1,
A4,
SCMPDS_2: 57
.= (
0
+ ((
card I)
+ 1)) by
A2,
Th4;
A6: (
card IF)
= ((
card I)
+ 1) by
Th1;
then
A7: ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
A8: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
pIF
c= P3 by
FUNCT_4: 25;
then pIF
c= P4;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A7,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A6,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A8;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then (1
+
0 )
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A7,
A5,
A9,
EXTPRO_1: 5;
end;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A2,
COMPOS_1: 36;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A9,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:110
Th101: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A1: (
stop I)
c= P2 by
FUNCT_4: 25;
A2: (
IC s3)
=
0 by
MEMSTR_0: 47;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
assume (s
. b)
<
0 ;
then
A6: (
IC s4)
= ((
IC s3)
+ 1) by
A5,
A4,
SCMPDS_2: 57
.= (
0
+ 1) by
A2;
for a holds (s2
. a)
= (s4
. a) by
A5,
SCMPDS_2: 57;
then
A7: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume
A8: I
is_closed_on (s,P);
then
A9: I
is_closed_on (s2,P2);
A10: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,1))
c= P4 by
Lm6,
FUNCT_4: 25;
assume
A11: I
is_halting_on (s,P);
then
A12: P2
halts_on s2;
A13: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A14: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A13
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A9,
A10,
A6,
A7,
Th22,
A1
.= (
halt
SCMPDS ) by
A12,
EXTPRO_1:def 15;
then
A15: P3
halts_on s3 by
EXTPRO_1: 29;
A16: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
assume
A17: l
< ((
LifeSpan (P2,s2))
+ 1);
A18: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A18;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A16;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A19: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A20: n
< (
LifeSpan (P2,s2)) by
A17,
A19,
XREAL_1: 6;
assume
A21: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A22: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A9,
A10,
A6,
A7,
Th22,
A1
.= (
halt
SCMPDS ) by
A19,
A21,
A22;
hence contradiction by
A12,
A20,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A23: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A14,
A15,
EXTPRO_1:def 15;
A24: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A12,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A9,
A10,
A6,
A7,
Th22,
A1
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A15,
A23,
EXTPRO_1: 23;
A25:
now
let x be
object;
A26: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A27: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A27,
SCMPDS_4: 6;
suppose
A28: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A29: not x
in (
dom SAl) by
A26,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A24,
A28,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A29,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
A31: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A8,
A11,
Th25;
A32: x
in (
dom SAl) by
A26,
A30,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A15,
A23,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A30,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 1) by
A9,
A10,
A6,
A7,
Th22,
A1
.= ((
IC (
Result (P2,s2)))
+ 1) by
A12,
EXTPRO_1: 23
.= (
IC SAl) by
A31,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
A32,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A25,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:111
Th102: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 holds (
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if<0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 1),
SCMPDS ));
A1: (
IC s3)
=
0 by
MEMSTR_0: 47;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
Th3;
assume (s
. b)
>=
0 ;
then
A5: (
IC s4)
= (
ICplusConst (s3,((
card I)
+ 1))) by
A4,
A3,
SCMPDS_2: 57
.= (
0
+ ((
card I)
+ 1)) by
A1,
Th4;
pIF
c= P3 by
FUNCT_4: 25;
then
A6: pIF
c= P4;
A7: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A8: (
card IF)
= ((
card I)
+ 1) by
Th1;
then ((
card I)
+ 1)
in (
dom pIF) by
COMPOS_1: 64;
then (P4
. ((
card I)
+ 1))
= (pIF
. ((
card I)
+ 1)) by
A6,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A8,
COMPOS_1: 64;
then
A9: (
CurInstr (P3,s4))
= (
halt
SCMPDS ) by
A5,
A7;
then
A10: P3
halts_on s3 by
EXTPRO_1: 29;
A11: (
CurInstr (P3,s3))
= i by
Th3;
now
let l be
Nat;
A12: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
assume l
< 1;
then l
< (1
+
0 );
then l
=
0 by
NAT_1: 13;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A12;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A11;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 1
<= l;
then (
LifeSpan (P3,s3))
= 1 by
A9,
A10,
EXTPRO_1:def 15;
then
A13: s4
= (
Result (P3,s3)) by
A10,
EXTPRO_1: 23;
A14:
now
A15: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A16: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A16,
SCMPDS_4: 6;
suppose
A17: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A18: not x
in (
dom SAl) by
A15,
TARSKI:def 1;
A19: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A17,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s4
. x) by
A13
.= (s3
. x) by
A4,
A17,
SCMPDS_2: 57
.= (s
. x) by
A19,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A18,
FUNCT_4: 11;
end;
suppose
A20: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 1) by
A5,
A13
.= ((s
+* SAl)
. x) by
A20,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A14,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
>=0_goto ((
card I)
+ 1));
set IF = (
if<0 (a,k1,I)), pIF = (
stop IF);
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then IF
is_halting_on (s,P) by
A3,
Th99;
hence P
halts_on s by
A2,
A1;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then IF
is_halting_on (s,P) by
Th100;
hence P
halts_on s by
A2,
A1;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if<0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:112
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if<0 (a,k1,I)),P,(
Initialize s))))
= ((
card I)
+ 1)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if<0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then (
IExec (IF,P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th101;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then (
IExec (IF,P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th102;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:113
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 holds ((
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
A1,
Th101;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:114
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 holds ((
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then
A1: (
IExec ((
if<0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
Th102;
not b
in (
dom (
Start-At (((
card I)
+ 1),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
begin
theorem ::
SCMPDS_6:115
(
card (
if>=0 (a,k1,I)))
= ((
card I)
+ 2) by
Lm8;
theorem ::
SCMPDS_6:116
0
in (
dom (
if>=0 (a,k1,I))) & 1
in (
dom (
if>=0 (a,k1,I))) by
Lm9;
theorem ::
SCMPDS_6:117
((
if>=0 (a,k1,I))
.
0 )
= ((a,k1)
>=0_goto 2) & ((
if>=0 (a,k1,I))
. 1)
= (
goto ((
card I)
+ 1)) by
Lm10;
theorem ::
SCMPDS_6:118
Th109: for s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
if>=0 (a,k1,I))
is_closed_on (s,P) & (
if>=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>=0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto 2), j = (
goto ((
card I)
+ 1));
A1: (
stop I)
c= P2 by
FUNCT_4: 25;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
for a holds (s2
. a)
= (s4
. a) by
A3,
SCMPDS_2: 57;
then
A4: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
A5: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A6: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A5,
FUNCT_4: 11;
A7: (
IC s3)
=
0 by
MEMSTR_0: 47;
assume (s
. b)
>=
0 ;
then
A8: (
IC s4)
= (
ICplusConst (s3,2)) by
A3,
A6,
SCMPDS_2: 57
.= (
0
+ 2) by
A7,
Th4;
assume
A9: I
is_closed_on (s,P);
then
A10: I
is_closed_on (s2,P2);
assume I
is_halting_on (s,P);
then
A11: P2
halts_on s2;
A12: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
A13:
0
in (
dom pIF) by
COMPOS_1: 36;
now
let k be
Nat;
per cases ;
suppose
0
< k;
then
consider k1 be
Nat such that
A14: (k1
+ 1)
= k by
NAT_1: 6;
reconsider k1 as
Nat;
reconsider m = (
IC (
Comput (P2,s2,k1))) as
Nat;
A15: (
card pIF)
= (1
+ (
card IF)) by
COMPOS_1: 55
.= (1
+ ((
card I)
+ 2)) by
Lm8
.= ((1
+ (
card I))
+ 2)
.= ((
card pI)
+ 2) by
COMPOS_1: 55;
m
in (
dom pI) by
A9;
then m
< (
card pI) by
AFINSQ_1: 66;
then
A16: (m
+ 2)
< (
card pIF) by
A15,
XREAL_1: 6;
(
IC (
Comput (P3,s3,k)))
= (
IC (
Comput (P3,s4,k1))) by
A14,
EXTPRO_1: 4
.= (m
+ 2) by
A10,
A12,
A8,
A4,
Th22,
A1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A16,
AFINSQ_1: 66;
end;
suppose k
=
0 ;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A13,
A7,
EXTPRO_1: 2;
end;
end;
hence IF
is_closed_on (s,P);
A17: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
(
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A17
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A10,
A12,
A8,
A4,
Th22,
A1
.= (
halt
SCMPDS ) by
A11,
EXTPRO_1:def 15;
then P3
halts_on s3 by
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:119
Th110: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 holds (
if>=0 (a,k1,I))
is_closed_on (s,P) & (
if>=0 (a,k1,I))
is_halting_on (s,P)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
assume
A1: (s
. b)
<
0 ;
set i = ((a,k1)
>=0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if>=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
A2: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A3: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A4: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A3,
FUNCT_4: 11;
A5: (
IC s3)
=
0 by
MEMSTR_0: 47;
(
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A2,
Th3;
then
A6: (
IC s4)
= ((
IC s3)
+ 1) by
A1,
A4,
SCMPDS_2: 57
.= (
0
+ 1) by
A5;
A7: pIF
c= P3 by
FUNCT_4: 25;
then
A8: pIF
c= P4;
A9: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A10: (P4
. 1)
= (pIF
. 1) by
A8,
GRFUNC_1: 2
.= (IF
. 1) by
A9,
COMPOS_1: 63
.= j by
Lm10;
A11: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then
A12: ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
A13: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
(
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A6,
A10,
A13;
then
A14: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A6,
Th4
.= ((
card I)
+ (1
+ 1));
A15: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
pIF
c= P5 by
A7;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A12,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A11,
COMPOS_1: 64;
then
A16: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A14,
A15;
now
let k be
Nat;
A17: k
=
0 or (
0
+ 1)
<= k by
INT_1: 7;
per cases by
A17,
XXREAL_0: 1;
suppose k
=
0 ;
then (
Comput (P3,s3,k))
= s3 by
EXTPRO_1: 2;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A5,
COMPOS_1: 36;
end;
suppose k
= 1;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A9,
A6,
COMPOS_1: 62;
end;
suppose 1
< k;
then (1
+ 1)
<= k by
INT_1: 7;
hence (
IC (
Comput (P3,s3,k)))
in (
dom pIF) by
A12,
A14,
A16,
EXTPRO_1: 5;
end;
end;
hence IF
is_closed_on (s,P);
P3
halts_on s3 by
A16,
EXTPRO_1: 29;
hence thesis;
end;
theorem ::
SCMPDS_6:120
Th111: for s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 & I
is_closed_on (s,P) & I
is_halting_on (s,P) holds (
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>=0 (a,k1,I)), pIF = (
stop IF), pI = (
stop I), s2 = (
Initialize s), s3 = (
Initialize s), P2 = (P
+* pI), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), P4 = P3;
set i = ((a,k1)
>=0_goto 2), j = (
goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
A1: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A2: (
stop I)
c= P2 by
FUNCT_4: 25;
A3: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
A4: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A5: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A4,
FUNCT_4: 11;
A6: (
IC s3)
=
0 by
MEMSTR_0: 47;
A7: (
Start-At (
0 ,
SCMPDS ))
c= s2 & (
Shift (pI,2))
c= P4 by
Lm7,
FUNCT_4: 25;
for a holds (s2
. a)
= (s4
. a) by
A3,
SCMPDS_2: 57;
then
A8: (
DataPart s2)
= (
DataPart s4) by
SCMPDS_4: 8;
assume (s
. b)
>=
0 ;
then
A9: (
IC s4)
= (
ICplusConst (s3,2)) by
A3,
A5,
SCMPDS_2: 57
.= (
0
+ 2) by
A6,
Th4;
assume
A10: I
is_closed_on (s,P);
then
A11: I
is_closed_on (s2,P2);
assume
A12: I
is_halting_on (s,P);
then
A13: P2
halts_on s2;
A14: (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),(
LifeSpan (P2,s2)))) by
EXTPRO_1: 4;
A15: (
CurInstr (P3,(
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))))
= (
CurInstr (P3,(
Comput (P3,s4,(
LifeSpan (P2,s2)))))) by
A14
.= (
CurInstr (P2,(
Comput (P2,s2,(
LifeSpan (P2,s2)))))) by
A11,
A7,
A9,
A8,
Th22,
A2
.= (
halt
SCMPDS ) by
A13,
EXTPRO_1:def 15;
then
A16: P3
halts_on s3 by
EXTPRO_1: 29;
A17: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume
A18: l
< ((
LifeSpan (P2,s2))
+ 1);
A19: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
per cases ;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A19;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A17;
end;
suppose l
<>
0 ;
then
consider n be
Nat such that
A20: l
= (n
+ 1) by
NAT_1: 6;
reconsider n as
Nat;
A21: n
< (
LifeSpan (P2,s2)) by
A18,
A20,
XREAL_1: 6;
assume
A22: (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS );
A23: (
Comput (P3,s3,(n
+ 1)))
= (
Comput (P3,(
Comput (P3,s3,1)),n)) by
EXTPRO_1: 4;
(
CurInstr (P2,(
Comput (P2,s2,n))))
= (
CurInstr (P3,(
Comput (P3,s4,n)))) by
A11,
A7,
A9,
A8,
Th22,
A2
.= (
halt
SCMPDS ) by
A20,
A22,
A23;
hence contradiction by
A13,
A21,
EXTPRO_1:def 15;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds ((
LifeSpan (P2,s2))
+ 1)
<= l;
then
A24: (
LifeSpan (P3,s3))
= ((
LifeSpan (P2,s2))
+ 1) by
A15,
A16,
EXTPRO_1:def 15;
A25: (
DataPart (
Result (P2,s2)))
= (
DataPart (
Comput (P2,s2,(
LifeSpan (P2,s2))))) by
A13,
EXTPRO_1: 23
.= (
DataPart (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A11,
A7,
A9,
A8,
Th22,
A2
.= (
DataPart (
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))) by
EXTPRO_1: 4
.= (
DataPart (
Result (P3,s3))) by
A16,
A24,
EXTPRO_1: 23;
A26:
now
let x be
object;
A27: (
dom (
Start-At (((
card I)
+ 2),
SCMPDS )))
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
assume
A28: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A28,
SCMPDS_4: 6;
suppose
A29: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A30: not x
in (
dom SAl) by
A27,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Result (P2,s2))
. x) by
A25,
A29,
SCMPDS_4: 8
.= ((
IExec (I,P,(
Initialize s)))
. x)
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A30,
FUNCT_4: 11;
end;
suppose
A31: x
= (
IC
SCMPDS );
A32: (
IC (
Result (P2,s2)))
= (
IC (
IExec (I,P,(
Initialize s))))
.= (
card I) by
A10,
A12,
Th25;
A33: x
in (
dom SAl) by
A27,
A31,
TARSKI:def 1;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
Result (P3,s3))
. x)
.= ((
Comput (P3,s3,((
LifeSpan (P2,s2))
+ 1)))
. x) by
A16,
A24,
EXTPRO_1: 23
.= (
IC (
Comput (P3,s4,(
LifeSpan (P2,s2))))) by
A31,
EXTPRO_1: 4
.= ((
IC (
Comput (P2,s2,(
LifeSpan (P2,s2)))))
+ 2) by
A11,
A7,
A9,
A8,
Th22,
A2
.= ((
IC (
Result (P2,s2)))
+ 2) by
A13,
EXTPRO_1: 23
.= (
IC SAl) by
A32,
FUNCOP_1: 72
.= (((
IExec (I,P,(
Initialize s)))
+* SAl)
. x) by
A31,
A33,
FUNCT_4: 13;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))) by
PARTFUN1:def 2;
hence thesis by
A26,
FUNCT_1: 2;
end;
theorem ::
SCMPDS_6:121
Th112: for s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 holds (
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set b = (
DataLoc ((s
. a),k1));
set IF = (
if>=0 (a,k1,I)), pIF = (
stop IF), s3 = (
Initialize s), P3 = (P
+* pIF), s4 = (
Comput (P3,s3,1)), s5 = (
Comput (P3,s3,2)), P4 = P3, P5 = P3;
set i = ((a,k1)
>=0_goto 2), j = (
goto ((
card I)
+ 1));
set SAl = (
Start-At (((
card I)
+ 2),
SCMPDS ));
A1: IF
= (i
';' (j
';' I)) by
SCMPDS_4: 16;
A2: not b
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
not a
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
SCMPDS_4: 18;
then
A3: (s3
. (
DataLoc ((s3
. a),k1)))
= (s3
. b) by
FUNCT_4: 11
.= (s
. b) by
A2,
FUNCT_4: 11;
A4: (
IC s3)
=
0 by
MEMSTR_0: 47;
A5: pIF
c= P3 by
FUNCT_4: 25;
then
A6: pIF
c= P4;
A7: pIF
c= P5 by
A5;
A8: (
Comput (P3,s3,(
0
+ 1)))
= (
Following (P3,(
Comput (P3,s3,
0 )))) by
EXTPRO_1: 3
.= (
Following (P3,s3)) by
EXTPRO_1: 2
.= (
Exec (i,s3)) by
A1,
Th3;
assume (s
. b)
<
0 ;
then
A9: (
IC s4)
= ((
IC s3)
+ 1) by
A8,
A3,
SCMPDS_2: 57
.= (
0
+ 1) by
A4;
A10: 1
in (
dom IF) by
Lm9;
then 1
in (
dom pIF) by
COMPOS_1: 62;
then
A11: (P4
. 1)
= (pIF
. 1) by
A6,
GRFUNC_1: 2
.= (IF
. 1) by
A10,
COMPOS_1: 63
.= j by
Lm10;
A12: (P3
/. (
IC s4))
= (P3
. (
IC s4)) by
PBOOLE: 143;
A13: (
Comput (P3,s3,(1
+ 1)))
= (
Following (P3,s4)) by
EXTPRO_1: 3
.= (
Exec (j,s4)) by
A9,
A11,
A12;
then
A14: (
IC s5)
= (
ICplusConst (s4,((
card I)
+ 1))) by
SCMPDS_2: 54
.= (((
card I)
+ 1)
+ 1) by
A9,
Th4
.= ((
card I)
+ (1
+ 1));
A15: (P3
/. (
IC s5))
= (P3
. (
IC s5)) by
PBOOLE: 143;
A16: (
card IF)
= ((
card I)
+ 2) by
Lm8;
then ((
card I)
+ 2)
in (
dom pIF) by
COMPOS_1: 64;
then (P5
. ((
card I)
+ 2))
= (pIF
. ((
card I)
+ 2)) by
A7,
GRFUNC_1: 2
.= (
halt
SCMPDS ) by
A16,
COMPOS_1: 64;
then
A17: (
CurInstr (P3,s5))
= (
halt
SCMPDS ) by
A14,
A15;
then
A18: P3
halts_on s3 by
EXTPRO_1: 29;
A19: (
CurInstr (P3,s3))
= i by
A1,
Th3;
now
let l be
Nat;
assume l
< (1
+ 1);
then
A20: l
<= 1 by
NAT_1: 13;
A21: (
Comput (P3,s3,
0 ))
= s3 by
EXTPRO_1: 2;
A22: (P3
/. (
IC (
Comput (P3,s3,l))))
= (P3
. (
IC (
Comput (P3,s3,l)))) by
PBOOLE: 143;
per cases by
A20,
NAT_1: 25;
suppose l
=
0 ;
then (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
CurInstr (P3,s3)) by
A21;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A19;
end;
suppose l
= 1;
hence (
CurInstr (P3,(
Comput (P3,s3,l))))
<> (
halt
SCMPDS ) by
A9,
A11,
A22;
end;
end;
then for l be
Nat st (
CurInstr (P3,(
Comput (P3,s3,l))))
= (
halt
SCMPDS ) holds 2
<= l;
then (
LifeSpan (P3,s3))
= 2 by
A17,
A18,
EXTPRO_1:def 15;
then
A23: s5
= (
Result (P3,s3)) by
A18,
EXTPRO_1: 23;
A24:
now
A25: (
dom SAl)
=
{(
IC
SCMPDS )} by
FUNCOP_1: 13;
let x be
object;
assume
A26: x
in (
dom (
IExec (IF,P,(
Initialize s))));
per cases by
A26,
SCMPDS_4: 6;
suppose
A27: x is
Int_position;
then x
<> (
IC
SCMPDS ) by
SCMPDS_2: 43;
then
A28: not x
in (
dom SAl) by
A25,
TARSKI:def 1;
A29: not x
in (
dom (
Start-At (
0 ,
SCMPDS ))) by
A27,
SCMPDS_4: 18;
thus ((
IExec (IF,P,(
Initialize s)))
. x)
= (s5
. x) by
A23
.= (s4
. x) by
A13,
A27,
SCMPDS_2: 54
.= (s3
. x) by
A8,
A27,
SCMPDS_2: 57
.= (s
. x) by
A29,
FUNCT_4: 11
.= ((s
+* SAl)
. x) by
A28,
FUNCT_4: 11;
end;
suppose
A30: x
= (
IC
SCMPDS );
hence ((
IExec (IF,P,(
Initialize s)))
. x)
= ((
card I)
+ 2) by
A14,
A23
.= ((s
+* (
Start-At (((
card I)
+ 2),
SCMPDS )))
. x) by
A30,
FUNCT_4: 113;
end;
end;
(
dom (
IExec (IF,P,(
Initialize s))))
= the
carrier of
SCMPDS by
PARTFUN1:def 2
.= (
dom (s
+* SAl)) by
PARTFUN1:def 2;
hence thesis by
A24,
FUNCT_1: 2;
end;
registration
let I be
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>=0 (a,k1,I)) ->
shiftable
parahalting;
correctness
proof
set i = ((a,k1)
>=0_goto 2), j = (
goto ((
card I)
+ 1));
set IF = (
if>=0 (a,k1,I)), pIF = (
stop IF);
thus IF is
shiftable;
let s be
0
-started
State of
SCMPDS ;
let P be
Instruction-Sequence of
SCMPDS ;
A1: (
Initialize s)
= s by
MEMSTR_0: 44;
assume pIF
c= P;
then
A2: P
= (P
+* (
stop IF)) by
FUNCT_4: 98;
A3: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then IF
is_halting_on (s,P) by
A3,
Th109;
hence P
halts_on s by
A2,
A1;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then IF
is_halting_on (s,P) by
Th110;
hence P
halts_on s by
A2,
A1;
end;
end;
end
registration
let I be
halt-free
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
cluster (
if>=0 (a,k1,I)) ->
halt-free;
coherence ;
end
theorem ::
SCMPDS_6:122
for s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer holds (
IC (
IExec ((
if>=0 (a,k1,I)),P,s)))
= ((
card I)
+ 2)
proof
let s be
0
-started
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a be
Int_position, k1 be
Integer;
set IF = (
if>=0 (a,k1,I));
A1: I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
A2: (
Initialize s)
= s by
MEMSTR_0: 44;
per cases ;
suppose (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
then (
IExec (IF,P,s))
= ((
IExec (I,P,s))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th111,
A2;
hence thesis by
FUNCT_4: 113;
end;
suppose (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then (
IExec (IF,P,s))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th112,
A2;
hence thesis by
FUNCT_4: 113;
end;
end;
theorem ::
SCMPDS_6:123
for s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
>=
0 holds ((
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
. b)
= ((
IExec (I,P,(
Initialize s)))
. b)
proof
let s be
State of
SCMPDS , I be
halt-free
shiftable
parahalting
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume
A1: (s
. (
DataLoc ((s
. a),k1)))
>=
0 ;
A2: not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
I
is_closed_on (s,P) & I
is_halting_on (s,P) by
Th11,
Th12;
then (
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
= ((
IExec (I,P,(
Initialize s)))
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
A1,
Th111;
hence thesis by
A2,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:124
for s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer st (s
. (
DataLoc ((s
. a),k1)))
<
0 holds ((
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
. b)
= (s
. b)
proof
let s be
State of
SCMPDS , I be
Program of
SCMPDS , a,b be
Int_position, k1 be
Integer;
assume (s
. (
DataLoc ((s
. a),k1)))
<
0 ;
then
A1: (
IExec ((
if>=0 (a,k1,I)),P,(
Initialize s)))
= (s
+* (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
Th112;
not b
in (
dom (
Start-At (((
card I)
+ 2),
SCMPDS ))) by
SCMPDS_4: 18;
hence thesis by
A1,
FUNCT_4: 11;
end;
theorem ::
SCMPDS_6:125
for s be
State of
SCMPDS , I be
Program of
SCMPDS holds I
is_closed_on (s,P) iff I
is_closed_on ((
Initialize s),P);
theorem ::
SCMPDS_6:126
for s be
State of
SCMPDS , I be
Program of
SCMPDS holds I
is_halting_on (s,P) iff I
is_halting_on ((
Initialize s),P);