let s be State of ; for I being Program of st I is_closed_on Initialize s & I is_halting_on Initialize s holds
for k being Element of NAT st k <= LifeSpan (s +* (Initialized I)) holds
( Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),k) <> halt SCM+FSA )
let I be Program of ; ( I is_closed_on Initialize s & I is_halting_on Initialize s implies for k being Element of NAT st k <= LifeSpan (s +* (Initialized I)) holds
( Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),k) <> halt SCM+FSA ) )
set s1 = s +* (Initialized I);
set s2 = s +* (Initialized (Directed I));
defpred S1[ Element of NAT ] means ( $1 <= LifeSpan (s +* (Initialized I)) implies ( Computation (s +* (Initialized I)),$1, Computation (s +* (Initialized (Directed I))),$1 equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),$1) <> halt SCM+FSA ) );
A1:
s +* (Initialized I) = (Initialize s) +* (I +* (Start-At (insloc 0 )))
by Th13;
assume A2:
I is_closed_on Initialize s
; ( not I is_halting_on Initialize s or for k being Element of NAT st k <= LifeSpan (s +* (Initialized I)) holds
( Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),k) <> halt SCM+FSA ) )
A3:
now let k be
Element of
NAT ;
( Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT implies not CurInstr (Computation (s +* (Initialized (Directed I))),k) = halt SCM+FSA )
(
Directed I c= Initialized (Directed I) &
Initialized (Directed I) c= s +* (Initialized (Directed I)) )
by FUNCT_4:26, SCMFSA6A:26;
then
Directed I c= s +* (Initialized (Directed I))
by XBOOLE_1:1;
then A4:
Directed I c= Computation (s +* (Initialized (Directed I))),
k
by AMI_1:81;
dom (Directed I) = dom I
by FUNCT_4:105;
then A5:
IC (Computation (s +* (Initialized I)),k) in dom (Directed I)
by A2, A1, SCMFSA7B:def 7;
assume
Computation (s +* (Initialized I)),
k,
Computation (s +* (Initialized (Directed I))),
k equal_outside NAT
;
not CurInstr (Computation (s +* (Initialized (Directed I))),k) = halt SCM+FSA then CurInstr (Computation (s +* (Initialized (Directed I))),k) =
(Computation (s +* (Initialized (Directed I))),k) . (IC (Computation (s +* (Initialized I)),k))
by AMI_1:121
.=
(Directed I) . (IC (Computation (s +* (Initialized I)),k))
by A4, A5, GRFUNC_1:8
;
then A6:
CurInstr (Computation (s +* (Initialized (Directed I))),k) in rng (Directed I)
by A5, FUNCT_1:def 5;
assume
CurInstr (Computation (s +* (Initialized (Directed I))),k) = halt SCM+FSA
;
contradictionhence
contradiction
by A6, SCMFSA6A:18;
verum end;
assume A7:
I is_halting_on Initialize s
; for k being Element of NAT st k <= LifeSpan (s +* (Initialized I)) holds
( Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),k) <> halt SCM+FSA )
now A8:
ProgramPart (s +* (Initialized I)) halts_on s +* (Initialized I)
by A7, A1, SCMFSA7B:def 8;
A9:
dom I c= dom (Directed I)
by FUNCT_4:105;
let k be
Element of
NAT ;
( ( k <= LifeSpan (s +* (Initialized I)) implies Computation (s +* (Initialized I)),k, Computation (s +* (Initialized (Directed I))),k equal_outside NAT ) & k + 1 <= LifeSpan (s +* (Initialized I)) implies ( Computation (s +* (Initialized I)),(k + 1), Computation (s +* (Initialized (Directed I))),(k + 1) equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),(k + 1)) <> halt SCM+FSA ) )assume A10:
(
k <= LifeSpan (s +* (Initialized I)) implies
Computation (s +* (Initialized I)),
k,
Computation (s +* (Initialized (Directed I))),
k equal_outside NAT )
;
( k + 1 <= LifeSpan (s +* (Initialized I)) implies ( Computation (s +* (Initialized I)),(k + 1), Computation (s +* (Initialized (Directed I))),(k + 1) equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),(k + 1)) <> halt SCM+FSA ) )A11:
Computation (s +* (Initialized (Directed I))),
(k + 1) =
Following (Computation (s +* (Initialized (Directed I))),k)
by AMI_1:14
.=
Exec (CurInstr (Computation (s +* (Initialized (Directed I))),k)),
(Computation (s +* (Initialized (Directed I))),k)
;
A12:
IC (Computation (s +* (Initialized I)),k) in dom I
by A2, A1, SCMFSA7B:def 7;
(
I c= Initialized I &
Initialized I c= s +* (Initialized I) )
by FUNCT_4:26, SCMFSA6A:26;
then
I c= s +* (Initialized I)
by XBOOLE_1:1;
then
I c= Computation (s +* (Initialized I)),
k
by AMI_1:81;
then A13:
CurInstr (Computation (s +* (Initialized I)),k) = I . (IC (Computation (s +* (Initialized I)),k))
by A12, GRFUNC_1:8;
(
Directed I c= Initialized (Directed I) &
Initialized (Directed I) c= s +* (Initialized (Directed I)) )
by FUNCT_4:26, SCMFSA6A:26;
then
Directed I c= s +* (Initialized (Directed I))
by XBOOLE_1:1;
then A14:
Directed I c= Computation (s +* (Initialized (Directed I))),
k
by AMI_1:81;
A15:
k + 0 < k + 1
by XREAL_1:8;
assume A16:
k + 1
<= LifeSpan (s +* (Initialized I))
;
( Computation (s +* (Initialized I)),(k + 1), Computation (s +* (Initialized (Directed I))),(k + 1) equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),(k + 1)) <> halt SCM+FSA )then
k < LifeSpan (s +* (Initialized I))
by A15, XXREAL_0:2;
then
I . (IC (Computation (s +* (Initialized I)),k)) <> halt SCM+FSA
by A13, A8, AMI_1:def 46;
then A17:
CurInstr (Computation (s +* (Initialized I)),k) =
(Directed I) . (IC (Computation (s +* (Initialized I)),k))
by A13, FUNCT_4:111
.=
(Computation (s +* (Initialized (Directed I))),k) . (IC (Computation (s +* (Initialized I)),k))
by A14, A12, A9, GRFUNC_1:8
.=
CurInstr (Computation (s +* (Initialized (Directed I))),k)
by A10, A16, A15, AMI_1:121, XXREAL_0:2
;
A18:
Computation (s +* (Initialized I)),
(k + 1) =
Following (Computation (s +* (Initialized I)),k)
by AMI_1:14
.=
Exec (CurInstr (Computation (s +* (Initialized I)),k)),
(Computation (s +* (Initialized I)),k)
;
hence
Computation (s +* (Initialized I)),
(k + 1),
Computation (s +* (Initialized (Directed I))),
(k + 1) equal_outside NAT
by A10, A16, A15, A17, A11, SCMFSA6A:32, XXREAL_0:2;
CurInstr (Computation (s +* (Initialized (Directed I))),(k + 1)) <> halt SCM+FSA thus
CurInstr (Computation (s +* (Initialized (Directed I))),(k + 1)) <> halt SCM+FSA
by A3, A10, A16, A15, A17, A18, A11, SCMFSA6A:32, XXREAL_0:2;
verum end;
then A19:
for k being Element of NAT st S1[k] holds
S1[k + 1]
;
now assume
0 <= LifeSpan (s +* (Initialized I))
;
( Computation (s +* (Initialized I)),0 , Computation (s +* (Initialized (Directed I))),0 equal_outside NAT & CurInstr (Computation (s +* (Initialized (Directed I))),0 ) <> halt SCM+FSA )A20:
(
Computation (s +* (Initialized I)),
0 = s +* (Initialized I) &
Computation (s +* (Initialized (Directed I))),
0 = s +* (Initialized (Directed I)) )
by AMI_1:13;
hence
Computation (s +* (Initialized I)),
0 ,
Computation (s +* (Initialized (Directed I))),
0 equal_outside NAT
by SCMFSA6A:53;
CurInstr (Computation (s +* (Initialized (Directed I))),0 ) <> halt SCM+FSA thus
CurInstr (Computation (s +* (Initialized (Directed I))),0 ) <> halt SCM+FSA
by A3, A20, SCMFSA6A:53;
verum end;
then A21:
S1[ 0 ]
;
thus
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A21, A19); verum