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